openrouter-skill

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
<objective> Enable intelligent routing to Chinese/open-source LLMs through OpenRouter's unified API. Provides model selection guidance, cost optimization, and production patterns for LangChain/LangGraph integration. </objective>
<quick_start>
<objective> 通过OpenRouter的统一API实现对中文/开源大模型的智能路由。为LangChain/LangGraph集成提供模型选择指导、成本优化方案及生产级实践模式。 </objective>
<quick_start>

1. Basic LangChain Setup

1. 基础LangChain配置

python
from langchain_openai import ChatOpenAI
import os
python
from langchain_openai import ChatOpenAI
import os

Any OpenRouter model works with ChatOpenAI

Any OpenRouter model works with ChatOpenAI

llm = ChatOpenAI( model="deepseek/deepseek-chat", openai_api_key=os.getenv("OPENROUTER_API_KEY"), openai_api_base="https://openrouter.ai/api/v1", default_headers={ "HTTP-Referer": "https://your-app.com", # Optional but recommended "X-Title": "Your App Name" } )
response = llm.invoke("Explain quantum computing in simple terms")
undefined
llm = ChatOpenAI( model="deepseek/deepseek-chat", openai_api_key=os.getenv("OPENROUTER_API_KEY"), openai_api_base="https://openrouter.ai/api/v1", default_headers={ "HTTP-Referer": "https://your-app.com", # Optional but recommended "X-Title": "Your App Name" } )
response = llm.invoke("Explain quantum computing in simple terms")
undefined

2. Vision Analysis (Charts, Documents)

2. 视觉分析(图表、文档)

python
from langchain_core.messages import HumanMessage
import base64

llm = ChatOpenAI(
    model="qwen/qwen-2-vl-72b-instruct",
    openai_api_key=os.getenv("OPENROUTER_API_KEY"),
    openai_api_base="https://openrouter.ai/api/v1"
)
python
from langchain_core.messages import HumanMessage
import base64

llm = ChatOpenAI(
    model="qwen/qwen-2-vl-72b-instruct",
    openai_api_key=os.getenv("OPENROUTER_API_KEY"),
    openai_api_base="https://openrouter.ai/api/v1"
)

From URL

From URL

response = llm.invoke([ HumanMessage(content=[ {"type": "text", "text": "Analyze this chart and identify key trends"}, {"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}} ]) ])
response = llm.invoke([ HumanMessage(content=[ {"type": "text", "text": "Analyze this chart and identify key trends"}, {"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}} ]) ])

From base64

From base64

with open("chart.png", "rb") as f: image_data = base64.b64encode(f.read()).decode()
response = llm.invoke([ HumanMessage(content=[ {"type": "text", "text": "What does this chart show?"}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_data}"}} ]) ])
undefined
with open("chart.png", "rb") as f: image_data = base64.b64encode(f.read()).decode()
response = llm.invoke([ HumanMessage(content=[ {"type": "text", "text": "What does this chart show?"}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_data}"}} ]) ])
undefined

3. Auto-Routing (Let OpenRouter Choose)

3. 自动路由(由OpenRouter选择)

python
undefined
python
undefined

OpenRouter's Auto model selects the best model for your prompt

OpenRouter's Auto model selects the best model for your prompt

llm = ChatOpenAI( model="openrouter/auto", # Powered by NotDiamond openai_api_key=os.getenv("OPENROUTER_API_KEY"), openai_api_base="https://openrouter.ai/api/v1" )

</quick_start>

<success_criteria>
- OpenRouter API key configured and authenticated
- Model selection follows the decision tree (vision -> Qwen-VL, code -> DeepSeek Coder, etc.)
- LangChain ChatOpenAI integration working with correct base URL and headers
- Cost savings of 60-97% vs Western model equivalents for comparable quality
- Fallback chain configured for production reliability
</success_criteria>

<core_concepts>
llm = ChatOpenAI( model="openrouter/auto", # Powered by NotDiamond openai_api_key=os.getenv("OPENROUTER_API_KEY"), openai_api_base="https://openrouter.ai/api/v1" )

</quick_start>

<success_criteria>
- OpenRouter API密钥已配置并验证
- 模型选择遵循决策树(视觉/图表任务→qwen/qwen-2-vl-72b-instruct,代码生成→deepseek/deepseek-coder等)
- LangChain ChatOpenAI与正确的基础URL及请求头集成正常
- 与同质量的西方大模型相比,成本降低60-97%
- 已配置降级链以保障生产环境可靠性
</success_criteria>

<core_concepts>

Model Selection Decision Tree

模型选择决策树

Task Type
├─ Vision/Charts ──────────> qwen/qwen-2-vl-72b-instruct ($0.40/M)
├─ Code Generation ────────> deepseek/deepseek-coder ($0.14/$0.28)
├─ Deep Reasoning ─────────> qwen/qwq-32b ($0.15/$0.40)
├─ Long Documents ─────────> moonshot/moonshot-v1-128k ($0.55/M)
├─ Fast/Cheap Tasks ───────> qwen/qwen-2.5-7b-instruct ($0.09/M)
├─ General Analysis ───────> deepseek/deepseek-chat ($0.27/$1.10)
└─ Unknown/Auto ───────────> openrouter/auto
任务类型
├─ 视觉/图表 ──────────> qwen/qwen-2-vl-72b-instruct ($0.40/M)
├─ 代码生成 ────────> deepseek/deepseek-coder ($0.14/$0.28)
├─ 深度推理 ─────────> qwen/qwq-32b ($0.15/$0.40)
├─ 长文档处理 ─────────> moonshot/moonshot-v1-128k ($0.55/M)
├─ 快速/低成本任务 ───────> qwen/qwen-2.5-7b-instruct ($0.09/M)
├─ 通用分析 ───────> deepseek/deepseek-chat ($0.27/$1.10)
└─ 未知/自动选择 ───────────> openrouter/auto

Top Chinese LLMs

主流中文大模型

ModelBest ForCost ($/1M tokens)
deepseek/deepseek-chat
General reasoning, analysis$0.27 in / $1.10 out
deepseek/deepseek-coder
Code generation$0.14 / $0.28
qwen/qwen-2-vl-72b-instruct
Vision, charts$0.40 / $0.40
qwen/qwen-2.5-7b-instruct
Fast, cheap tasks$0.09 / $0.09
qwen/qwq-32b
Deep reasoning$0.15 / $0.40
moonshot/moonshot-v1-128k
Long context (128K)$0.55 / $0.55
模型适用场景成本(美元/百万token)
deepseek/deepseek-chat
通用推理、分析$0.27 输入 / $1.10 输出
deepseek/deepseek-coder
代码生成$0.14 / $0.28
qwen/qwen-2-vl-72b-instruct
视觉、图表处理$0.40 / $0.40
qwen/qwen-2.5-7b-instruct
快速、低成本任务$0.09 / $0.09
qwen/qwq-32b
深度推理$0.15 / $0.40
moonshot/moonshot-v1-128k
长上下文处理(128K)$0.55 / $0.55

Cost Comparison vs Western Models

与西方大模型的成本对比

TaskWestern ModelCostChinese ModelCostSavings
ChatGPT-4o$5.00/$15.00DeepSeek Chat$0.27/$1.1095%
CodeClaude Sonnet$3.00/$15.00DeepSeek Coder$0.14/$0.2895%
VisionGPT-4o$5.00/$15.00Qwen-VL$0.40/$0.4097%
FastGPT-4o-mini$0.15/$0.60Qwen-7B$0.09/$0.0960%
任务类型西方大模型成本中文大模型成本成本节约率
聊天对话GPT-4o$5.00/$15.00DeepSeek Chat$0.27/$1.1095%
代码生成Claude Sonnet$3.00/$15.00DeepSeek Coder$0.14/$0.2895%
视觉处理GPT-4o$5.00/$15.00Qwen-VL$0.40/$0.4097%
快速任务GPT-4o-mini$0.15/$0.60Qwen-7B$0.09/$0.0960%

LangGraph Multi-Model Factory

LangGraph多模型工厂

python
from enum import Enum
from langchain_openai import ChatOpenAI
import os

class ChineseModel(str, Enum):
    DEEPSEEK_CHAT = "deepseek/deepseek-chat"
    DEEPSEEK_CODER = "deepseek/deepseek-coder"
    QWEN_VL = "qwen/qwen-2-vl-72b-instruct"
    QWEN_FAST = "qwen/qwen-2.5-7b-instruct"
    QWQ_REASONING = "qwen/qwq-32b"
    MOONSHOT_LONG = "moonshot/moonshot-v1-128k"
    AUTO = "openrouter/auto"

def create_llm(model: ChineseModel, **kwargs) -> ChatOpenAI:
    """Factory for OpenRouter LLMs with sensible defaults."""
    return ChatOpenAI(
        model=model.value,
        openai_api_key=os.getenv("OPENROUTER_API_KEY"),
        openai_api_base="https://openrouter.ai/api/v1",
        default_headers={
            "HTTP-Referer": os.getenv("APP_URL", "http://localhost"),
            "X-Title": os.getenv("APP_NAME", "LangChain App")
        },
        **kwargs
    )
python
from enum import Enum
from langchain_openai import ChatOpenAI
import os

class ChineseModel(str, Enum):
    DEEPSEEK_CHAT = "deepseek/deepseek-chat"
    DEEPSEEK_CODER = "deepseek/deepseek-coder"
    QWEN_VL = "qwen/qwen-2-vl-72b-instruct"
    QWEN_FAST = "qwen/qwen-2.5-7b-instruct"
    QWQ_REASONING = "qwen/qwq-32b"
    MOONSHOT_LONG = "moonshot/moonshot-v1-128k"
    AUTO = "openrouter/auto"

def create_llm(model: ChineseModel, **kwargs) -> ChatOpenAI:
    """基于合理默认值创建OpenRouter大模型的工厂函数。"""
    return ChatOpenAI(
        model=model.value,
        openai_api_key=os.getenv("OPENROUTER_API_KEY"),
        openai_api_base="https://openrouter.ai/api/v1",
        default_headers={
            "HTTP-Referer": os.getenv("APP_URL", "http://localhost"),
            "X-Title": os.getenv("APP_NAME", "LangChain App")
        },
        **kwargs
    )

Usage

Usage

chat_llm = create_llm(ChineseModel.DEEPSEEK_CHAT) vision_llm = create_llm(ChineseModel.QWEN_VL) fast_llm = create_llm(ChineseModel.QWEN_FAST, temperature=0)
undefined
chat_llm = create_llm(ChineseModel.DEEPSEEK_CHAT) vision_llm = create_llm(ChineseModel.QWEN_VL) fast_llm = create_llm(ChineseModel.QWEN_FAST, temperature=0)
undefined

Environment Setup

环境配置

bash
undefined
bash
undefined

.env

.env

OPENROUTER_API_KEY=sk-or-v1-... APP_URL=https://your-app.com # For attribution (optional) APP_NAME=Your App Name # For attribution (optional)

</core_concepts>

<routing>
For detailed information, see:

- `reference/models-catalog.md` - Complete model listing with capabilities
- `reference/routing-strategies.md` - Auto, provider, and custom routing
- `reference/langchain-integration.md` - LangChain/LangGraph patterns
- `reference/cost-optimization.md` - Budget management and caching
- `reference/tool-calling.md` - Function calling patterns
- `reference/multimodal.md` - Vision, PDF, audio support
- `reference/observability.md` - Monitoring and tracing
</routing>

<checklist>
When implementing OpenRouter integration:

- [ ] Set OPENROUTER_API_KEY environment variable
- [ ] Choose appropriate model for task type (see decision tree)
- [ ] Use ChatOpenAI with openai_api_base="https://openrouter.ai/api/v1"
- [ ] Add HTTP-Referer and X-Title headers for attribution
- [ ] Consider cost implications (Chinese models are 10-100x cheaper)
- [ ] Enable streaming for chat interfaces
- [ ] Implement fallback chain for production reliability
- [ ] Set up cost tracking/budget limits
</checklist>
OPENROUTER_API_KEY=sk-or-v1-... APP_URL=https://your-app.com # 用于归因(可选) APP_NAME=Your App Name # 用于归因(可选)

</core_concepts>

<routing>
如需详细信息,请参阅:

- `reference/models-catalog.md` - 包含模型能力的完整模型列表
- `reference/routing-strategies.md` - 自动路由、提供商路由及自定义路由策略
- `reference/langchain-integration.md` - LangChain/LangGraph集成模式
- `reference/cost-optimization.md` - 预算管理与缓存策略
- `reference/tool-calling.md` - 函数调用模式
- `reference/multimodal.md` - 视觉、PDF、音频支持
- `reference/observability.md` - 监控与追踪
</routing>

<checklist>
在集成OpenRouter时,请确认:

- [ ] 已设置OPENROUTER_API_KEY环境变量
- [ ] 根据任务类型选择合适的模型(参考决策树)
- [ ] 使用ChatOpenAI并设置openai_api_base="https://openrouter.ai/api/v1"
- [ ] 添加HTTP-Referer和X-Title请求头以完成归因
- [ ] 考虑成本因素(中文大模型的价格是西方模型的1/10到1/100)
- [ ] 为聊天界面启用流式传输
- [ ] 实现降级链以保障生产环境可靠性
- [ ] 设置成本追踪/预算限制
</checklist>