语义内核(Semantic Kernel)在 Agent 开发中的应用

张开发
2026/6/3 15:40:41 15 分钟阅读
语义内核(Semantic Kernel)在 Agent 开发中的应用
语义内核(Semantic Kernel)在 Agent 开发中的应用:从“只会说话的聊天机器人”到“能解决问题的超级助手”的魔法钥匙关键词:语义内核 Semantic Kernel Agent 开发 LLM 编排 插件系统 工具调用 智能体架构摘要:本文将像给小学生组装乐高机器人一样,从“为什么 Agent 需要魔法内核”的故事讲起,带你一步一步拆解 Semantic Kernel(SK)的核心概念、架构、数学模型、算法原理,并用 Python 完整实现一个“帮你完成周末作业后还能推荐电影并订票的智能学习娱乐助手 Agent”,最后聊聊 SK 的最佳实践、未来趋势和常见坑点。读完这篇文章,你不仅能听懂 SK 的专业术语,还能亲手搭出一个属于自己的、会思考会干活的“小天才智能体”!背景介绍:为什么我们的聊天机器人“笨笨的”?目的和范围目的彻底搞懂什么是 Semantic Kernel:不是代码库里的一个函数,也不是 LLM 的一个新功能,而是连接“只会理解和生成自然语言的大脑(LLM)”和“能处理具体任务的手脚(工具/API/插件)”的智能中枢神经。掌握 SK 核心架构与组件:Kernel、Plugins、Prompts、Functions、Memory、Planner 这六大“乐高零件”的原理、用法和配合方式。学会用 SK 开发 Agent 的完整流程:从环境搭建、核心功能设计、插件开发到系统测试,一步都不落下。避开 SK 开发中的常见坑点:比如 Prompt 太啰嗦、Planner 选不对、Memory 没用好、工具调用超时等问题的解决方案。了解 SK 的未来发展趋势:看看微软和开源社区正在把 SK 往哪个方向升级,我们如何提前布局。范围核心工具:主要使用 Python 版 Semantic Kernel 1.x 最新稳定版(目前是 1.24.1),搭配 OpenAI GPT-4o mini 作为默认 LLM,ChromaDB 作为本地向量数据库,TMDb API 作为电影推荐插件,豆瓣 API 模拟作业数据库(或者用本地 CSV 文件简化)。不涉及的内容:C#/Java 版 SK 的详细用法(但原理通用)、企业级大规模 Agent 部署的负载均衡、SK 与其他 Agent 框架(LangChain、AutoGen、CrewAI)的详细对比(会有一个简单的属性维度表格)。预期读者对 LLM 有一定了解的编程小白:只要会写简单的 Python 代码(比如定义函数、读写文件),就能跟着这篇文章走完全程。想转型做 AI 应用开发的后端/前端工程师:了解如何将 LLM 融入到自己的项目中,而不是只会写 API 调用。AI 产品经理/架构师:了解 Agent 开发的底层逻辑和技术选型,为产品设计提供支持。高校计算机相关专业的学生:作为 AI 应用开发课程的补充材料,或者毕业设计的参考。文档结构概述本文的结构就像造房子一样,从“地基”(背景介绍、术语表)开始,然后搭“框架”(核心概念与联系、核心算法原理),接着装“水电暖”(数学模型和公式),再“装修”(项目实战、代码实现),最后“验收入住”(最佳实践、未来趋势、总结、思考题)。具体章节如下:背景介绍:讲清楚为什么需要 SK,本文的目的、范围、预期读者、术语表。核心概念与联系:用“乐高机器人组装”的故事引入 SK 的六大核心概念,解释它们之间的关系,给出专业的文本示意图和 Mermaid 流程图/架构图/ER 图,还有 SK 与其他框架的对比表格。核心算法原理 具体操作步骤:详细讲解 Planner 的核心算法(Stepwise Planner、Sequential Planner、Action Planner)、Memory 的检索算法(向量相似度搜索)、Prompt 的工程化方法(Chain-of-Thought、Few-Shot Learning),并用 Python 代码片段演示每个步骤。数学模型和公式 详细讲解 举例说明:讲解向量相似度搜索的数学模型(余弦相似度、欧氏距离、点积)、Planner 的决策数学模型(概率选择、最大熵)、Token 计算的数学模型,并用具体的例子(比如计算两个句子的余弦相似度、Planner 选择工具的概率)帮助理解。项目实战:智能学习娱乐助手 Agent 的完整实现:从开发环境搭建、系统功能设计、系统架构设计、系统接口设计到系统核心实现源代码,一步一步带你搭出一个完整的 Agent,还有详细的代码解读和测试用例。实际应用场景:举几个 SK 在企业级和消费级应用中的真实例子,比如微软 365 Copilot、GitHub Copilot X(部分功能用了 SK)、电商客服 Agent、医疗问诊 Agent、金融理财 Agent。工具和资源推荐:推荐一些 SK 开发中常用的工具(比如 Prompt 编辑器、向量数据库、API 测试工具)、学习资源(比如微软官方文档、GitHub 开源项目、YouTube 视频、中文社区)。未来发展趋势与挑战:用表格展示 Agent 开发和 SK 的发展历史,分析未来的发展趋势(比如多模态 SK、自主学习 SK、联邦学习 SK),讨论面临的挑战(比如安全性、可控性、成本、隐私)。总结:学到了什么?:用通俗易懂的语言回顾 SK 的核心概念、架构、应用,强调重点内容。思考题:动动小脑筋:提出几个思考题,鼓励读者进一步思考和应用所学知识。附录:常见问题与解答:整理一些 SK 开发中常见的问题和解答,比如如何处理 LLM 的幻觉、如何提高 Planner 的准确率、如何降低 SK 的成本。扩展阅读 参考资料:列出一些本文参考的资料和扩展阅读的推荐。术语表核心术语定义语义内核(Semantic Kernel, SK):微软开源的一个轻量级、可扩展的 AI 应用开发框架,用于将 LLM 与传统代码、工具、API、数据库连接起来,构建能够理解自然语言、执行复杂任务的智能体(Agent)。智能体(Agent):一个能够感知环境、做出决策、执行动作的软件实体,就像一个“小天才”——能听懂你说的话,能记住之前的对话,能调用各种工具,能解决复杂的问题。大语言模型(Large Language Model, LLM):一个训练了海量文本数据的神经网络模型,能够理解和生成自然语言,就像一个“超级大脑”——但它没有“手脚”,不会直接处理具体任务(比如查天气、订机票、写代码)。插件(Plugin):SK 中用来封装具体任务的代码模块,就像“小天才”的“手脚”——一个插件可以包含多个函数(Function),每个函数对应一个具体的动作(比如查天气、订机票、搜索电影)。内核(Kernel):SK 的核心中枢神经,就像“小天才”的“大脑中枢”——负责管理插件、函数、Prompt、Memory、Planner,协调它们之间的配合,完成用户的请求。提示词(Prompt):给 LLM 的“指令”,就像你给“小天才”说的“具体怎么做”——一个好的 Prompt 能让 LLM 给出准确的答案,一个差的 Prompt 会让 LLM 产生幻觉(胡说八道)。记忆(Memory):SK 中用来存储和检索信息的模块,就像“小天才”的“大脑记忆区”——可以存储用户的历史对话、知识库内容、之前执行任务的结果,帮助 LLM 更好地理解用户的需求,做出更准确的决策。规划器(Planner):SK 中用来生成任务执行计划的模块,就像“小天才”的“大脑思考区”——当用户提出一个复杂的请求(比如“帮我完成周末的数学作业,然后推荐一部评分 8.5 以上的科幻电影,最后订一张明天下午 3 点的票”)时,Planner 会把这个请求拆分成多个小步骤,然后调用相应的函数来完成。相关概念解释自然语言处理(Natural Language Processing, NLP):计算机科学的一个分支,研究如何让计算机理解和生成自然语言,LLM 是 NLP 领域的最新成果。向量数据库(Vector Database):一种专门用来存储和检索向量(embedding)的数据库,就像一个“超级字典”——可以把文本、图像、音频等数据转换成向量,然后通过计算向量之间的相似度来快速检索相关的内容。嵌入(Embedding):把文本、图像、音频等非结构化数据转换成固定长度的数值向量的过程,就像把“猫”、“狗”、“鸟”这些词转换成坐标点(比如(0.2, 0.5, 0.3)、(0.3, 0.4, 0.2)、(-0.1, 0.2, 0.6)),这样计算机就能通过计算坐标点之间的距离来判断这些词的相似程度。工具调用(Tool Calling):LLM 根据用户的请求调用外部工具(比如 API、插件、函数)来完成具体任务的过程,就像“小天才”用手机查天气、用电脑订机票一样。思维链(Chain-of-Thought, CoT):一种 Prompt 工程化方法,让 LLM 在回答问题之前先“思考一下”,把推理过程写出来,这样能显著提高 LLM 的准确率,就像你做数学题的时候先写解题步骤再写答案一样。少样本学习(Few-Shot Learning):一种 Prompt 工程化方法,给 LLM 提供几个(通常是 3-5 个)例子,让 LLM 学会如何完成任务,就像你教小朋友写字的时候先写几个例子让他模仿一样。零样本学习(Zero-Shot Learning):一种 Prompt 工程化方法,不给 LLM 提供任何例子,直接让 LLM 完成任务,就像你让小朋友自己想办法解决一个从来没见过的问题一样。缩略词列表缩略词英文全称中文全称SKSemantic Kernel语义内核LLMLarge Language Model大语言模型NLPNatural Language Processing自然语言处理CoTChain-of-Thought思维链Few-ShotFew-Shot Learning少样本学习Zero-ShotZero-Shot Learning零样本学习APIApplication Programming Interface应用程序编程接口CSVComma-Separated Values逗号分隔值GPTGenerative Pre-trained Transformer生成式预训练TransformerTMDbThe Movie Database电影数据库Copilot副驾驶微软的AI助手产品核心概念与联系:用乐高机器人组装的故事搞懂 SK故事引入各位小朋友(哦不,各位程序员大大),你们小时候有没有玩过乐高机器人?比如说乐高 Mindstorms EV3?如果玩过的话,你应该知道:乐高机器人的“大脑”:EV3 智能积木——它能听懂你用电脑编的程序,能控制机器人的“手脚”。乐高机器人的“手脚”:各种马达、传感器、按键——马达能让机器人走路、转动手臂,传感器能让机器人感知环境(比如光线、声音、距离),按键能让你手动控制机器人。乐高机器人的“程序”:你用电脑编的指令——告诉机器人什么时候启动马达、什么时候读取传感器、什么时候停止。乐高机器人的“电池”:给整个机器人供电的东西——没有电池,机器人就是一堆废塑料。现在,假设你想组装一个“帮你找书包、开门、关灯、倒水的乐高生活助手”,你需要怎么做?第一步:把 EV3 智能积木、各种马达、传感器、电池组装起来,搭成一个机器人的“身体”。第二步:给机器人编程——比如“当听到‘找书包’的声音时,启动距离传感器搜索,当检测到书包(假设书包上有个特殊的颜色块)时,启动马达走过去,然后用手臂抓住书包”。第三步:测试机器人——如果机器人找不到书包,就调整程序或者传感器的位置;如果机器人走得太慢,就调整马达的速度;如果机器人能顺利完成任务,那就大功告成啦!好了,现在我们把这个故事换成AI 应用开发的场景:乐高机器人的“身体”:Semantic Kernel 的框架——包括 Kernel、Plugins、Memory、Planner。乐高机器人的“大脑”:大语言模型(LLM)——比如 OpenAI GPT-4o mini、Claude 3 Haiku、Gemini 1.5 Flash。乐高机器人的“手脚”:插件(Plugin)——比如查天气的插件、订机票的插件、搜索电影的插件、写代码的插件。乐高机器人的“程序”:提示词(Prompt)——告诉 LLM 什么时候调用插件、怎么调用插件、怎么处理插件返回的结果。乐高机器人的“记忆”:Memory 模块——存储用户的历史对话、知识库内容、之前执行任务的结果。乐高机器人的“电池”:API Key——给 LLM、插件供电的东西(虽然不是真的电池,但没有 API Key,整个 SK 就运行不起来)。现在,假设你想开发一个“帮你完成周末作业后还能推荐电影并订票的智能学习娱乐助手 Agent”,你需要怎么做?第一步:搭建 SK 的框架——初始化 Kernel、加载 Plugins、配置 Memory、选择 Planner。第二步:编写 Prompt——告诉 LLM 如何理解用户的请求、如何拆分任务、如何调用插件、如何处理结果。第三步:测试 Agent——如果 Agent 完不成作业,就调整插件或者 Prompt;如果 Agent 推荐的电影不好看,就调整电影推荐插件的参数;如果 Agent 能顺利完成任务,那就大功告成啦!是不是很像?其实 SK 就是一个“AI 版的乐高 Mindstorms EV3”——它把 LLM、插件、Memory、Planner 这些“零件”组装起来,让你能快速、轻松地开发出一个属于自己的“小天才智能体”!核心概念解释(像给小学生讲故事一样)现在,我们用更形象的比喻来详细解释 SK 的六大核心概念:Kernel、Plugins、Prompts、Functions、Memory、Planner。核心概念一:Kernel(内核)——小天才的大脑中枢想象一下,你有一个“小天才”朋友,他的大脑里有一个“超级指挥中心”——这个指挥中心负责:管理小天才的“手脚”:告诉小天才什么时候用左手、什么时候用右手、什么时候用脚。管理小天才的“眼睛、耳朵、嘴巴”:告诉小天才什么时候看东西、什么时候听声音、什么时候说话。管理小天才的“记忆区”:告诉小天才什么时候记东西、什么时候回忆东西。管理小天才的“思考区”:告诉小天才什么时候思考问题、怎么思考问题。协调所有的器官:让小天才的手脚、眼睛耳朵嘴巴、记忆区、思考区配合得完美无缺,顺利完成你交给他的任务。这个“超级指挥中心”就是 SK 中的Kernel(内核)!在 SK 中,Kernel 是整个框架的核心中枢神经,它负责:管理所有的 Plugins(插件)和 Functions(函数):你可以把 Plugin 加载到 Kernel 中,Kernel 会自动识别 Plugin 中的所有 Functions,然后在需要的时候调用它们。管理所有的 Prompt Templates(提示词模板):你可以把 Prompt Templates 加载到 Kernel 中,Kernel 会根据用户的请求自动填充 Prompt Templates 中的变量,生成一个完整的 Prompt。管理 Memory Store(记忆存储):你可以把 Memory Store 配置到 Kernel 中,Kernel 会根据用户的请求自动从 Memory Store 中检索相关的信息,或者把新的信息存储到 Memory Store 中。管理 Planner(规划器):你可以把 Planner 配置到 Kernel 中,当用户提出一个复杂的请求时,Kernel 会调用 Planner 生成一个任务执行计划,然后按照计划调用相应的 Functions。协调 LLM、Plugins、Memory、Planner 之间的配合:Kernel 会把用户的请求、从 Memory 中检索到的信息、Planner 生成的计划、从 Plugins 中获取的结果整合起来,发送给 LLM,然后把 LLM 生成的回答返回给用户。核心概念二:Plugin(插件)和 Function(函数)——小天才的手脚和动作想象一下,你的“小天才”朋友有很多“手脚”:左手:能帮你拿东西、写字、画画。右手:能帮你开门、关灯、倒水。左脚:能帮你走路、跑步、踢足球。右脚:能帮你刹车、转弯、跳。眼睛:能帮你看书、看电影、看路。耳朵:能帮你听声音、听音乐、听老师讲课。嘴巴:能帮你说话、唱歌、吃东西。而且,每个“手脚”都能做很多“动作”:左手的动作:拿铅笔、拿橡皮、拿水杯、写“一”字、写“二”字、画圆形、画方形。右手的动作:开门把手、关灯按钮、倒水到杯子里、倒水到壶里。左脚的动作:向前走一步、向后退一步、向左走一步、向右走一步、跑一百米。眼睛的动作:看第一页书、看第二页书、看屏幕上的文字、看屏幕上的图片。耳朵的动作:听前面的声音、听后面的声音、听左边的声音、听右边的声音。嘴巴的动作:说“你好”、说“再见”、说“谢谢”、唱《小星星》、吃苹果。在 SK 中,Plugin(插件)就是小天才的“手脚”,Function(函数)就是小天才的“动作”!具体来说:Plugin(插件):是一个用来封装一组相关 Functions 的代码模块,比如“学习插件”(包含“查数学题答案”、“查语文题答案”、“写英语作文”等 Functions)、“电影插件”(包含“搜索电影”、“获取电影详情”、“获取电影评分”、“订电影票”等 Functions)、“生活插件”(包含“查天气”、“订机票”、“订酒店”、“点外卖”等 Functions)。Function(函数):是 Plugin 中的一个具体的代码单元,用来完成一个具体的任务,比如“查数学题答案”这个 Function 会调用数学题数据库 API,输入数学题,返回答案和解题步骤;“搜索电影”这个 Function 会调用 TMDb API,输入电影类型、评分、上映时间,返回符合条件的电影列表。SK 中的 Function 分为两种类型:Semantic Function(语义函数):是一种用 Prompt 定义的 Function,不需要写任何 Python 代码(或者只需要写很少的代码),就像你给小天才说“帮我写一篇关于‘我的梦想’的英语作文,要求 100 个单词左右”,小天才就能直接用 LLM 生成作文——Semantic Function 就是把这句话包装成一个可复用的 Function。Native Function(原生函数):是一种用传统代码(比如 Python、C#、Java)定义的 Function,用来完成 LLM 做不到的事情(比如查数据库、调用外部 API、读写文件、执行系统命令),就像你给小天才说“帮我查一下明天北京的天气”,小天才需要用手机查天气 API 才能告诉你答案——Native Function 就是把“查天气 API 调用”包装成一个可复用的 Function。核心概念三:Prompt(提示词)——给小天才的具体指令想象一下,你让你的“小天才”朋友帮你写一篇关于“我的梦想”的作文,如果你只说“帮我写一篇作文”,小天才可能会写一篇关于“小猫钓鱼”的作文,或者一篇关于“太空旅行”的作文,不一定是你想要的——但如果你说“帮我写一篇关于‘我的梦想’的语文作文,要求 500 个单词左右,开头要点明我的梦想是当一名医生,中间要写我为什么想当医生(比如我奶奶生病住院,医生治好了她),还要写我打算怎么实现我的梦想(比如好好学习,考上医科大学),结尾要总结我的梦想,表达我对未来的信心”,小天才就能写出一篇符合你要求的作文!这句话就是给小天才的具体指令,在 SK 中,这个指令就叫做Prompt(提示词)!在 SK 中,Prompt 是给 LLM 的“指令”,它告诉 LLM:你是谁:比如“你是一个专业的语文老师,擅长写各种类型的作文”。你的任务是什么:比如“帮用户写一篇关于‘我的梦想’的语文作文”。任务的要求是什么:比如“500 个单词左右,开头要点明梦想,中间要写原因和计划,结尾要总结”。你可以使用什么工具:比如“如果需要查资料,可以调用‘查资料插件’中的‘搜索百度百科’函数”。你应该怎么输出结果:比如“用中文输出,格式清晰,段落分明”。Prompt 工程化是 AI 应用开发中最重要的技能之一——一个好的 Prompt 能让 LLM 给出准确、有用、符合要求的答案,一个差的 Prompt 会让 LLM 产生幻觉(胡说八道)、给出无用的答案、或者不符合要求的答案。SK 中提供了Prompt Template(提示词模板)的功能,让你可以把 Prompt 中的变量(比如“作文主题”、“作文字数”、“用户姓名”)提取出来,然后在需要的时候自动填充——比如你可以定义一个 Prompt Template:你是一个专业的语文老师,擅长写各种类型的作文。 你的任务是帮用户写一篇关于“{ {$theme}}”的语文作文。 要求: 1. 字数:{ {$word_count}}左右 2. 开头:点明主题 3. 中间:写原因和计划 4. 结尾:总结主题,表达信心 5. 用中文输出,格式清晰,段落分明然后你只需要给这个 Prompt Template 传递两个变量:theme="我的梦想"、word_count="500",SK 就会自动生成一个完整的 Prompt,发送给 LLM。核心概念四:Memory(记忆)——小天才的大脑记忆区想象一下,你和你的“小天才”朋友对话:你:小天才,我叫小明,今年 10 岁,上小学四年级。小天才:你好小明,很高兴认识你!过了一会儿你:小天才,我叫什么名字?今年几岁?上几年级?小天才:对不起,我不记得了。是不是很尴尬?如果小天才没有“记忆”,他就记不住之前的对话,每次你和他说话都要重新介绍自己,重新告诉他你的需求——这显然不是一个“小天才”应该有的表现!在 SK 中,Memory(记忆)就是小天才的“大脑记忆区”,它能存储和检索以下信息:用户的历史对话:比如用户的姓名、年龄、性别、职业、兴趣爱好、之前的需求、之前的任务执行结果。知识库内容:比如公司的员工手册、产品说明书、FAQ(常见问题解答)、学术论文、新闻资讯。外部数据:比如从数据库、API、文件中获取的数据。SK 中的 Memory 分为两种类型:Short-Term Memory(短期记忆):存储当前会话的信息,比如用户的历史对话、之前的任务执行结果——当会话结束后,短期记忆就会被清空,就像你和小天才见面时聊的话,分开后就忘了。Long-Term Memory(长期记忆):存储持久化的信息,比如用户的基本信息、知识库内容——即使会话结束,长期记忆也会保留,就像小天才把你说的话记在笔记本上,下次见面时还能翻出来看。SK 中的 Memory 使用向量相似度搜索来检索信息——它会把文本、图像、音频等数据转换成向量(embedding),然后通过计算向量之间的相似度来快速检索相关的内容,就像你在超级字典里查“猫”这个词,超级字典会告诉你“狗”、“鸟”、“鱼”这些词和“猫”的相似程度,然后把最相似的词排在前面。SK 支持多种向量数据库作为 Long-Term Memory 的存储后端,比如:本地向量数据库:ChromaDB、FAISS、Pinecone Local、Qdrant Local。云端向量数据库:Pinecone、Qdrant Cloud、Weaviate Cloud、Azure Cognitive Search。核心概念五:Planner(规划器)——小天才的大脑思考区想象一下,你给你的“小天才”朋友提出一个复杂的请求:你:小天才,帮我完成周末的数学作业(数学作业在我的书包里,书包在我的房间里),然后推荐一部评分 8.5 以上的科幻电影,最后订一张明天下午 3 点在万达影城的票。如果小天才没有“思考区”,他可能会直接去订电影票,而忘了完成数学作业——这显然不是一个“小天才”应该有的表现!但如果小天才有“思考区”,他会先“思考一下”,把这个复杂的请求拆分成多个小步骤:第一步:去小明的房间找书包。第二步:从书包里拿出数学作业。第三步:完成数学作业(如果遇到不会的题,可以查数学题数据库)。第四步:搜索评分 8.5 以上的科幻电影。第五步:从小明的历史对话中回忆他喜欢的电影类型(比如硬科幻、软科幻),然后筛选出符合条件的电影。第六步:从小明的历史对话中回忆他喜欢的影院(比如万达影城),然后查明天下午 3 点在万达影城的排片。第七步:订一张明天下午 3 点在万达影城的电影票。第八步:把数学作业的答案、推荐的电影、订的电影票信息告诉小明。然后小天才会按照这个步骤一步一步地完成任务!在 SK 中,Planner(规划器)就是小天才的“大脑思考区”,它能把用户的复杂请求拆分成多个小步骤,然后调用相应的 Functions 来完成!SK 中提供了多种 Planner,每种 Planner 适用于不同的场景:Action Planner(动作规划器):适用于简单的请求,不需要拆分任务,只需要调用一个 Function——比如“帮我查一下明天北京的天气”。Sequential Planner(顺序规划器):适用于中等复杂度的请求,需要拆分任务成多个顺序执行的步骤——比如“帮我查一下明天北京的天气,然后根据天气推荐适合的活动”。Stepwise Planner(分步规划器):适用于高复杂度的请求,需要拆分任务成多个可循环、可调整的步骤——比如“帮我完成周末的数学作业,然后推荐一部评分 8.5 以上的科幻电影,最后订一张明天下午 3 点在万达影城的票”。Hierarchical Planner(分层规划器):适用于超高复杂度的请求,需要拆分任务成多个大步骤,每个大步骤再拆分成多个小步骤——比如“帮我组织一场生日派对,包括邀请客人、买蛋糕、买礼物、布置房间、准备食物”。Custom Planner(自定义规划器):如果 SK 提供的 Planner 都不符合你的需求,你可以自己写一个 Custom Planner。核心概念之间的关系(用小学生能理解的比喻)现在,我们用更形象的比喻来解释 SK 六大核心概念之间的关系:Kernel(大脑中枢):是整个团队的队长,负责管理所有的队员(Plugins、Functions、Memory、Planner),协调它们之间的配合,完成用户的请求。Plugin(手脚):是队长的队员,每个队员都有自己的特长(比如学习插件擅长学习,电影插件擅长处理电影相关的任务)。Function(动作):是队员的技能,每个队员都有多个技能(比如学习插件有“查数学题答案”、“查语文题答案”、“写英语作文”等技能)。Prompt(具体指令):是队长给队员的任务书,告诉队员应该做什么、怎么做、有什么要求。Memory(大脑记忆区):是团队的仓库,存储着团队的历史记录、知识库、外部数据——队员在执行任务的时候,可以从仓库里拿需要的东西,也可以把新的东西放进仓库里。Planner(大脑思考区):是团队的军师,当用户提出一个复杂的请求时,军师会先分析请求,然后制定一个详细的作战计划(任务执行计划),队长会按照作战计划指挥队员完成任务。现在,我们用一个具体的例子来演示这些概念之间的配合:用户的请求:小天才,帮我完成周末的数学作业(数学作业在‘math_homework.csv’文件里),然后推荐一部评分 8.5 以上的科幻电影,最后订一张明天下午 3 点在万达影城的票。配合过程:队长(Kernel)收到用户的请求。队长(Kernel)请军师(Stepwise Planner)分析请求,制定作战计划。军师(Stepwise Planner)先从仓库(Memory)里回忆用户之前的对话,看看有没有用户喜欢的电影类型、影院等信息——如果没有,就先制定一个初步的作战计划:a.步骤1:调用“学习插件”的“读取数学作业文件”技能,读取‘math_homework.csv’文件。b.步骤2:调用“学习插件”的“查数学题答案”技能,逐个解答数学作业里的题目。c.步骤3:调用“电影插件”的“搜索电影”技能,搜索评分 8.5 以上的科幻电影。d.步骤4:调用“电影插件”的“获取电影详情”技能,获取前3部电影的详情。e.步骤5:调用“电影插件”的“查排片”技能,查明天下午 3 点在万达影城的排片。f.步骤6:调用“电影插件”的“订电影票”技能,订一张符合条件的电影票。g.步骤7:把数学作业的答案、推荐的电影、订的电影票信息整理成一个友好的回答,返回给用户。军师(Stepwise Planner)把初步的作战计划告诉队长(Kernel)。队长(Kernel)按照作战计划指挥队员(Plugins)执行任务:a.步骤1:队长(Kernel)给“学习插件”的“读取数学作业文件”技能下达任务书(Prompt),告诉它读取‘math_homework.csv’文件——“学习插件”的“读取数学作业文件”技能执行任务,把数学作业的内容返回给队长(Kernel)。b.步骤2:队长(Kernel)把数学作业的内容放进仓库(Memory)里,然后给“学习插件”的“查数学题答案”技能下达任务书(Prompt),告诉它逐个解答数学作业里的题目——“学习插件”的“查数学题答案”技能执行任务,把数学作业的答案和解题步骤返回给队长(Kernel)。c.步骤3:队长(Kernel)把数学作业的答案放进仓库(Memory)里,然后给“电影插件”的“搜索电影”技能下达任务书(Prompt),告诉它搜索评分 8.5 以上的科幻电影——“电影插件”的“搜索电影”技能执行任务,把符合条件的电影列表返回给队长(Kernel)。d.步骤4:队长(Kernel)把电影列表放进仓库(Memory)里,然后给“电影插件”的“获取电影详情”技能下达任务书(Prompt),告诉它获取前3部电影的详情——“电影插件”的“获取电影详情”技能执行任务,把前3部电影的详情返回给队长(Kernel)。e.步骤5:队长(Kernel)把前3部电影的详情放进仓库(Memory)里,然后给“电影插件”的“查排片”技能下达任务书(Prompt),告诉它查明天下午 3 点在万达影城的排片——“电影插件”的“查排片”技能执行任务,把排片信息返回给队长(Kernel)。f.步骤6:队长(Kernel)把排片信息放进仓库(Memory)里,然后给“电影插件”的“订电影票”技能下达任务书(Prompt),告诉它订一张符合条件的电影票——“电影插件”的“订电影票”技能执行任务,把订票信息返回给队长(Kernel)。g.步骤7:队长(Kernel)把所有的结果(数学作业的答案、推荐的电影、订的电影票信息)从仓库(Memory)里拿出来,然后给 LLM 下达任务书(Prompt),告诉它把这些结果整理成一个友好的回答——LLM 执行任务,把友好的回答返回给队长(Kernel)。队长(Kernel)把 LLM 生成的友好回答返回给用户。任务完成!核心概念之间的关系:专业对比表格、ER 实体关系图、交互关系图

更多文章