← Back to Skills Marketplace
bowen-dotcom

LLM Router Gateway

by bowen-dotcom · GitHub ↗ · v1.0.0
cross-platform ✓ Security Clean
933
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install aisa-llm-router-skill
Description
Unified LLM Gateway - One API for 70+ AI models. Route to GPT, Claude, Gemini, Qwen, Deepseek, Grok and more with a single API key.
README (SKILL.md)

OpenClaw LLM Router 🧠

Unified LLM Gateway for autonomous agents. Powered by AIsa.

One API key. 70+ models. OpenAI-compatible.

Replace 100+ API keys with one. Access GPT-4, Claude-3, Gemini, Qwen, Deepseek, Grok, and more through a unified, OpenAI-compatible API.

🔥 What Can You Do?

Multi-Model Chat

"Chat with GPT-4 for reasoning, switch to Claude for creative writing"

Model Comparison

"Compare responses from GPT-4, Claude, and Gemini for the same question"

Vision Analysis

"Analyze this image with GPT-4o - what objects are in it?"

Cost Optimization

"Route simple queries to fast/cheap models, complex queries to GPT-4"

Fallback Strategy

"If GPT-4 fails, automatically try Claude, then Gemini"

Why LLM Router?

Feature LLM Router Direct APIs
API Keys 1 10+
SDK Compatibility OpenAI SDK Multiple SDKs
Billing Unified Per-provider
Model Switching Change string Code rewrite
Fallback Routing Built-in DIY
Cost Tracking Unified Fragmented

Supported Model Families

Family Developer Example Models
GPT OpenAI gpt-4.1, gpt-4o, gpt-4o-mini, o1, o1-mini, o3-mini
Claude Anthropic claude-3-5-sonnet, claude-3-opus, claude-3-sonnet
Gemini Google gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash
Qwen Alibaba qwen-max, qwen-plus, qwen2.5-72b-instruct
Deepseek Deepseek deepseek-chat, deepseek-coder, deepseek-v3, deepseek-r1
Grok xAI grok-2, grok-beta

Note: Model availability may vary. Check marketplace.aisa.one/pricing for the full list of currently available models and pricing.

Quick Start

export AISA_API_KEY="your-key"

API Endpoints

OpenAI-Compatible Chat Completions

POST https://api.aisa.one/v1/chat/completions

Request

curl -X POST "https://api.aisa.one/v1/chat/completions" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Explain quantum computing in simple terms."}
    ],
    "temperature": 0.7,
    "max_tokens": 1000
  }'

Parameters

Parameter Type Required Description
model string Yes Model identifier (e.g., gpt-4.1, claude-3-sonnet)
messages array Yes Conversation messages
temperature number No Randomness (0-2, default: 1)
max_tokens integer No Maximum response tokens
stream boolean No Enable streaming (default: false)
top_p number No Nucleus sampling (0-1)
frequency_penalty number No Frequency penalty (-2 to 2)
presence_penalty number No Presence penalty (-2 to 2)
stop string/array No Stop sequences

Message Format

{
  "role": "user|assistant|system",
  "content": "message text or array for multimodal"
}

Response

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "gpt-4.1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Quantum computing uses..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 50,
    "completion_tokens": 200,
    "total_tokens": 250,
    "cost": 0.0025
  }
}

Streaming Response

curl -X POST "https://api.aisa.one/v1/chat/completions" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-sonnet",
    "messages": [{"role": "user", "content": "Write a poem about AI."}],
    "stream": true
  }'

Streaming returns Server-Sent Events (SSE):

data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":"In"}}]}
data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":" circuits"}}]}
...
data: [DONE]

Vision / Image Analysis

Analyze images by passing image URLs or base64 data:

curl -X POST "https://api.aisa.one/v1/chat/completions" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "What is in this image?"},
          {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
        ]
      }
    ]
  }'

Function Calling

Enable tools/functions for structured outputs:

curl -X POST "https://api.aisa.one/v1/chat/completions" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1",
    "messages": [{"role": "user", "content": "What is the weather in Tokyo?"}],
    "functions": [
      {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City name"},
            "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
          },
          "required": ["location"]
        }
      }
    ],
    "function_call": "auto"
  }'

Google Gemini Format

For Gemini models, you can also use the native format:

