使用说明
OpenRouter-使用一个API访问500+AI模型
通过MCP访问OpenRouter模型
一把钥匙。500多种型号。语义搜索为任何任务找到完美的模型。 你的人工智能现在可以调用其他人工智能——更智能的、更快的、更便宜的、专门的。
益处
1.🔍 语义模型搜索
不仅仅是一个列表——智能发现。 搜索“最适合代码分析”,并获得按实际能力匹配排名的模型。矢量嵌入可以理解你需要什么,而不仅仅是关键字。
2.🌐 500多种型号,一个API
每个主要的AI都在一个地方。 GPT-4、克劳德、双子座、拉玛、米斯特拉尔和500+以上。一个API键,一个接口,无限可能。
3.💰 自动价格优化
找到满足您需求的最便宜的型号。 按价格、上下文长度、功能筛选。以极低的成本获得企业绩效。
为什么这个工具改变了人工智能的发展
大多数开发人员坚持一种模式。 OpenAI的GPT-4、Anthropic的Claude、谷歌的Gemini——选一个,希望它适用于所有情况。但不同的任务需要不同的模型。
模型比较是手动和繁琐的。 访问供应商网站,阅读规格,比较价格,测试每一个。对每个新用例进行数小时的研究。
切换提供者意味着重写代码。 不同的API,不同的格式,不同的身份验证。不便时锁定。
这个工具解决了所有这些问题。
语义搜索:“查找擅长数学的模型”→ 即时排名列表。
一个API:相同的代码适用于GPT-4,Claude,Llama,Mistral,一切。
价格筛选:“每个代币低于0.0001美元,100K+上下文”→ 完美的匹配。
自动刷新:模型数据库每天更新。总是最新的。
真实世界的故事:成本优化发现
问题:
一家初创公司在所有事情上都使用GPT-4:
- 客户支持响应(0.03/1K代币)
- 代码分析(0.03/1K代币)
- 简单分类(0.03美元/千代币)
- 数据提取(0.03美元/千代币)
每月人工智能账单: $12,000
他们问道:“我们能在不牺牲质量的情况下降低成本吗?”。
标准方法:手动测试更便宜的模型,希望它们有效,处理API差异。 预计时间:2-3周的工程设计。
使用此工具:
# Find models for simple classification (cheap, fast)
simple_models = search_models(
bindings={"query_vec": {"_embedding_text": "fast classification and categorization"}},
sql="""SELECT id, context_length, prompt_cost, completion_cost,
vec_distance_cosine(embedding, vec_f32(:query_vec)) as similarity
FROM models
WHERE prompt_cost < 0.0001
ORDER BY similarity LIMIT 5"""
)
# Find models for code analysis (quality matters)
code_models = search_models(
bindings={"query_vec": {"_embedding_text": "code analysis and reasoning"}},
sql="""SELECT id, context_length, prompt_cost, completion_cost,
vec_distance_cosine(embedding, vec_f32(:query_vec)) as similarity
FROM models
WHERE context_length > 32000
ORDER BY similarity LIMIT 5"""
)
# Test each model with sample data
for model in simple_models:
result = chat_completion(
model=model['id'],
messages=[{"role": "user", "content": "Classify this support ticket..."}]
)
# Evaluate quality vs cost
结果:
- 客户支持:切换到Llama 3.1 70B(0.0004/1K代币)——准确率98%, 成本降低98.7%
- 代码分析:保持GPT-4(质量关键)
- 简单分类:切换到Mistral 7B(0.0001/1K代币)——95%的准确率, 成本降低99.7%
- 数据提取:切换到Claude 3 Haiku(0.00025/1K代币)——99%的准确率, 成本降低99.2%
每月新账单:1200美元 (减少90%)
踢球者: 相同的代码适用于所有模型。通过更改一个参数来切换模型。A/B测试需要几分钟,而不是几天。
完整的功能集
语义模型搜索
按能力查找模型:
# Search by natural language description
models = search_models(
bindings={
"query_vec": {"_embedding_text": "code analysis and reasoning"}
}
)
# Returns models ranked by semantic similarity
# Understands "code analysis" means: logic, syntax, debugging, refactoring
自定义SQL查询:
# Find cheap models with large context
models = search_models(
sql="""SELECT id, context_length, prompt_cost, completion_cost,
vec_distance_cosine(embedding, vec_f32(:query_vec)) as similarity
FROM models
WHERE context_length > 100000 AND prompt_cost < 0.0001
ORDER BY similarity LIMIT 10""",
bindings={"query_vec": {"_embedding_text": "document analysis"}}
)
非语义查询:
# Pure SQL filtering (no semantic search)
models = search_models(
sql="SELECT id, context_length, description FROM models ORDER BY context_length DESC LIMIT 5"
)
为什么语义搜索很重要: 向量嵌入捕捉意义。“代码分析”与擅长“编程”、“调试”、“语法”、“逻辑”的模型相匹配,即使这些词不在描述中。
模型发现
列出所有型号:
# Get complete model catalog
models = list_available_models()
# Returns: TSV format with all model details
# Columns: id, name, context_length, pricing, modality, provider, etc.
按条件筛选:
# Find specific models
models = list_available_models(
search_criteria={
"provider": "anthropic",
"min_context_length": 100000,
"max_prompt_price": 0.001,
"modality": "text->text"
},
max_results=10
)
可用过滤器:
modality:“文本->文本”、“文本->图像”、“图像->文本”等。min_context_length:最小上下文窗口大小max_prompt_price:每1K输入代币的最高价格max_completion_price:每1K输出代币的最高价格provider:按提供商筛选(anthropic、openai、谷歌等)text_match:名称/描述的正则表达式模式case_sensitive:区分大小写的文本匹配
JSON输出:
# Get full JSON instead of TSV
models = list_available_models(
json=True,
columns=["id", "context_length", "pricing", "description"]
)
为什么list_available_models很重要: 始终从OpenRouter API获取新数据。自动刷新本地数据库。确保search_models具有当前数据。
聊天补全
基本聊天:
# Send message to any model
response = chat_completion(
model="anthropic/claude-3-opus",
messages=[
{"role": "user", "content": "Explain quantum computing"}
]
)
多回合对话:
# Maintain conversation history
response = chat_completion(
model="openai/gpt-4",
messages=[
{"role": "system", "content": "You are a helpful coding assistant"},
{"role": "user", "content": "Write a Python function to sort a list"},
{"role": "assistant", "content": "Here's a sorting function..."},
{"role": "user", "content": "Now optimize it for large lists"}
]
)
流媒体响应:
# Get responses as they're generated
response = chat_completion(
model="anthropic/claude-3-sonnet",
messages=[{"role": "user", "content": "Write a long essay"}],
stream=True
)
# Process chunks as they arrive
for chunk in response:
print(chunk['content'], end='', flush=True)
工具使用:
# Models can call functions
response = chat_completion(
model="openai/gpt-4",
messages=[{"role": "user", "content": "What's the weather in London?"}],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
}
}
}
}
],
tool_choice="auto"
)
# Model returns tool call request
# You execute the function and send results back
源内容处理:
# Include URLs or files in context
response = chat_completion(
model="anthropic/claude-3-opus",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Analyze this documentation"},
{"type": "url", "url": "https://docs.example.com/api"}
]
}
]
)
为什么聊天完成很重要: 500多种型号的界面相同。通过更改一个参数来切换模型。没有代码重写,没有API更改。
账户管理
检查积分:
# Get current balance
credits = get_credits()
# Returns: {
# "balance": 25.50,
# "usage_this_month": 12.30,
# "rate_limit": {...}
# }
获取生成详细信息:
# Retrieve specific generation info
generation = get_generation(generation_id="gen_abc123")
# Returns: Full details including cost, tokens, model used
为什么账户管理很重要: 跟踪支出,监控使用情况,避免意外。对于生产部署至关重要。
高级用例
智能选型
# Find best model for specific task and budget
def find_optimal_model(task_description, max_price_per_1k, min_context):
models = search_models(
sql="""SELECT id, context_length, prompt_cost, completion_cost,
vec_distance_cosine(embedding, vec_f32(:query_vec)) as similarity
FROM models
WHERE context_length >= :min_context
AND prompt_cost <= :max_price
ORDER BY similarity LIMIT 10""",
bindings={
"query_vec": {"_embedding_text": task_description},
"min_context": min_context,
"max_price": max_price_per_1k
}
)
# Test top 3 models with sample
best_model = None
best_score = 0
for model in models[:3]:
result = chat_completion(
model=model['id'],
messages=[{"role": "user", "content": "Sample task..."}]
)
score = evaluate_quality(result)
if score > best_score:
best_score = score
best_model = model
return best_model
# Use it
model = find_optimal_model(
task_description="code review and bug detection",
max_price_per_1k=0.001,
min_context=32000
)
成本优化的管道
# Use different models for different stages
def process_customer_support(ticket):
# Stage 1: Classification (cheap, fast)
classifier_models = search_models(
bindings={"query_vec": {"_embedding_text": "fast text classification"}},
sql="SELECT id FROM models WHERE prompt_cost < 0.0001 ORDER BY similarity LIMIT 1"
)
category = chat_completion(
model=classifier_models[0]['id'],
messages=[{"role": "user", "content": f"Classify this ticket: {ticket}"}]
)
# Stage 2: Response generation (quality matters)
if category == "technical":
# Use smarter model for technical issues
response_models = search_models(
bindings={"query_vec": {"_embedding_text": "technical explanation"}},
sql="SELECT id FROM models WHERE context_length > 32000 ORDER BY similarity LIMIT 1"
)
else:
# Use cheaper model for simple issues
response_models = search_models(
bindings={"query_vec": {"_embedding_text": "customer service response"}},
sql="SELECT id FROM models WHERE prompt_cost < 0.0005 ORDER BY similarity LIMIT 1"
)
response = chat_completion(
model=response_models[0]['id'],
messages=[{"role": "user", "content": f"Respond to: {ticket}"}]
)
return response
多模型共识
# Get answers from multiple models, combine results
def consensus_answer(question, num_models=3):
# Find diverse models good at the task
models = search_models(
bindings={"query_vec": {"_embedding_text": "reasoning and analysis"}},
sql="""SELECT id, provider
FROM models
WHERE context_length > 8000
ORDER BY similarity LIMIT 10"""
)
# Select models from different providers
selected = []
providers_used = set()
for model in models:
if model['provider'] not in providers_used:
selected.append(model)
providers_used.add(model['provider'])
if len(selected) >= num_models:
break
# Get answers from each
answers = []
for model in selected:
response = chat_completion(
model=model['id'],
messages=[{"role": "user", "content": question}]
)
answers.append(response['content'])
# Synthesize consensus
synthesis = chat_completion(
model="anthropic/claude-3-opus", # Use best model for synthesis
messages=[{
"role": "user",
"content": f"Synthesize these {num_models} answers: {answers}"
}]
)
return synthesis
自动回退
# Try models in order until one succeeds
def robust_completion(messages, preferred_models):
for model_id in preferred_models:
try:
response = chat_completion(
model=model_id,
messages=messages
)
return response
except Exception as e:
print(f"Model {model_id} failed: {e}")
continue
# All preferred models failed, find alternative
fallback_models = search_models(
sql="SELECT id FROM models WHERE context_length > 8000 LIMIT 5"
)
for model in fallback_models:
try:
response = chat_completion(
model=model['id'],
messages=messages
)
return response
except:
continue
raise Exception("All models failed")
# Use it
response = robust_completion(
messages=[{"role": "user", "content": "Analyze this code..."}],
preferred_models=["openai/gpt-4", "anthropic/claude-3-opus", "google/gemini-pro"]
)
使用示例
语义模型搜索
{
"input": {
"operation": "search_models",
"tool_unlock_token": "YOUR_TOKEN",
"bindings": {
"query_vec": {"_embedding_text": "code analysis and reasoning"}
}
}
}
自定义SQL搜索
{
"input": {
"operation": "search_models",
"tool_unlock_token": "YOUR_TOKEN",
"sql": "SELECT id, context_length, prompt_cost FROM models WHERE context_length > 100000 ORDER BY prompt_cost LIMIT 5"
}
}
列出带过滤器的型号
{
"input": {
"operation": "list_available_models",
"tool_unlock_token": "YOUR_TOKEN",
"search_criteria": {
"provider": "anthropic",
"min_context_length": 100000
},
"max_results": 10
}
}
聊天补全
{
"input": {
"operation": "chat_completion",
"tool_unlock_token": "YOUR_TOKEN",
"model": "anthropic/claude-3-opus",
"messages": [
{"role": "user", "content": "Explain quantum computing"}
]
}
}
流媒体聊天
{
"input": {
"operation": "chat_completion",
"tool_unlock_token": "YOUR_TOKEN",
"model": "openai/gpt-4",
"messages": [
{"role": "user", "content": "Write a long essay"}
],
"stream": true
}
}
检查积分
{
"input": {
"operation": "get_credits",
"tool_unlock_token": "YOUR_TOKEN"
}
}
技术架构
模型数据库
自动刷新系统:
- 从OpenRouter API获取新数据
- 更新本地SQLite数据库
- 24小时缓存(可配置)
- 原子更新(无部分数据)
矢量嵌入:
- 每个模型描述内嵌Qwen 0.6B
- 1024维向量
- 语义搜索中的余弦相似度
- 缓存以提高性能
数据库架构:
CREATE TABLE models (
id TEXT PRIMARY KEY,
name TEXT,
description TEXT,
context_length INTEGER,
prompt_cost REAL,
completion_cost REAL,
provider TEXT,
modality TEXT,
architecture TEXT,
embedding BLOB, -- F32 vector
last_updated TIMESTAMP
)
语义搜索
工作原理:
- 用户提供搜索文本:“代码分析”
- 嵌入1024维矢量的文本
- 向量与所有模型嵌入进行比较
- 计算余弦相似度
- 按相似性排序的结果
- 应用了可选的SQL筛选器
为什么它很强大:
- 理解同义词:“代码”=“编程”=“软件”
- 捕捉概念:“分析”=“审查”+“调试”+“优化”
- 不匹配关键字:语义,不匹配文本
API集成
直接HTTP调用:
- 使用请求库
- 处理速率限制
- 自动重试
- 误差传播
流媒体支持:
- 服务器发送事件(SSE)
- 分块传输编码
- 实时处理
- 内存效率高
身份验证:
- 配置中的API密钥
- 自动收割台注射
- 安全存储
- 按请求覆盖
性能注意事项
数据库操作
- 型号列表:~50-200ms(缓存)
- 语义搜索:~100-500ms(矢量比较)
- SQL查询:~10-50ms(索引)
- 数据库刷新:~2-5秒(每24小时一次)
API调用
- 聊天完成时间:500ms-5s(取决于型号)
- 流媒体:第一个令牌~500ms,然后连续
- 获取型号列表:约1-2秒
- 信用检查:~100-300ms
缓存策略
- 模型数据库:24小时缓存
- 嵌入:永久性(直到模型更改)
- API响应:未缓存(始终为新鲜)
限制和注意事项
需要OpenRouter帐户
- 需要API密钥: 从...获取https://openrouter.ai/keys
- 所需学分: 现收现付定价
- 费率限制: 按计划变化
- 型号可用性: 某些型号需要批准
模型变化
- 上下文长度: 变化很大(4K到1M+代币)
- 定价: 范围从每1K代币0.0001美元到0.03+美元
- 能力: 并非所有型号都支持工具/流媒体
- 可利用性: 某些型号可能暂时不可用
语义搜索准确性
- 嵌入质量: 取决于模型描述质量
- 模棱两可的查询: 可能返回意外结果
- 语言: 仅限英文描述
- 更新: 新模型需要重新嵌入
API限制
- 所需网络: 所有操作都需要互联网
- 延迟时间: API调用增加了网络开销
- 错误: 提供商停机影响可用性
- 成本: 每次通话都要花钱
为什么这个工具是无与伦比的
1.语义发现
按能力而不是名称查找模型。“擅长数学”→ 即时排名列表。
2.500多种型号,一个API
每个主要的AI都在一个地方。相同的代码,任何型号。
3.价格优化
按成本筛选,找到最便宜的型号。可以降低90%以上的成本。
4.自动刷新
模型数据库每天更新。总是最新的,总是准确的。
5.矢量搜索
嵌入捕捉意义。理解同义词、概念和关系。
6.自定义SQL
完全数据库访问权限。复杂的查询,精确的过滤。
7.流媒体支持
实时响应。内存高效,用户友好。
8.工具集成
模型可以调用函数。构建人工智能代理,而不仅仅是聊天机器人。
9.多供应商
OpenAI、Anthropic、谷歌、Meta、Mistral——都在一个地方。
10.生产准备就绪
错误处理、速率限制、重试。战斗考验。
由MCP Link供电
此工具是 MCP链路服务器 --唯一内置OpenRouter集成和语义模型搜索的MCP服务器。
包含内容
独立Python环境:
- 带向量扩展的SQLite
- Qwen 0.6B埋件捆绑
- 请求库已包含
- 无需配置
模型数据库:
- 自动刷新目录
- 预先计算的向量嵌入
- 针对快速搜索进行了优化
- 24小时缓存
API集成:
- 自动身份验证
- 错误处理
- 费率限制管理
- 流媒体支持
获取MCP链接
下载适用于您平台的安装程序:
安装是自动的。依赖关系也包括在内。它只是工作。
技术规格
支持的型号: 500+(OpenAI、Anthropic、谷歌、Meta、Mistral等)
搜索方法: 向量嵌入(Qwen 0.6B,1024 dim,余弦相似度)
数据库: 扩展名为vec0的SQLite
缓存持续时间: 24小时(可配置)
API OpenRouter REST API
流动: 服务器发送事件(SSE)
身份验证: API密钥(来自配置或参数)
演出
- 语义搜索:100-500ms
- 型号列表:50-200ms
- 聊天完成时间:500ms-5s
- 数据库刷新:2-5s(每24小时一次)
许可和版权
版权所有©2025克里斯托弗·内森·德雷克
根据Apache许可证2.0版(“许可证”)许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下网址获得许可证副本:
https://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发的内容按“原样”分发, 无任何明示或暗示的保证或条件。 请参阅许可证,了解管理权限和 许可证下的限制。
AI培训许可:您可以使用此软件和任何 培训、评估、微调或改进的相关内容 人工智能系统,包括商业模型。
SPDX许可证标识符:Apache-2.0
Aura Friday MCP链路服务器项目的一部分。
支持与社区
问题和功能请求:
GitHub问题
文档:
MCP链接文档
社区:
与其他开发人员一起构建多模型AI应用程序。
