SuperAPI AI 工具集

calling-llms

智能体与模型

查看项目

更新于 10-16 09:22

技能介绍

用途

calling-llms 面向通过 liter-llm 发送聊天补全(chat completions)请求并路由到指定供应商的场景。当请求需要按 provider/model 前缀选择后端时使用本技能。

主要能力

  • 通过 liter-llm 的客户端发送聊天请求。
  • 按模型字符串的前缀进行供应商路由:前缀决定请求发往哪个后端。
  • 支持通过 model_hint 在客户端构造时固定供应商,从而在每次调用时省略前缀。
  • 提供类型化异常用于错误处理。

使用方式

首先构建 ChatCompletionRequest,然后用 client.chat(request) 发送。客户端通过 create_client(...) 创建。模型字符串格式为 provider/model,前缀选择后端。

示例代码:

import asyncio, json, os
from liter_llm import create_client
from liter_llm._internal_bindings import ChatCompletionRequest

async def main() -> None:
    client = create_client(api_key=os.environ["OPENAI_API_KEY"])
    request = ChatCompletionRequest.from_json(json.dumps({
        "model": "openai/gpt-4o",
        "messages": [
            {"role": "system", "content": "You are concise."},
            {"role": "user", "content": "Name three Rust crates for HTTP."},
        ],
    }))
    response = await client.chat(request)
    print(response.choices[0].message.content)

asyncio.run(main())

供应商路由

模型字符串的前缀选择供应商;为每个后端分别构建请求:

ChatCompletionRequest.from_json('{"model":"anthropic/claude-sonnet-4-20250514","messages":[...]}')
ChatCompletionRequest.from_json('{"model":"google/gemini-2.0-flash","messages":[...]}')
ChatCompletionRequest.from_json('{"model":"groq/llama3-70b","messages":[...]}')
ChatCompletionRequest.from_json('{"model":"mistral/mistral-large-latest","messages":[...]}')
ChatCompletionRequest.from_json('{"model":"bedrock/anthropic.claude-v2","messages":[...]}')

在构造时设置 model_hint,可在每次调用时去掉前缀:

client = create_client(api_key="sk-...", model_hint="openai")
# the request model can now omit the provider prefix:
request = ChatCompletionRequest.from_json('{"model":"gpt-4o","messages":[...]}')
await client.chat(request)  # routes to OpenAI

注意事项

  • 密钥来自环境变量(OPENAI_API_KEY、ANTHROPIC_API_KEY 等);切勿硬编码。
  • 既没有前缀、也没有 model_hint 时,路由会失败。
  • Python 错误是 liter_llm 导出的类型化异常:AuthenticationError、RateLimitedError、BadRequestError、ContextWindowExceededError、ContentPolicyError、NotFoundError、ServerError、ServiceUnavailableError、LiterLlmTimeoutError、BudgetExceededError——全部是 LiterLlmError 的子类。

适用场景

需要在多个 LLM 供应商之间按前缀统一切换、或在同一代码路径中动态选择后端的 Python 异步调用场景。

限制

  • 必须提供可用的供应商前缀或 model_hint,否则路由失败。
  • 资料未提供收费、价格、平台等其它信息。