Responses API
OpenAI Responses API — Chat Completions 的下一代替代方案。支持流式输出、函数调用、扩展思考和通过 previous_response_id 实现多轮对话。兼容官方 openai Python SDK 和 openai-go SDK。
基础 URL: https://api.jarvisclaw.ai/v1
认证
| 方式 | Header | 描述 |
|---|---|---|
| API Key | Authorization: Bearer sk-... | 平台自动从你的 HD 钱包签名 x402 |
| 私钥(x402) | 通过 SDK 自动 | Agent 直接从自身钱包签名 x402 |
详见 Agent 支付(x402) 了解完整详情。
端点
POST /v1/responses
创建模型响应。平台自动路由到 Claude、GPT 或 Gemini 上游,并自动进行格式转换。
快速开始
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.jarvisclaw.ai/v1"
)
# 简单文本响应
response = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="用一段话解释量子计算"
)
print(response.output_text)go
package main
import (
"context"
"fmt"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey("sk-your-api-key"),
option.WithBaseURL("https://api.jarvisclaw.ai/v1"),
)
resp, _ := client.Responses.New(context.Background(),
openai.ResponseNewParams{
Model: "anthropic/claude-sonnet-4.6",
Input: openai.ResponseNewParamsInputUnionString(
"用一段话解释量子计算",
),
},
)
fmt.Println(resp.OutputText)
}bash
curl https://api.jarvisclaw.ai/v1/responses \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4.6",
"input": "用一段话解释量子计算"
}'流式输出
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.jarvisclaw.ai/v1"
)
stream = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="写一首关于编程的短诗",
stream=True
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)go
stream := client.Responses.NewStreaming(ctx,
openai.ResponseNewParams{
Model: "anthropic/claude-sonnet-4.6",
Input: openai.ResponseNewParamsInputUnionString("写一首关于编程的短诗"),
Stream: openai.Bool(true),
},
)
for stream.Next() {
event := stream.Current()
if delta, ok := event.AsResponseOutputTextDelta(); ok {
fmt.Print(delta.Delta)
}
}函数调用
python
response = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="东京现在天气怎么样?",
tools=[{
"type": "function",
"name": "get_weather",
"description": "获取指定城市的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市名称"}
},
"required": ["location"]
}
}]
)
for item in response.output:
if item.type == "function_call":
print(f"调用: {item.name}({item.arguments})")go
resp, _ := client.Responses.New(ctx, openai.ResponseNewParams{
Model: "anthropic/claude-sonnet-4.6",
Input: openai.ResponseNewParamsInputUnionString("东京现在天气怎么样?"),
Tools: []openai.ToolUnionParam{{
OfFunction: &openai.FunctionToolParam{
Name: "get_weather",
Description: openai.String("获取指定城市的当前天气"),
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"location": map[string]any{"type": "string"},
},
"required": []string{"location"},
},
},
}},
})扩展思考
python
response = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="第100个质数是什么?逐步推理",
reasoning={"effort": "high"}
)
print(response.output_text)多轮对话
python
# 第一轮
r1 = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="我叫张三",
store=True
)
# 第二轮 — 引用上一轮
r2 = client.responses.create(
model="anthropic/claude-sonnet-4.6",
input="我叫什么名字?",
previous_response_id=r1.id
)
print(r2.output_text) # → "你叫张三"请求体参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| model | string | 是 | 模型 ID(如 anthropic/claude-sonnet-4.6) |
| input | string/array | 是 | 文本或消息数组 |
| stream | boolean | 否 | 启用 SSE 流式输出 |
| temperature | number | 否 | 采样温度 |
| max_output_tokens | integer | 否 | 最大输出 token 数 |
| top_p | number | 否 | 核采样 |
| instructions | string | 否 | 系统级指令 |
| tools | array | 否 | 函数调用工具定义 |
| tool_choice | string/object | 否 | "auto", "none", "required" |
| reasoning | object | 否 | {"effort": "low" | "medium" | "high"} |
| previous_response_id | string | 否 | 链接多轮对话 |
| store | boolean | 否 | 存储响应以供检索 |
| metadata | object | 否 | 任意键值对 |
流式事件
| 事件类型 | 描述 |
|---|---|
response.created | 响应对象已创建 |
response.in_progress | 开始处理 |
response.output_item.added | 新输出项开始 |
response.content_part.added | 新内容部分开始 |
response.output_text.delta | 文本增量块 |
response.content_part.done | 内容部分完成 |
response.output_item.done | 输出项完成 |
response.completed | 响应完成,包含用量信息 |
精简响应
POST /v1/responses/compact
轻量级变体,仅返回核心字段 — 适用于不需要完整元数据的高吞吐管线。
请求: 与 /v1/responses 相同 — 所有请求体参数完全一致。
响应: 精简输出,仅包含文本/工具结果:
json
{
"id": "resp_abc123",
"output_text": "第100个质数是541。",
"usage": {
"input_tokens": 42,
"output_tokens": 18,
"total_tokens": 60
},
"model": "anthropic/claude-sonnet-4.6",
"cost_usd": 0.0003
}与完整 /v1/responses 的关键差异:
| 方面 | /v1/responses | /v1/responses/compact |
|---|---|---|
| 输出格式 | 完整 output[] 数组 | 扁平 output_text 字符串 |
| 元数据 | 完整(created_at, status 等) | 最小化(id, model, usage, cost) |
| 工具调用 | 在 output[] 项中 | 在 tool_calls[] 数组中(如有) |
| 流式输出 | 支持 | 不支持 |
| 使用场景 | 通用 | 批处理/管线处理 |
示例:
python
response = client.post("/v1/responses/compact", json={
"model": "openai/gpt-4.1-mini",
"input": "用一句话总结:..."
})
# response.json()["output_text"] → 立即获取结果另请参阅
- Anthropic Messages API — 原生 Anthropic 协议(直接使用
anthropicSDK) - Chat Completions API — 传统 OpenAI Chat 格式
- 模型列表 — 完整模型列表