Venice 结构化响应接口
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/venice-responses-lr-97pz。
技能介绍
要解决的问题
基于 Venice 的 Agent 如果直接调用 /chat/completions,拿到的只是一段 message.content 字符串。模型的推理内容、正式消息、function_call 工具调用、web_search_call 内置搜索事件全部揉在同一个字段里,客户端必须自己写解析逻辑去拆分。而期待 OpenAI Responses 响应形状的客户端库面对这种结构,要么丢失信息,要么被迫做字符串匹配。
这个技能做什么
Veniceresponses 对应 Venice 的 Responses API (Alpha),走 POST /api/v1/responses,是 OpenAI 兼容的 Responses 端点:
- 返回结构化、类型化的输出数组,而不是单个字符串
output[]中每个块都带type字段,取值为reasoning/message/function_call/web_search_call- 推理、消息、工具调用各自独立成块,Agent 可以直接按类型分发处理
- 支持 SSE 流式输出,事件本身也是带类型的
对客户端来说流程很直接:按 Responses 格式发请求 → 按 type 遍历 output[] → 推理块可缓存或丢弃,message 块渲染给用户,function_call 块交给工具执行器。
适用边界
- Alpha 阶段,schema 可能变化,生产环境接入前需要评估
- Bearer API key 需开启
responsesApiEnabled标志,beta 期间仅 staff 可用;x402 钱包认证可绕过该标志,按次付费即可调用 - 如果只是普通对话,用
venice-chat更合适——模型更多、Venice 参数更全 - 与
/chat/completions相比存在功能取舍,不应把它当作后者的完全替代品
使用场景
- 编写基于 Venice 的 Agent 时,客户端库要求返回 OpenAI Responses 格式的 output 数组
- 需要把模型的推理内容和正式回复分开处理,避免在 message.content 字符串里做拆分
- 实现实时流式对话界面时,要求 SSE 事件携带类型,以便区分 reasoning 和 message 块
- 对接内置 web_search_call 事件时,要把搜索调用过程与最终消息分别记录和展示
适合人员
- 基于 Venice 搭建 Agent 的后端工程师,希望响应格式符合 OpenAI Responses 规范
- 开发 AI 对话客户端的工程师,需要按类型分离推理、消息和工具调用
- 构建流式聊天界面的前端工程师,要求 SSE 事件可按类型分发渲染
- 维护工具调用链路的开发者,希望直接读取结构化 function_call 块交给执行器