Skip to content

Responses API

OpenAI Responses API — Chat Completions 的下一代替代方案。支持流式输出、函数调用、扩展思考和通过 previous_response_id 实现多轮对话。兼容官方 openai Python SDK 和 openai-go SDK。

基础 URL: https://api.jarvisclaw.ai/v1

认证

方式Header描述
API KeyAuthorization: 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)  # → "你叫张三"

请求体参数

参数类型必填描述
modelstring模型 ID(如 anthropic/claude-sonnet-4.6
inputstring/array文本或消息数组
streamboolean启用 SSE 流式输出
temperaturenumber采样温度
max_output_tokensinteger最大输出 token 数
top_pnumber核采样
instructionsstring系统级指令
toolsarray函数调用工具定义
tool_choicestring/object"auto", "none", "required"
reasoningobject{"effort": "low" | "medium" | "high"}
previous_response_idstring链接多轮对话
storeboolean存储响应以供检索
metadataobject任意键值对

流式事件

事件类型描述
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"] → 立即获取结果

另请参阅