POST https://api.aisa.one/v1/models/{model}:generateContent
curl -X POST "https://api.aisa.one/v1/models/gemini-2.0-flash:generateContent" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Explain machine learning."}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 1000
    }
  }'

Python Client

Installation

No installation required - uses standard library only.

CLI Usage

# Basic completion
python3 {baseDir}/scripts/llm_router_client.py chat --model gpt-4.1 --message "Hello, world!"

# With system prompt
python3 {baseDir}/scripts/llm_router_client.py chat --model claude-3-sonnet --system "You are a poet" --message "Write about the moon"

# Streaming
python3 {baseDir}/scripts/llm_router_client.py chat --model gpt-4o --message "Tell me a story" --stream

# Multi-turn conversation
python3 {baseDir}/scripts/llm_router_client.py chat --model qwen-max --messages '[{"role":"user","content":"Hi"},{"role":"assistant","content":"Hello!"},{"role":"user","content":"How are you?"}]'

# Vision analysis
python3 {baseDir}/scripts/llm_router_client.py vision --model gpt-4o --image "https://example.com/image.jpg" --prompt "Describe this image"

# List supported models
python3 {baseDir}/scripts/llm_router_client.py models

# Compare models
python3 {baseDir}/scripts/llm_router_client.py compare --models "gpt-4.1,claude-3-sonnet,gemini-2.0-flash" --message "What is 2+2?"

Python SDK Usage

from llm_router_client import LLMRouterClient

client = LLMRouterClient()  # Uses AISA_API_KEY env var

# Simple chat
response = client.chat(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response["choices"][0]["message"]["content"])

# With options
response = client.chat(
    model="claude-3-sonnet",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain relativity."}
    ],
    temperature=0.7,
    max_tokens=500
)

# Streaming
for chunk in client.chat_stream(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a story."}]
):
    print(chunk, end="", flush=True)

# Vision
response = client.vision(
    model="gpt-4o",
    image_url="https://example.com/image.jpg",
    prompt="What's in this image?"
)

# Compare models
results = client.compare_models(
    models=["gpt-4.1", "claude-3-sonnet", "gemini-2.0-flash"],
    message="Explain quantum computing"
)
for model, result in results.items():
    print(f"{model}: {result['response'][:100]}...")

Use Cases

1. Cost-Optimized Routing

Use cheaper models for simple tasks:

def smart_route(message: str) -> str:
    # Simple queries -> fast/cheap model
    if len(message) \x3C 50:
        model = "gpt-3.5-turbo"
    # Complex reasoning -> powerful model
    else:
        model = "gpt-4.1"
    
    return client.chat(model=model, messages=[{"role": "user", "content": message}])

2. Fallback Strategy

Automatic fallback on failure:

def chat_with_fallback(message: str) -> str:
    models = ["gpt-4.1", "claude-3-sonnet", "gemini-2.0-flash"]
    
    for model in models:
        try:
            return client.chat(model=model, messages=[{"role": "user", "content": message}])
        except Exception:
            continue
    
    raise Exception("All models failed")

3. Model A/B Testing

Compare model outputs:

results = client.compare_models(
    models=["gpt-4.1", "claude-3-opus"],
    message="Analyze this quarterly report..."
)

# Log for analysis
for model, result in results.items():
    log_response(model=model, latency=result["latency"], cost=result["cost"])

4. Specialized Model Selection

Choose the best model for each task:

MODEL_MAP = {
    "code": "deepseek-coder",
    "creative": "claude-3-opus",
    "fast": "gpt-3.5-turbo",
    "vision": "gpt-4o",
    "chinese": "qwen-max",
    "reasoning": "gpt-4.1"
}

def route_by_task(task_type: str, message: str) -> str:
    model = MODEL_MAP.get(task_type, "gpt-4.1")
    return client.chat(model=model, messages=[{"role": "user", "content": message}])

Error Handling

Errors return JSON with error field:

{
  "error": {
    "code": "model_not_found",
    "message": "Model 'xyz' is not available"
  }
}

Common error codes:

  • 401 - Invalid or missing API key
  • 402 - Insufficient credits
  • 404 - Model not found
  • 429 - Rate limit exceeded
  • 500 - Server error

Best Practices

  1. Use streaming for long responses to improve UX
  2. Set max_tokens to control costs
  3. Implement fallback for production reliability
  4. Cache responses for repeated queries
  5. Monitor usage via response metadata
  6. Use appropriate models - don't use GPT-4 for simple tasks

