旅行助手项目(包含技术栈) 📅 2026/7/19 7:43:00 简介背景流程注意点意图识别也使用LLM完成而非Bert意图不明时可向用户进行追问mcp Agent服务信息不足时可以向用户追问叫填槽比如今天天气怎么样追问时间地点一个Agent可以调用另外一个Agent的服务比如订票agent可以调用查询票的agentFunction CallingLLM本质是基于transformer架构的一堆参数不包含任何具体数据解决实际问题需要靠一些外挂的工具Function calling和Rag解决的问题其实差不多只是手段方式不一样流程没有Function call时有function call时自定义tool实现步骤帮助理解然后就是调用了步骤整理如下1.先定义工具函数2.定义工具描述json3.初始化模型把模型绑定工具4.愉快调用装饰器方式实现tool最常用意思就是函数加个tool注释就ok不需要自己写json注意一定要写注释不然大模型会根据自己对函数理解调用还需要些个列表pydantic实现tool了解比如输入一个string类型1可以根据需要转成int类型1。参数很多很难提取可以用MCP本质就是把Function call做了一次封装不只让调用简单而且能让别的服务器调用而非只能本机**上下文协议**LLM把mcp返回结果放上下文调用流程三种通信方式本地没有通信开销安全远程单向通信只能接收不适合做LLM的长期对话远程双向通信最常用实际使用不管哪种通信方式基本都是用python A2A包使用Agents区别Langchain的Agent模块简介LLM是基础Agent配合一些工具就可以称为高级Agent形容词让Agent更加Agentic提出了5种工作模式工具使用模式实现步骤1.首先初始化LLM定义好提示词模板2.定义好工具列表3.定义LLM的excutor执行器执行器调用工具即可4.输出最终结果React模式实现步骤1.首先初始化LLM定义好提示词模板这里的提示词模板就规定好了React范式2.定义好工具列表3.定义LLM的excutor执行器执行器调用工具即可循环一定的轮次可自定义4.输出最终结果反思模式和React模式不同的是在思考环节不是靠模型自己而是获取反馈实现步骤和上面的都差不多也就是两套不一样的提示词模板把每次反馈拼接进上下文规划模式多智能体模式A2A协议顾名思义就是Agent和Agent通信的协议省去了很多协调的功夫核心角色架构三个角色客户端服务端用户 客户端和服务端特定情况可以互换本质就像把Agent包装成一个工具供其他Agent使用核心概念*AgentSkills定义一个具体能力具体业务AgentCard名片介绍这个Agent拥有的能力供别的Agent用TaskTask不是封装的一次通信而是任务本身许多次通信服务于这个Task它包括问题和结果且有完成未完成等许多状态TaskState服务于TaskTaskstatusl’l’llll也就是比state多了些信息一样服务于TaskA2AServer用于构建服务器的里面包含了一些父方法可供调用和重写artifactsTask里存结果的字段AgentNetwork就是定义和管理可调用的Agent一个链接就是一个AgentAIAgentRouter就是LLM根据用户的问题和network的描述去选定一个最合适的Agent去调用流程图1.首先是定义好Skills封装成card2.注册进Network由客户端维护可用的Agent server3.对于用户提问通过LLM驱动的Router选择合适Agent server4.把Task发给Agent serverAgent执行Handle方法5.执行完之后更新stateartifacts返回给客户端A2A串行就是一个Agent的返回结果作为另外一个Agent的输入值得注意的是请求Agent时要用Await方法等待返回结果之后再进行下一步43329653)]就是LLM根据用户的问题和network的描述去选定一个最合适的Agent去调用流程图[外链图片转存中…(img-TfzzlMo4-1784343329654)]1.首先是定义好Skills封装成card2.注册进Network由客户端维护可用的Agent server3.对于用户提问通过LLM驱动的Router选择合适Agent server4.把Task发给Agent serverAgent执行Handle方法5.执行完之后更新stateartifacts返回给客户端A2A串行就是一个Agent的返回结果作为另外一个Agent的输入值得注意的是请求Agent时要用Await方法等待返回结果之后再进行下一步