Skip to main content
POST /responses 接受 OpenAI Responses API 格式的请求,并返回带类型的输出项,例如 reasoning、message 和 function_call。它适用于所有 Venice 文本模型,并支持 API 密钥或 x402 钱包认证。
该 endpoint 目前处于 beta 阶段,所有 API 用户均可使用。OpenAI 模型以原生方式提供服务,因此其行为与 OpenAI 自己的 Responses API 一致。其他所有模型都会经过一个转换层,存在一些功能差距。在基于它进行构建之前,请先阅读请求的处理方式和限制。

何时使用

当你的客户端已经使用 Responses 格式时(例如基于 OpenAI responses.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 格式无法表达的内容会被忽略或拒绝。参见限制。
使用了 Venice 专属功能的 OpenAI 模型请求会以转换模式处理,以确保该功能继续可用。这包括 Venice 网页搜索(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 推理模式运行。
在原生模式下,Venice 系统提示词默认处于关闭状态,因此你的 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 模型请求。除非另有说明,请求仍会成功,相应字段会被忽略。

相关内容