OpenAI SDK Compatibility

Just change the base URL and key:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AISA_API_KEY"],
    base_url="https://api.aisa.one/v1"
)

response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

Pricing

Token-based pricing varies by model. Check marketplace.aisa.one/pricing for current rates.

Model Family Approximate Cost
GPT-4.1 / GPT-4o ~$0.01 / 1K tokens
Claude-3-Sonnet ~$0.01 / 1K tokens
Gemini-2.0-Flash ~$0.001 / 1K tokens
Qwen-Max ~$0.005 / 1K tokens
DeepSeek-V3 ~$0.002 / 1K tokens

Every response includes usage.cost and usage.credits_remaining.

Get Started

  1. Sign up at aisa.one
  2. Get your API key from the dashboard
  3. Add credits (pay-as-you-go)
  4. Set environment variable: export AISA_API_KEY="your-key"

Full API Reference

See API Reference for complete endpoint documentation.

Usage Guidance
This skill is internally consistent, but consider the real-world risks of centralizing many provider accesses behind one API key: the AISA_API_KEY grants the gateway operator visibility into all queries and can be used for billing or data retention. Before installing, verify the AIsa service (https://api.aisa.one / marketplace.aisa.one) and its privacy/billing terms, restrict the key's scope if possible, avoid sending sensitive data during testing, rotate keys regularly, and monitor usage/billing. If you need higher assurance, run the included Python client in an isolated environment and observe network traffic to confirm it only contacts the documented endpoints.
Capability Analysis
Type: OpenClaw Skill Name: aisa-llm-router-skill Version: 1.0.0 The skill bundle provides a Python client for an LLM routing service, `api.aisa.one`. The `SKILL.md` and `README.md` files contain clear documentation and usage examples, including `curl` commands and Python script usage, all directed at the stated `aisa.one` endpoint. The `scripts/llm_router_client.py` script correctly handles the `AISA_API_KEY` environment variable and makes HTTP requests exclusively to `https://api.aisa.one/v1` using standard Python libraries. There is no evidence of data exfiltration beyond the necessary API key to the intended service, no malicious execution patterns, no persistence mechanisms, and no prompt injection attempts against the OpenClaw agent. All behaviors are aligned with the stated purpose of providing a unified LLM gateway client.
Capability Assessment
Purpose & Capability
Name/description (LLM Router) match the requested artifacts: required binaries (curl, python3), a single AISA_API_KEY, and a client that sends requests to https://api.aisa.one. All requested resources are appropriate for proxying requests to multiple LLM providers.
Instruction Scope
SKILL.md and README instruct exporting AISA_API_KEY and calling the AIsa API endpoints (via curl or the provided Python client). The instructions do not ask the agent to read unrelated files, other environment variables, or system config, nor to send data to unexpected endpoints.
Install Mechanism
No install spec or remote downloads are present (instruction-only install). A single local Python script is included; it uses standard libraries. There are no extracted archives or external install URLs to evaluate.
Credentials
Only AISA_API_KEY is required and serves as the API credential for the documented endpoints. No unrelated secrets or multiple credentials are requested.
Persistence & Privilege
always is false (default). The skill does not request persistent system-wide changes or access to other skills' configs. Autonomous invocation is allowed but is the platform default and not a unique privilege here.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install aisa-llm-router-skill
  3. After installation, invoke the skill by name or use /aisa-llm-router-skill
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Unified LLM Gateway: One API for 70+ AI models. Route requests to GPT, Claude, Gemini, Grok with streaming, vision analysis, and function calling. OpenAI-compatible interface simplifies multi-model management.
Metadata
Slug aisa-llm-router-skill
Version 1.0.0
License
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is LLM Router Gateway?

Unified LLM Gateway - One API for 70+ AI models. Route to GPT, Claude, Gemini, Qwen, Deepseek, Grok and more with a single API key. It is an AI Agent Skill for Claude Code / OpenClaw, with 933 downloads so far.

How do I install LLM Router Gateway?

Run "/install aisa-llm-router-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is LLM Router Gateway free?

Yes, LLM Router Gateway is completely free (open-source). You can download, install and use it at no cost.

Which platforms does LLM Router Gateway support?

LLM Router Gateway is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created LLM Router Gateway?

It is built and maintained by bowen-dotcom (@bowen-dotcom); the current version is v1.0.0.

💬 Comments