简要总结
OpenResponses Gateway Plan
这页文档在讲一个“新大门”计划。原来,我们的“小爪子”系统有一个像 OpenAI 那样的聊天大门(/v1/chat/completions)。现在,我们要为“开放回答”这个新标准,再开一个专门的新大门(/v1/responses)。这个新大门更适合让智能体(可以想象成会自己干活的小机器人)来工作。我们会先让新大门能用,但不会一下子关掉旧的大门,你可以自己选择用哪个。
五岁小孩版解释
我们有一个叫“小爪子网关”的系统,它就像一个房子的前门,别人可以通过这个门来和我们里面的智能体(小机器人)聊天。以前,这个门是按照 OpenAI 的样子做的,地址是 /v1/chat/completions。
现在,有一个新的聊天标准叫“开放回答”(OpenResponses),它更适合让智能体自己工作。所以,我们要为这个新标准再开一扇新门,地址是 /v1/responses。
我们的目标是什么呢?
- 造好这个新的
/v1/responses大门,让它完全符合“开放回答”的标准。 - 旧的
/v1/chat/completions大门还会留着,这样以前用旧门的人还能用。但我们希望以后可以关掉它。 - 把检查信息对不对的规则写清楚,这样以后用起来更方便。
我们第一步不做什么呢?
- 不会一下子把“开放回答”标准里所有厉害的功能(比如传图片、文件)都做出来。
- 不会改变智能体(小机器人)在里面是怎么干活的。
- 不会改变旧大门
/v1/chat/completions现在是怎么工作的。
新大门怎么工作呢? 别人要和新大门说话,需要发送一个“请求”。这个请求里可以放很多东西,比如:
model:要哪个模型(大脑)来回答问题。input:问题本身,可以是一句话,也可以是一堆有角色(比如“系统”、“用户”、“助手”)的小段落。instructions:给模型的特别指示。stream:要不要像小溪流水一样,一点一点地收到回答。
新大门怎么回答呢? 回答有两种方式:
- 一次全给:把所有回答打包好,一次送回来。
- 一点一点流回来:就像看动画片,一帧一帧地出现。这种方式会发送很多“事件”消息,比如“回答开始创建啦”、“又出来一段文字”、“回答完成啦!”。最后,必须说一句
[DONE]表示真的结束了。
我们打算怎么建造这个新大门?
- 我们会写一些专门的“规则说明书”(Zod schemas),用来检查别人发来的信息对不对。
- 我们会写一个新的文件来处理
/v1/responses这个新地址的请求。 - 旧的处理文件(管
/v1/chat/completions的)完全不动它。 - 在系统的“设置”里,会加一个新开关,控制新大门是否打开。默认是关着的。
- 旧大门的开关还是独立的,这样两个门可以单独打开或关闭。
- 如果旧大门被打开了,系统会“提醒”一下,告诉大家这个是旧的。
关于旧大门(Chat Completions)的未来: 我们不会马上关掉它。但我们会:
- 让新大门和旧大门用完全不同的“规则说明书”,不混在一起。
- 把旧大门也变成一个“选项”,可以在设置里关掉它。
- 等新大门稳定了,我们会在说明书里告诉大家,旧大门是“老版本”的。
- 也许以后,可以把旧大门的请求转到新大门来处理,这样就更方便了。
第一步我们先支持哪些功能呢?
- 能接受两种
input:简单的一句话,或者一堆带角色的小段落。 - 会把“系统”和“开发者”说的话,当作特别的提示交给智能体。
- 会把最近一条“用户”说的话,当作当前要处理的问题。
- 如果有人发来了我们不支持的东西(比如图片),我们会礼貌地说“对不起,这个我不会”。
- 回答时,会返回一个“助手”说的话。
- 关于用了多少“算力”(tokens)的统计,我们先返回0,等以后再加上。
怎么检查别人发来的东西对不对? 我们不依赖外面的工具包,自己用“规则说明书”(Zod)来检查。我们会为“开放回答”标准里我们支持的部分,都写好规则,并且把它们放在一起,这样以后不容易出错。
“一点一点流回来”(流式响应)具体怎么做? 我们会按照顺序发送这些事件消息,一个都不能少:
response.created(回答开始创建啦)response.output_item.added(要输出的东西准备好啦)response.content_part.added(内容的一部分开始啦)response.output_text.delta(这是一小段文字,可能会发很多次)response.output_text.done(文字部分说完啦)response.content_part.done(这个内容部分结束啦)response.completed(整个回答完成啦!)[DONE](真的全部结束啦!)
我们怎么知道新大门造得好不好? 我们会给它做测试:
- 测试必须登录才能用。
- 测试一次返回全部回答的样子对不对。
- 测试“一点一点流回来”时,事件的顺序对不对,最后有没有说
[DONE]。 - 测试带着不同“用户”信息时,能不能找到正确的对话。
我们也会用
curl命令(一个在电脑上模拟访问的工具)手动试试,看看事件是不是按顺序来的。
最后,我们会更新说明书:
- 为新大门
/v1/responses写全新的使用说明和例子。 - 在旧的 OpenAI 大门说明页面上,加一个提示,告诉大家那是老版本的,并指路到新大门。