知乎做笔记的网站如何设置目录在wordpress
2026/1/10 11:26:12 网站建设 项目流程
知乎做笔记的网站,如何设置目录在wordpress,廊坊网站建设公司哪个好,wordpress dns ip欢迎关注公众号:AI开发的后端厨师#xff0c;知乎#xff1a;巴塞罗那的风 及时获取更新内容#xff0c;每周更新一个经典Agent架构 介绍 工具使用架构是连接大型语言模型#xff08;LLM#xff09;推理能力与真实、动态世界的 桥梁。它赋予智能体查询 API、搜索数据库和…欢迎关注公众号:AI开发的后端厨师知乎巴塞罗那的风及时获取更新内容每周更新一个经典Agent架构介绍工具使用架构是连接大型语言模型LLM推理能力与真实、动态世界的 桥梁。它赋予智能体查询 API、搜索数据库和访问实时信息的能力从而克服了 LLM 知识的静态局限性。定义工具使用 架构为 LLM 驱动的智能体配备了调用外部函数或 API即 “工具”的能力。智能体能够自主判断用户查询是否需要外部信息并决定调用哪个工具来获取所需数据。工作流程接收查询 (Receive Query) 智能体接收用户的请求。决策 (Decision) 智能体分析查询和可用工具判断是否需要工具。行动 (Action) 如果需要智能体格式化对工具的调用例如带正确参数的特定函数。观察 (Observation) 系统执行工具调用并将结果“观察结果”返回给智能体。合成 (Synthesis) 智能体将工具的输出整合到其推理过程中生成一个最终的、有事实依据 的答案。和react的区别大家都是要调工具都是要总结合成二者的区别在哪tool use架构是只调用一次工具不需要把调用的结果再交给模型进行下一步动作的思考换句话说就是tool use适合一锤子买卖或者是普通的work flowreact适合更复杂问题的解决代码本文章是对这篇公众号文章的复刻完整代码已上传github地址核心代码解释promptfuncDraftCodeTemplate()prompt.DefaultChatTemplate{systemTpl: 角色你是一个精于解决用户问题的问题解答师。 任务根据用户的需求回答问题必要时使用提供给你的工具进行问题回答。 要求如果你已知了工具的查询结果则无需继续调用工具而应该结果整合进最终的回答中确保回答的准确性和完整性。 chatTpl:prompt.FromMessages(schema.FString,schema.SystemMessage(systemTpl),schema.UserMessage({user_query}),)return*chatTpl}告诉模型职责限制仅调用一次工具不过这里更应在使用场景上进行限制编排部分typestatestruct{Messages[]*schema.Message}funcGetToolUseRunnable()(compose.Runnable[map[string]any,*schema.Message],error){sg:compose.NewGraph[map[string]any,*schema.Message](compose.WithGenLocalState(func(ctx context.Context)*state{returnstate{Messages:make([]*schema.Message,0)}}))ctx:context.Background()model,err:GetModel()iferr!nil{returnnil,err}tools:GetBaiDuMapTool(ctx,[]string{MapServer})toolNode,err:compose.NewToolNode(ctx,compose.ToolsNodeConfig{Tools:tools,})iferr!nil{returnnil,err}toolsInfo,err:genToolInfos(ctx,tools)iferr!nil{returnnil,err}model,errmodel.WithTools(toolsInfo)iferr!nil{returnnil,err}modelPreHandle:func(ctx context.Context,input[]*schema.Message,state*state)([]*schema.Message,error){state.Messagesappend(state.Messages,input...)returnstate.Messages,nil}toolsNodePreHandle:func(ctx context.Context,input*schema.Message,state*state)(*schema.Message,error){ifinputnil{returnstate.Messages[len(state.Messages)-1],nil// used for rerun interrupt resume}state.Messagesappend(state.Messages,input)returninput,nil}makeAnswerTemplate:DraftCodeTemplate()sg.AddChatTemplateNode(MakeAnswerTemplate,makeAnswerTemplate,compose.WithNodeName(MakeAnswerTemplate))sg.AddChatModelNode(MakeAnswerModel,model,compose.WithNodeName(MakeAnswerModel),compose.WithStatePreHandler(modelPreHandle))sg.AddToolsNode(ToolsNode,toolNode,compose.WithNodeName(ToolsNode),compose.WithStatePreHandler(toolsNodePreHandle))sg.AddChatModelNode(Synthesis,model,compose.WithNodeName(Synthesis),compose.WithStatePreHandler(modelPreHandle))sg.AddEdge(compose.START,MakeAnswerTemplate)sg.AddEdge(MakeAnswerTemplate,MakeAnswerModel)sg.AddEdge(MakeAnswerModel,ToolsNode)sg.AddEdge(ToolsNode,Synthesis)sg.AddEdge(Synthesis,compose.END)reflectionRunnable,err:sg.Compile(context.Background())returnreflectionRunnable,err}最终实现了如下的graphMakeAnswerTemplate -MakeAnswerModel -ToolsNode -Synthesishandler的作用可以看到在调用模型及工具之前写了两个handler作用都是追加对话历史如果没有这两个handler会出现什么问题呢工具调用完整进行总结的时候 模型仅仅拿到tool call的结果但是他不知道自己是谁不知道自己该干什么所以这里通过两个prehandler对state进行修改实现对话记录在全节点上的透传小坑没有prehandler会导致最后输出的结果很奇怪调用WithTools方法进行工具和模型的绑定时这个方法会返回新的model注意看官方的函数说明// WithTools returns a new ToolCallingChatModel instance with the specified tools bound. // This method does not modify the current instance, making it safer for concurrent use.运行结果工具调用结果最终结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询