跳到主要内容

调用推理 API

调用前需要一个已发布的对外模型名称和有权访问它的 API Key。请求发往 proxyserver,官方安装脚本默认端口为 8090;控制台和管理 API 使用另一端口 8080。以实际部署的网关地址为准。

检查当前 Key 可见的模型​

将地址与 Key 换成实际值。下面的 model 字段必须使用返回列表中的 id,而不是模型文件夹、上游 served_model 或部署名称。

export LLMPOD_PROXY_URL='http://<网关地址>:8090'
export LLMPOD_API_KEY='<你的 API Key>'

curl -fsS "$LLMPOD_PROXY_URL/v1/models" \
-H "Authorization: Bearer $LLMPOD_API_KEY"

若列表里没有目标模型,检查发布状态、租户模型封禁及 Key 的授权模型范围。列表的发布快照可能有数秒刷新延迟;刚发布后可以稍候重试。

调用 Chat Completions​

适用于发布为 OpenAI 协议、且支持对话的模型:

curl -sS "$LLMPOD_PROXY_URL/v1/chat/completions" \
-H "Authorization: Bearer $LLMPOD_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "<对外模型名称>",
"messages": [{"role": "user", "content": "你好,请用一句话介绍自己。"}]
}'

OpenAI Python SDK 的 base_url 包含 /v1:

from openai import OpenAI

client = OpenAI(
base_url="http://<网关地址>:8090/v1",
api_key="<你的 API Key>",
)
response = client.chat.completions.create(
model="<对外模型名称>",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)

需要流式输出时传入 stream=True,按 SDK 的流式迭代方式读取;HTTP 响应使用 SSE。非流式响应的结构主要由上游决定,LLMPod 会把响应中的模型名写回请求使用的对外名称。

调用 Anthropic Messages​

适用于发布为 Anthropic 协议的模型。Anthropic Python SDK 的 base_url 使用网关根地址,不带 /v1,SDK 会请求 /v1/messages:

from anthropic import Anthropic

client = Anthropic(
base_url="http://<网关地址>:8090",
api_key="<你的 API Key>",
)
message = client.messages.create(
model="<对外模型名称>",
max_tokens=256,
messages=[{"role": "user", "content": "你好"}],
)
print(message.content)

使用 curl 时带上 x-api-key 与协议版本头:

curl -sS "$LLMPOD_PROXY_URL/v1/messages" \
-H "x-api-key: $LLMPOD_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
-d '{"model":"<对外模型名称>","max_tokens":256,"messages":[{"role":"user","content":"你好"}]}'

LLMPod 按协议转发,不会自动把 OpenAI 请求转换成 Anthropic 请求,反之亦然。Embeddings、Rerank 和 Token Count 的路径、请求体及错误见API 参考。