POST /responses 接受 OpenAI Responses API 格式的请求,并返回带类型的输出项,例如 reasoning、message 和 function_call。它适用于所有 Venice 文本模型,并支持 API 密钥或 x402 钱包认证。
何时使用
当你的客户端已经使用 Responses 格式时(例如基于 OpenAIresponses.create 构建的编程智能体和 SDK),请使用 /responses。这是通过 Venice 在 OpenAI 模型上运行 Codex 风格智能体的最佳方式。
对于非 OpenAI 模型,/chat/completions 仍然是功能最完整的选择:它在所有模型上都支持结构化输出、文件输入、E2EE 模型以及所有 venice_parameters 选项。
快速开始
output 数组和一个 usage 对象:
请求的处理方式
Venice 以两种模式之一处理每个请求。- 原生(Native)。 对 OpenAI 模型的请求会不经转换直接转发到 OpenAI 的 Responses API。这涵盖除
openai-gpt-oss-120b之外的所有openai-*模型。响应项、ID、推理内容和流事件都会按 OpenAI 返回的原样传回。 - 转换(Translated)。 其他所有模型以及
openai-gpt-oss-120b都会经过转换层:Venice 将请求转换为 Chat Completions 请求并执行,然后将结果转换回来。Chat Completions 格式无法表达的内容会被忽略或拒绝。参见限制。
web_search 工具、web_search: true 或 venice_parameters.enable_web_search)、x_search、venice_parameters.character_slug 和 venice_parameters.enable_web_scraping。包含原生模式无法处理的字段(列于原生模式下)的请求也会以同样方式回退。
你可以通过请求头控制和查看所使用的模式:
对话是无状态的
无论哪种模式,Venice 都不会存储响应。每次请求时都需要在input 中发送完整对话,并附加之前的 output 项以及所有工具结果。
store 始终被视为 false。由于没有存储任何内容,previous_response_id 和 conversation 无法被解析。在默认的 auto 模式下,此类请求会以转换模式处理,这些字段会被忽略。使用 x-venice-responses-mode: native 时,这些请求会返回 400。
原生模式
原生模式支持 OpenAI 自身 endpoint 所支持的 Responses 功能,包括:instructions,按原样应用。- 通过
text.format实现的结构化输出。OpenAI 会严格校验 schema,因此无效的 schema 会返回 400。例如,strict: true要求additionalProperties: false,而json_object要求输入中某处包含单词 “json”。 - 采用 OpenAI Responses 格式
{"type": "function", "name": "..."}的函数工具和tool_choice,以及并行工具调用。 - 由客户端执行的工具:
custom(自由格式输入)、namespace、tool_search、apply_patch、使用本地环境的shell和local_shell,以及计算机操作(computer use)。 - 推理摘要,默认开启。推理模型始终会在推理项上返回
encrypted_content。在下一轮中将这些项放回input发送,即可保留模型的推理上下文。 - 使用
prompt_cache_key的提示缓存。Venice 会将该键限定在你的账户范围内,因此绝不会与其他用户共享缓存,并会在响应中返回你原始的键。 - 图片输入(包括
detail: "original"),以及带有内联file_data的input_file。 - Pro 模型(
*-pro),会自动以 OpenAI 的 Pro 推理模式运行。
instructions 会原样生效。设置 venice_parameters.include_venice_system_prompt: true 即可添加它。
以下功能需要服务器端存储或由提供商托管的资源,因此无法以原生方式使用:
这些限制同样适用于在对话后续通过
additional_tools 或 tool_search_output 项加载的工具。在其中声明的 Venice 搜索工具也会使请求转到转换模式处理。
无法识别的请求字段也会按同样方式处理:使用 auto 时,请求会以转换模式处理;使用 native 时,会返回 400。
Streaming
设置stream: true 即可接收服务器发送事件(SSE)。两种模式都会以 data: [DONE] 结束流。
在原生模式下,事件与 OpenAI 完全一致,包括用于推理摘要的 response.reasoning_summary_text.delta 和用于工具参数的 response.function_call_arguments.delta。
在转换模式下,事件依次为 response.created、response.output_item.added、response.content_part.added、response.output_text.delta、response.function_call_arguments.delta、response.content_part.done、response.output_item.done,最后是 response.completed、response.incomplete 或 response.failed。其中有两个事件与 OpenAI 不同:
- 推理文本以
response.reasoning.delta的形式流式传输,而不是 OpenAI 的推理摘要事件。 - 执行网页搜索时,会在答案开始流式传输之前,通过
response.web_search.done事件返回搜索结果。
转换模式参数
网页搜索按搜索增强计费,与
/chat/completions 相同。
转换模式下需要提前考虑的几种行为:
instructions会作为系统消息应用。- 自定义工具会返回带有原始
input的custom_tool_call项。如果模型返回格式错误的自定义工具参数,或调用了请求中未声明的工具,该调用会以普通的function_call形式返回并保留原始参数,以便你的客户端报告工具错误并继续执行。 - 在自定义工具的输入流式传输期间,其调用项及后续项可能要等到输入完成后才会到达。等待期间,流会发送 SSE keep-alive 注释。
- 对于不支持
detail: "original"的提供商,图片的该设置会以high发送。
限制
以下差距适用于转换模式:所有非 OpenAI 模型、openai-gpt-oss-120b,以及使用了 Venice 专属功能的 OpenAI 模型请求。除非另有说明,请求仍会成功,相应字段会被忽略。