从OpenAI Assistants API看厂商对Agent生态的战略布局
让我们先把时间倒回到2022年11月ChatGPT发布的那天——就像人类第一次发明了电话亭,突然之间所有人都能对着一个神奇的小盒子(或者网页)提问,从写代码到写情书,从解数学题到翻译古文,ChatGPT无所不能(至少看起来是)。ChatGPT就像一个只会“临时帮忙”的钟点工,做完一件事就忘了你是谁,也不会用你家的工具。先把这3个月的支付宝、微信、银行卡账单(一共500多条,还有PDF格式的电子发票
从OpenAI Assistants API看厂商对Agent生态的战略布局
关键词:OpenAI Assistants API、AI Agent、Agent生态、厂商战略布局、大模型应用落地、多模态Agent、工具链集成
摘要:2023年11月6日OpenAI DevDay引爆全球AI圈的不只是GPT-4 Turbo的降价与升级,还有完整的Agent开发基础设施——Assistants API。本文将像拆解一台精密的太空望远镜一样,从问题背景、核心概念、技术原理、厂商战略逻辑、行业案例对比、未来发展趋势等维度一步一步(Let’s Think Step by Step)抽丝剥茧:首先用生活中的「全职AI管家」故事引出Agent生态的全貌;然后深入剖析Assistants API的三大核心组件(Thread/Assistant/Run)、多模态支持、工具调用的技术本质,并用Mermaid流程图和实体关系图梳理结构;接着对比OpenAI与Anthropic Claude、Google Gemini、阿里通义千问、腾讯混元的Agent开发方案,从平台能力、战略意图、市场定位三个维度做对比表格;最后通过一个完整的Python实战项目(个人财务多模态智能顾问Agent)展示Assistants API的落地,再探讨当前Agent生态的边界挑战、厂商布局的历史演变、未来的垂直化与去中心化趋势。全文将用小学生也能听懂的「厨房机器人」「快递包裹链」等比喻,把复杂的技术和商业逻辑讲得清晰透彻,让读者不仅能学会用Assistants API做Agent,更能站在行业高度理解这场AI应用的「工业革命」。
背景介绍
问题背景:从「问AI一句话」到「让AI做十件事」的需求跃迁
让我们先把时间倒回到2022年11月ChatGPT发布的那天——就像人类第一次发明了电话亭,突然之间所有人都能对着一个神奇的小盒子(或者网页)提问,从写代码到写情书,从解数学题到翻译古文,ChatGPT无所不能(至少看起来是)。但用了半年之后,很多人都发现了一个大问题:ChatGPT就像一个只会“临时帮忙”的钟点工,做完一件事就忘了你是谁,也不会用你家的工具。
比如你想让ChatGPT帮你管理3个月的个人财务,需要:
- 先把这3个月的支付宝、微信、银行卡账单(一共500多条,还有PDF格式的电子发票)上传给它
- 让它识别PDF里的报销金额
- 把所有账单分类(餐饮、交通、购物、娱乐、医疗)
- 算出每个分类的总支出、占比,找出超支最多的项目
- 给你生成一个月度预算调整建议
- 提醒你明天有一笔信用卡还款
- 把整理好的Excel账单和预算报告发到你的邮箱
如果用普通的ChatGPT对话,你得怎么做?
- 首先要把所有账单一条一条复制粘贴进去,PDF还要自己转成文本(钟点工不会用你家的扫描仪)
- 每次对话最多只能发4096个token(GPT-3.5-turbo的情况),你得分成100多次对话发(钟点工每次最多看一页纸)
- 发完之后钟点工就忘了前面发的账单,你得每次提醒它「我前面发了3个月的餐饮账单,现在继续发交通的」(钟点工记性太差,超过一页就忘)
- 分类的时候如果分类错了,你得重新说一遍分类规则,它又要重新分类(钟点工不会记你的习惯)
- 最后生成预算报告和Excel,你得自己手动下载Excel模板填数据,手动写邮件发(钟点工不会用你家的Excel和邮箱软件)
这太麻烦了! 就像你花了大价钱请了个只会说话的钟点工,却连拖地、洗碗、做饭都不会,连你喜欢吃甜豆腐脑还是咸豆腐脑都记不住。用户的需求已经从「一次性提问,一次性回答」的「查询式AI」,跃迁到了「长期记忆,自主规划,使用工具,完成多步骤复杂任务」的「代理式AI(Agent)」。
这时候,AI厂商们就看到了一个巨大的机会:以前卖的是“电话亭”(ChatGPT等聊天机器人),现在要卖的是“智能房子”的全套基础设施——包括能长期存储记忆的“记忆抽屉”、能调用各种工具的“工具架”、能自主规划任务的“大脑”、能和你持续对话的“聊天界面”。谁先搭建好这套基础设施,谁就能掌控未来的AI应用生态——就像苹果先搭建了App Store,掌控了移动互联网生态一样。
问题描述:当前AI Agent开发的三大痛点
虽然需求很迫切,但在OpenAI Assistants API发布之前,开发一个好用的Agent真的太难了!就像你要自己盖一座智能房子,没有现成的图纸、没有现成的材料、没有现成的装修队,一切都得自己来。具体来说,有三大痛点:
痛点一:上下文管理太复杂
普通的ChatGPT对话是“无状态”的——每次对话都是独立的,模型不会记住之前的对话内容。要让模型有记忆,开发者得自己实现「上下文窗口管理」:
- 把用户的每一条输入和模型的每一条输出都存到数据库里(比如Redis、MongoDB)
- 每次调用模型API之前,从数据库里取出最近的N条对话,拼接成一个长长的prompt,控制在模型的上下文窗口大小以内(比如GPT-4 Turbo是128K token,大概100万字左右)
- 如果对话太长超过了上下文窗口,还得自己实现「记忆压缩」或者「记忆检索」——比如用向量数据库(Pinecone、Chroma)把对话内容转成向量,每次只检索和当前任务相关的对话内容
就像你要自己盖一座“记忆抽屉柜”,抽屉的大小是固定的(模型的上下文窗口),如果抽屉装不下了,你得自己把旧的、没用的东西扔掉(记忆压缩),或者把东西分类存放,每次只拿需要的那个抽屉(记忆检索)——这太麻烦了,而且对开发者的技术要求很高,不是随便一个人就能做的。
痛点二:工具调用太麻烦
要让Agent使用工具(比如搜索引擎、计算器、Excel、邮箱、数据库),开发者得自己实现「工具调用逻辑」:
- 首先要定义工具的“接口描述”——比如告诉模型「这个工具叫“计算器”,输入是数学表达式(比如“2+3*5”),输出是计算结果」
- 然后每次调用模型API的时候,要把所有工具的接口描述都拼接到prompt里
- 模型如果决定要调用工具,会返回一个JSON格式的工具调用请求(比如
{"tool_name": "calculator", "input": "2+3*5"}) - 开发者得自己解析这个JSON请求,调用对应的工具,拿到工具的输出结果
- 最后再把工具的输出结果拼接到下一次的prompt里,再调用模型API,让模型根据工具的结果继续回答或者继续调用工具
就像你要自己给钟点工配一个“工具说明书”,每次钟点工要干活的时候,都得先看一遍说明书,然后告诉你它要用哪个工具,你得自己把工具递给它,等它用完了再把结果拿回来,再让它继续干活——这太繁琐了,而且很容易出错,比如JSON解析失败、工具调用超时、结果格式不对等等。
痛点三:多步骤任务规划太困难
普通的模型只能做“单步骤推理”——比如你问它「2+3*5等于多少」,它能直接算出结果;但你问它「帮我管理3个月的个人财务」,它就不知道该怎么做了,只能说「请把账单发给我」,然后等你发完账单再继续。要让Agent做“多步骤自主规划”,开发者得自己实现「任务分解逻辑」或者「思维链(Chain of Thought, CoT)」「思维树(Tree of Thought, ToT)」「ReAct(Reasoning + Acting)」等高级提示工程技术。
就像你要自己给钟点工写一份“详细的工作流程表”,比如「第一步:让用户发账单;第二步:识别PDF里的电子发票;第三步:把所有账单分类;第四步:算出总支出;第五步:生成预算报告」——但如果用户的账单格式不对,或者PDF识别失败,或者分类错了,钟点工就不知道该怎么处理了,你得不断地修改工作流程表——这太耗时了,而且很难适应各种复杂的场景。
问题解决:OpenAI Assistants API的出现——给开发者的「智能房子精装修套餐」
2023年11月6日OpenAI DevDay,OpenAI一次性推出了完整的Agent开发基础设施——Assistants API,就像苹果当年推出iOS SDK和App Store一样,彻底降低了Agent开发的门槛:
- 上下文管理不用愁了:OpenAI给你配了一个「Thread(线程)」——相当于一个无限大的“记忆抽屉柜”,你可以把所有的对话内容(包括用户输入、模型输出、工具调用结果)都存到Thread里,OpenAI会自动帮你管理上下文窗口,自动压缩或者检索记忆,你不需要自己写一行代码!
- 工具调用不用烦了:OpenAI给你配了一个「Tool(工具)」——支持三种内置工具(Code Interpreter代码解释器、Retrieval检索知识库、Function Calling自定义函数调用),你只需要简单地配置一下工具的参数,OpenAI会自动帮你处理工具调用的所有逻辑(JSON解析、工具调用、结果拼接),你不需要自己写一行代码!
- 多步骤任务规划不用怕了:OpenAI给你配了一个「Run(运行)」——相当于一个“任务管理器”,你可以把Thread和Assistant(助手,相当于Agent的“大脑”,包含了模型选择、系统提示词、工具配置)绑定在一起,然后启动一个Run,OpenAI会自动帮你规划任务、调用工具、管理记忆,直到任务完成或者需要用户输入,你不需要自己写一行代码!
就像你买了一套OpenAI的「智能房子精装修套餐」——图纸有了(Thread/Assistant/Run的架构)、材料有了(三种内置工具)、装修队有了(OpenAI的服务器),你只需要做一件事:告诉装修队你想要什么样的房子(设置Assistant的系统提示词和工具配置),剩下的所有事情都交给OpenAI!
预期读者
本文的预期读者非常广泛,不管你是:
- AI小白:想了解什么是Agent生态,什么是Assistants API,为什么它这么重要
- 普通开发者:想学会用Assistants API做一个自己的Agent
- 高级开发者/架构师:想深入理解Assistants API的技术原理,对比不同厂商的Agent开发方案,思考未来的技术选型
- 产品经理/创业者:想站在行业高度理解厂商对Agent生态的战略布局,寻找AI应用的创业机会
文档结构概述
本文将按照以下结构展开,每个部分都会用「一步一步分析推理」的方式,把复杂的内容讲得清晰透彻:
- 背景介绍:已经讲完了,包括问题背景、问题描述、问题解决
- 核心概念与联系:用「全职AI管家」的故事引出核心概念,然后像给小学生讲故事一样解释Assistants API的三大核心组件(Thread/Assistant/Run)、三种内置工具、多模态支持,再用实体关系图和交互关系图梳理概念之间的联系
- 核心算法原理 & 具体操作步骤:深入剖析Assistants API的上下文管理算法(比如滑动窗口、记忆压缩、向量检索)、工具调用算法(比如Function Calling的训练数据、JSON Schema的生成)、多步骤任务规划算法(比如ReAct的增强版),然后给出具体的操作步骤(比如如何在OpenAI Playground里创建一个Assistant)
- 数学模型和公式 & 详细讲解 & 举例说明:虽然Assistants API的核心算法大部分是OpenAI的商业秘密,但我们可以用一些公开的数学模型来解释它的原理,比如向量相似度的计算(余弦相似度)、滑动窗口的token计数、记忆压缩的压缩比
- 项目实战:个人财务多模态智能顾问Agent:用Python写一个完整的实战项目,包括开发环境搭建、系统功能设计、系统架构设计、系统接口设计、系统核心实现源代码、代码解读与分析
- 厂商对Agent生态的战略布局对比:对比OpenAI Assistants API、Anthropic Claude Tools、Google Gemini API、阿里通义千问Agent平台、腾讯混元Agent Studio,从平台能力、战略意图、市场定位三个维度做对比表格,用实体关系图梳理厂商与Agent生态的关系
- 当前Agent生态的边界与外延:探讨当前Agent生态的边界(比如推理能力的局限性、工具调用的可靠性、隐私安全的问题)和外延(比如垂直化Agent、去中心化Agent、多Agent协作)
- 行业发展与未来趋势:用表格梳理Agent生态的历史演变,探讨未来的发展趋势(比如多模态Agent的普及、工具链的标准化、Agent市场的形成)
- 总结:学到了什么?:简要回顾本文的主要内容,再次用通俗易懂的语言强调核心概念和它们之间的关系
- 思考题:动动小脑筋:提出一些思考题,鼓励读者进一步思考和应用所学知识
- 附录:常见问题与解答:解答一些读者可能会遇到的常见问题
- 扩展阅读 & 参考资料:列出一些扩展阅读和参考资料
术语表
核心术语定义
- AI Agent(代理式AI):一种能够长期记忆、自主规划、使用工具、完成多步骤复杂任务的AI系统,就像一个全职的AI管家。
- OpenAI Assistants API:OpenAI在2023年11月6日DevDay推出的完整Agent开发基础设施,包含Thread、Assistant、Run三大核心组件,支持三种内置工具(Code Interpreter、Retrieval、Function Calling)和多模态输入输出。
- Thread(线程):Assistants API中的“记忆抽屉柜”,用于存储用户和Agent之间的所有对话内容(包括用户输入、模型输出、工具调用结果),是无状态的对话系统到有状态的Agent系统的核心。
- Assistant(助手):Assistants API中的“Agent大脑”,包含了模型选择(比如GPT-4 Turbo、GPT-3.5-turbo-1106)、系统提示词(告诉Agent要做什么、怎么做)、工具配置(告诉Agent可以用哪些工具)。
- Run(运行):Assistants API中的“任务管理器”,用于将Thread和Assistant绑定在一起,启动后会自动规划任务、调用工具、管理记忆,直到任务完成或者需要用户输入。
- Context Window(上下文窗口):大语言模型一次能够处理的最大token数量(比如GPT-4 Turbo是128K token,GPT-3.5-turbo-1106是16K token),token可以理解为“单词的一部分”或者“汉字的1-2个”。
- Vector Database(向量数据库):一种专门用于存储和检索向量的数据库,向量可以理解为“数字标签”,每个数字标签代表一段文本、一张图片或者一段音频的语义信息,通过计算向量之间的相似度(比如余弦相似度),可以快速检索到和当前内容相关的历史内容。
相关概念解释
- 查询式AI(Search-based AI):一种只能“一次性提问,一次性回答”的AI系统,没有长期记忆,不会使用工具,比如普通的ChatGPT对话、百度搜索。
- 提示工程(Prompt Engineering):一种通过设计精心的提示词(prompt)来引导大语言模型输出期望结果的技术,比如思维链(Chain of Thought, CoT)、思维树(Tree of Thought, ToT)、ReAct(Reasoning + Acting)。
- Function Calling(函数调用):一种让大语言模型能够调用外部工具(比如搜索引擎、计算器、数据库)的技术,模型会根据提示词决定是否调用工具、调用哪个工具、输入什么参数,开发者只需要实现工具的具体逻辑即可。
- Code Interpreter(代码解释器):OpenAI Assistants API的一种内置工具,能够让Agent在一个安全的沙箱环境中运行Python代码,完成数据分析、图表生成、文件处理、数学计算等任务。
- Retrieval(检索知识库):OpenAI Assistants API的一种内置工具,能够让Agent检索用户上传的知识库(比如PDF、Word、Excel、TXT文件),回答和知识库相关的问题,是构建企业内部知识库助手的核心。
- 多模态AI(Multimodal AI):一种能够处理多种模态数据(比如文本、图片、音频、视频)的AI系统,比如GPT-4 Turbo with Vision(能够识别图片)、GPT-4o(能够识别图片、音频、视频,还能生成音频、视频)。
缩略词列表
- API:Application Programming Interface(应用程序编程接口)
- AI:Artificial Intelligence(人工智能)
- LLM:Large Language Model(大语言模型)
- CoT:Chain of Thought(思维链)
- ToT:Tree of Thought(思维树)
- ReAct:Reasoning + Acting(推理+行动)
- JSON:JavaScript Object Notation(JavaScript对象表示法,一种轻量级的数据交换格式)
- PDF:Portable Document Format(便携式文档格式)
- Excel:Microsoft Excel(微软的电子表格软件)
- SDK:Software Development Kit(软件开发工具包)
核心概念与联系
故事引入:小明的「全职AI管家小艾」
让我们用一个生活中的「全职AI管家」故事来引出Assistants API的核心概念——小明是一个在北京工作的程序员,月薪3万,但每个月都存不下钱,因为他总是乱花钱,而且从来不会管理自己的财务。他非常希望有一个全职的AI管家,能够帮他:
- 长期记住他的所有财务信息:包括支付宝、微信、银行卡的账单,PDF格式的电子发票,他的工资卡、信用卡、理财账户的信息,他的消费习惯(比如喜欢吃火锅、喜欢买电子产品)
- 自主规划财务任务:比如每天早上帮他整理前一天的账单,每个月的1号帮他整理上个月的财务报告,每个月的25号提醒他还信用卡,每年的年底帮他整理年度财务报告
- 使用各种工具:比如用代码解释器处理Excel账单、生成财务图表,用检索知识库查看他上传的公司报销制度,用自定义函数调用查看他的银行账户余额、信用卡账单,用自定义函数调用把财务报告发到他的邮箱
- 持续和他对话:比如他问小艾「我这个月超支了多少钱?」,小艾能直接回答;他问小艾「我这个月能不能买一台新的MacBook Pro?」,小艾能根据他的财务状况给出建议;他问小艾「公司报销的流程是什么?」,小艾能从他上传的公司报销制度里找到答案
有一天,小明听说了OpenAI Assistants API,他决定用这个API来做一个自己的「全职AI管家小艾」。他是怎么做的呢?
- 第一步:创建一个Assistant(小艾的大脑):小明在OpenAI Playground里创建了一个叫「小艾-个人财务多模态智能顾问」的Assistant,选择了GPT-4 Turbo with Vision模型(因为要识别PDF和图片格式的电子发票),设置了系统提示词(告诉小艾要做什么、怎么做),配置了三种工具:Code Interpreter(处理Excel、生成图表)、Retrieval(查看公司报销制度)、Function Calling(查看银行账户余额、信用卡账单、发邮件)
- 第二步:创建一个Thread(小艾的记忆抽屉柜):小明创建了一个叫「小明的私人财务记录」的Thread,这个Thread会永久保存小明和小艾之间的所有对话内容
- 第三步:向Thread里添加用户消息(告诉小艾要做什么):小明把这3个月的支付宝、微信、银行卡的Excel账单(一共500多条)和PDF格式的电子发票(一共50多张)上传到了Thread里的用户消息里,然后说「小艾,帮我整理这3个月的个人财务,包括分类所有账单、算出每个分类的总支出和占比、找出超支最多的项目、生成月度预算调整建议、生成财务图表、把整理好的Excel账单和预算报告发到我的邮箱xiaoming@example.com」
- 第四步:启动一个Run(让小艾开始工作):小明把Thread和Assistant绑定在一起,启动了一个Run,然后就去喝咖啡了
- 第五步:等待Run完成(查看小艾的工作结果):过了大概10分钟,Run完成了,小明打开Thread,看到小艾已经:
- 用Code Interpreter处理了所有Excel账单,把PDF格式的电子发票转成了文本并识别了报销金额
- 把所有账单分类成了餐饮、交通、购物、娱乐、医疗、理财、报销等7个分类
- 算出了每个分类的总支出和占比,找出超支最多的项目是娱乐(花了5000多,占总支出的25%)
- 生成了月度预算调整建议(比如把娱乐预算从2000降到1000,把交通预算从1500降到1000,多出来的1500存到理财账户里)
- 用Code Interpreter生成了三张财务图表:月度总支出趋势图、各分类支出占比饼图、超支项目柱状图
- 用自定义函数调用把整理好的Excel账单、预算报告、财务图表发到了他的邮箱xiaoming@example.com
- 最后说「主人,您的3个月个人财务已经整理好了,报告和图表已经发到您的邮箱里了。您这个月的娱乐支出超支了3000多,建议您适当控制一下哦!」
小明非常高兴!他终于有了一个自己的「全职AI管家小艾」,而且只用了不到一个小时的时间就做好了,没有写一行复杂的代码——这就是OpenAI Assistants API的魔力!
核心概念解释(像给小学生讲故事一样)
接下来,我们像给小学生讲故事一样,用「厨房机器人」「快递包裹链」「玩具积木」等比喻,详细解释Assistants API的三大核心组件(Thread/Assistant/Run)、三种内置工具、多模态支持。
核心概念一:Assistant(助手)——厨房机器人的「大脑+身体配件」
让我们把Assistant比作一个「厨房机器人」:
- 模型选择:相当于厨房机器人的「大脑」——比如你选GPT-4 Turbo with Vision,就是给厨房机器人装了一个「超级聪明的眼睛+大脑」,它能看到食材(图片、PDF)、能思考复杂的菜谱(多步骤任务);如果你选GPT-3.5-turbo-1106,就是给厨房机器人装了一个「普通的大脑」,它能做简单的菜,但看不到食材,也不会思考太复杂的菜谱。
- 系统提示词:相当于厨房机器人的「使用说明书」——比如你告诉它「你是一个专业的川菜厨师,只做正宗的川菜,不要放盐太多,不要放辣椒太多」,它就会按照你的要求做菜;如果你告诉它「你是一个专业的糕点师,只做生日蛋糕,要放很多奶油,要放很多水果」,它就会按照你的要求做生日蛋糕。
- 工具配置:相当于厨房机器人的「身体配件」——比如你给它装了「打蛋器」「烤箱」「冰箱」「刀具」,它就能用这些配件做蛋糕;如果你给它装了「炒锅」「蒸锅」「电饭煲」「刀具」,它就能用这些配件做川菜;如果你给它装了「自定义工具」(比如「自动切菜机」「自动洗菜机」),它就能用这些自定义工具更快地做菜。
核心概念二:Thread(线程)——快递包裹链的「运输箱」
让我们把Thread比作一个「快递包裹链的运输箱」:
- 运输箱是永久的:你可以把所有要给厨房机器人的东西(比如食材、菜谱要求、之前做过的菜的评价)都放到这个运输箱里,这个运输箱会一直保存着,不会消失——就像小明的「私人财务记录」Thread,会永久保存他和小艾之间的所有对话内容。
- 运输箱里的东西是按顺序放的:你把东西放到运输箱里的顺序,就是厨房机器人拿到东西的顺序——比如你先放「食材清单」,再放「菜谱要求」,最后放「之前做过的菜的评价」,厨房机器人就会先看食材清单,再看菜谱要求,最后看之前的评价。
- 运输箱里的东西可以是任何模态的:你可以把文本(比如菜谱要求)、图片(比如食材的照片)、PDF(比如菜谱的PDF文件)、Excel(比如食材的采购清单)都放到这个运输箱里——就像小明把Excel账单、PDF电子发票都放到了Thread里的用户消息里。
核心概念三:Run(运行)——厨房机器人的「启动按钮+监控器」
让我们把Run比作一个「厨房机器人的启动按钮+监控器」:
- 启动按钮:你按一下启动按钮,厨房机器人就会从运输箱里拿出所有东西,然后开始工作——比如你把食材清单、菜谱要求、之前的评价都放到运输箱里,按一下启动按钮,厨房机器人就会开始做菜。
- 监控器:监控器会实时显示厨房机器人的工作状态——比如「正在准备食材」「正在切菜」「正在炒菜」「菜做好了」「需要用户帮忙尝一下咸淡」;如果厨房机器人遇到了问题(比如食材不够了、烤箱坏了),监控器会显示「遇到问题,需要用户帮助」。
- 工作完成后会停止:当厨房机器人把菜做好了,或者需要用户帮忙尝一下咸淡,它就会停止工作——比如小艾把财务报告发到邮箱里了,或者需要小明确认一下某个账单的分类,它就会停止工作,等待小明的下一步指令。
核心概念四:Code Interpreter(代码解释器)——厨房机器人的「万能厨房电器」
让我们把Code Interpreter比作一个「万能厨房电器」:
- 什么都能做:这个万能厨房电器既能切菜、洗菜、炒菜,又能做蛋糕、面包、披萨,还能洗碗、擦桌子——就像Code Interpreter既能处理Excel、Word、PDF文件,又能生成图表、图像、音频,还能做数学计算、数据分析、机器学习。
- 在安全的环境中运行:这个万能厨房电器是在一个密封的、安全的厨房里运行的,不会弄坏你家的东西,也不会把你家的东西偷出去——就像Code Interpreter是在一个安全的沙箱环境中运行的,不会访问你的本地文件系统,也不会访问互联网(除非你用自定义函数调用让它访问)。
- 用完之后会清理干净:当厨房机器人用完这个万能厨房电器之后,它会自动清理干净,不会留下任何垃圾——就像Code Interpreter运行完Python代码之后,沙箱环境会自动销毁,不会留下任何数据。
核心概念五:Retrieval(检索知识库)——厨房机器人的「菜谱大全」
让我们把Retrieval比作一个「厨房机器人的菜谱大全」:
- 什么菜谱都有:这个菜谱大全里有川菜、粤菜、湘菜、鲁菜、苏菜、浙菜、闽菜、徽菜等八大菜系的菜谱,还有西餐、日料、韩料等外国菜的菜谱,还有蛋糕、面包、披萨等甜点的菜谱——就像Retrieval能让Agent检索你上传的任何知识库(比如PDF、Word、Excel、TXT文件)。
- 能快速找到你想要的菜谱:如果你告诉厨房机器人「我想做麻婆豆腐」,它能在1秒钟之内从菜谱大全里找到麻婆豆腐的菜谱——就像Retrieval能用向量数据库快速检索到和当前问题相关的知识库内容。
- 能理解菜谱的意思:厨房机器人不是机械地照着菜谱念,而是能理解菜谱的意思——比如如果菜谱里说「放适量的盐」,它能根据你之前的口味习惯(比如你喜欢吃淡一点)放适量的盐——就像Retrieval不是机械地返回知识库的原文,而是能结合上下文理解知识库的意思,给出准确的回答。
核心概念六:Function Calling(自定义函数调用)——厨房机器人的「自定义厨房工具」
让我们把Function Calling比作一个「厨房机器人的自定义厨房工具」:
- 你可以自己做工具:如果你觉得万能厨房电器(Code Interpreter)和菜谱大全(Retrieval)不够用,你可以自己做一个工具——比如你可以自己做一个「自动切菜机」「自动洗菜机」「自动买菜机器人」——就像Function Calling能让你自己定义一个函数(工具),实现任何你想要的功能(比如查看银行账户余额、信用卡账单、发邮件、访问互联网)。
- 厨房机器人会用这个工具:你只需要告诉厨房机器人这个工具的「名字」「用途」「怎么用」,它就会用这个工具——比如你告诉厨房机器人「这个工具叫“自动买菜机器人”,用途是去超市买菜,怎么用是输入你要买的食材清单,输出是食材的价格和预计送达时间」,它就会用这个工具去买菜——就像Function Calling只需要你定义一个JSON Schema(告诉模型工具的名字、用途、输入参数、输出参数),它就会自动帮你处理工具调用的所有逻辑。
- 工具可以连接到任何地方:这个自定义工具可以连接到你的冰箱、你的超市会员账户、你的外卖平台——就像Function Calling可以连接到你的数据库、你的API、你的第三方服务(比如支付宝、微信、银行、邮箱)。
核心概念七:多模态支持——厨房机器人的「超级眼睛+超级耳朵+超级嘴巴」
让我们把多模态支持比作一个「厨房机器人的超级眼睛+超级耳朵+超级嘴巴」:
- 超级眼睛:厨房机器人能看到食材的照片、菜谱的图片、你家厨房的照片——比如你给它看一张「西红柿炒鸡蛋」的照片,它能告诉你这道菜做得好不好,哪里需要改进——就像GPT-4 Turbo with Vision能识别图片、PDF中的图片,回答和图片相关的问题。
- 超级耳朵:厨房机器人能听到你的声音——比如你不用打字,直接对着它说「帮我做麻婆豆腐」,它就能听懂你的意思——就像GPT-4o能识别音频,还能生成音频,和你进行语音对话。
- 超级嘴巴:厨房机器人能发出声音,还能生成视频——比如它能对着你说「麻婆豆腐做好了,快来尝一下」,还能生成一段「麻婆豆腐的制作过程」的视频——就像GPT-4o能生成音频,未来还能生成视频。
核心概念之间的关系(用小学生能理解的比喻)
接下来,我们用「厨房机器人做麻婆豆腐」的例子,解释核心概念之间的关系。
关系一:Assistant和Thread的关系——大脑和记忆抽屉柜的关系
Assistant是厨房机器人的「大脑+身体配件」,Thread是「记忆抽屉柜」——大脑需要记忆抽屉柜里的东西(比如食材清单、菜谱要求、之前做过的菜的评价)才能工作,记忆抽屉柜需要大脑才能把东西变成有用的结果(比如麻婆豆腐)。
就像小明的「小艾-个人财务多模态智能顾问」Assistant,需要「小明的私人财务记录」Thread里的Excel账单、PDF电子发票才能整理财务报告;「小明的私人财务记录」Thread需要「小艾」Assistant才能把账单变成有用的财务报告。
关系二:Thread和Run的关系——运输箱和启动按钮+监控器的关系
Thread是「快递包裹链的运输箱」,Run是「启动按钮+监控器」——你需要把东西放到运输箱里,然后按一下启动按钮,监控器才会显示厨房机器人的工作状态;如果没有运输箱,启动按钮按了也没用;如果没有启动按钮,运输箱里的东西永远不会变成有用的结果。
就像小明把Excel账单、PDF电子发票放到「小明的私人财务记录」Thread里,然后启动一个Run,小艾才会开始整理财务报告;如果没有Thread,Run启动了也没用;如果没有Run,Thread里的账单永远不会变成有用的财务报告。
关系三:Assistant和Run的关系——大脑+身体配件和启动按钮+监控器的关系
Assistant是「大脑+身体配件」,Run是「启动按钮+监控器」——你需要给大脑+身体配件按一下启动按钮,它才会开始工作;监控器会实时显示大脑+身体配件的工作状态;如果没有大脑+身体配件,启动按钮按了也没用;如果没有启动按钮,大脑+身体配件永远不会开始工作。
就像小明给「小艾」Assistant按一下Run的启动按钮,小艾才会开始整理财务报告;Run会实时显示小艾的工作状态(比如「正在处理Excel账单」「正在识别PDF电子发票」「正在生成财务图表」);如果没有「小艾」Assistant,Run启动了也没用;如果没有Run,「小艾」Assistant永远不会开始工作。
关系四:Assistant和三种内置工具的关系——大脑+身体配件和万能厨房电器、菜谱大全、自定义厨房工具的关系
Assistant是「大脑+身体配件」,三种内置工具是「万能厨房电器、菜谱大全、自定义厨房工具」——大脑需要这些工具才能完成复杂的任务;身体配件就是这些工具;如果没有这些工具,大脑只能做简单的任务(比如回答问题、写文本)。
就像「小艾」Assistant需要Code Interpreter(万能厨房电器)处理Excel账单、生成财务图表,需要Retrieval(菜谱大全)查看公司报销制度,需要Function Calling(自定义厨房工具)查看银行账户余额、发邮件;如果没有这些工具,「小艾」Assistant只能回答和财务相关的简单问题(比如「什么是资产负债表?」),不能整理财务报告。
核心概念原理和架构的文本示意图(专业定义)
接下来,我们用专业的定义,给出Assistants API的核心概念原理和架构的文本示意图:
┌─────────────────────────────────────────────────────────────────────────────────┐
│ OpenAI Assistants API 架构层 │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────────────────────┐ │
│ │ 应用层(Your Application) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Web App │ │ Mobile App │ │ Desktop App│ │ CLI Tool │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────────┘ │
│ ↓↑ │
│ ┌───────────────────────────────────────────────────────────────────────────┐ │
│ │ OpenAI Assistants API 接口层(API Layer) │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Assistant API │ │ Thread API │ │ Run API │ │ │
│ │ │ - Create │ │ - Create │ │ - Create │ │ │
│ │ │ - Retrieve │ │ - Retrieve │ │ - Retrieve │ │ │
│ │ │ - Update │ │ - Add Message │ │ - Cancel │ │ │
│ │ │ - Delete │ │ - List Messages │ │ - List Steps │ │ │
│ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────────┘ │
│ ↓↑ │
│ ┌───────────────────────────────────────────────────────────────────────────┐ │
│ │ OpenAI Assistants API 核心层(Core Layer) │ │
│ │ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Assistant │ │ Thread │ │ Run │ │ │
│ │ │ - Model │ │ - Messages │ │ - Status │ │ │
│ │ │ - Instructions │ │ - Metadata │ │ - Steps │ │ │
│ │ │ - Tools │ │ │ │ - Last Error │ │ │
│ │ │ - Metadata │ │ │ │ - Metadata │ │ │
│ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Tools Layer(工具层) │ │ │
│ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────┐ │ │ │
│ │ │ │ Code Int │ │ Retrieval │ │ Function Calling │ │ │ │
│ │ │ │ - Sandbox │ │ - Vector DB │ │ - User-defined Functions │ │ │ │
│ │ │ │ - Python │ │ - Embedding │ │ - JSON Schema │ │ │ │
│ │ │ │ - File I/O │ │ - Chunking │ │ - External API/Service │ │ │ │
│ │ │ └─────────────┘ └─────────────┘ └─────────────────────────────┘ │ │ │
│ │ └───────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ LLM Layer(大语言模型层) │ │ │
│ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │
│ │ │ │ GPT-4o │ │ GPT-4 Turbo│ │ GPT-4 │ │ GPT-3.5 │ │ │ │
│ │ │ │ - Multimodal│ │ - 128K CTX │ │ - 8K/32K │ │ - 16K/128K │ │ │ │
│ │ │ │ - Audio │ │ - Vision │ │ - Vision │ │ - Fast │ │ │ │
│ │ │ │ - Video │ │ - Fast │ │ - Smart │ │ - Cheap │ │ │ │
│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │
│ │ └───────────────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
从这个文本示意图可以看出,OpenAI Assistants API的架构分为四层:
- 应用层(Your Application):这是开发者自己开发的应用,比如Web App、Mobile App、Desktop App、CLI Tool,用户通过这个应用和Agent交互。
- 接口层(API Layer):这是OpenAI提供的API接口,开发者通过这些接口创建、检索、更新、删除Assistant、Thread、Run,向Thread里添加消息,列出Run的步骤。
- 核心层(Core Layer):这是Assistants API的核心,包含Assistant、Thread、Run三大核心组件,以及工具层(Tools Layer)和大语言模型层(LLM Layer)。
- 基础设施层(虽然文本示意图里没画,但实际上是存在的):这是OpenAI的基础设施,比如服务器、数据库、向量数据库、代码沙箱,用来支撑Assistants API的运行。
核心概念联系的ER实体关系图(Mermaid)
接下来,我们用Mermaid ER图(Entity-Relationship Diagram,实体关系图)梳理核心概念之间的实体关系:
更多推荐



所有评论(0)