今天学习了《Agentic Design Patterns》的第十、十一、十二章。
第十章主要讲MCP协议。这本书的第五章已经讲过了工具调用(Function call)。
工具调用是为了让模型能够调用外部工具,使模型与外界进行交互,如查询天气、下单支付等。其主要原理分三步:
- 将可用的工具(函数)名称、作用、参数等信息传递给模型;
2.模型根据当前状态自主决策需要调用哪些工具,以结构化的文本返回要调用的工具信息,如工具名称、参数等信息;
3.业务程序根据模型返回的结构化信息去调用对应的工具,执行动作或获取信息;
但每家模型的Function call使用规范是存在一定差异的,对于调用多种模型的业务来说,需要逐一适配所使用模型的规范。
为了解决这一问题,Anthropic 公司提出了MCP协议。
MCP协议定义了一套统一的工具调用机制,其核心功能有两个:查工具列表、调用工具。先查工具列表,将可用的工具列表传递给模型,模型确定调用哪个工具后,再执行调用工具逻辑。
第十一章讲了目标设定与监控。做一个Agent要有目标设定和跟踪进度的机制,目标就是Agent最终要完成的任务,确保执行任务不跑偏,通常通过Prompt指定;跟踪进度机制就是监控Agent执行过程,结合当前状态和目标来允许Agent调整、修正计划,类似于之前的反思机制。
第十二章讲了异常处理和恢复机制。系统的稳定性和可靠性应该是首要考虑的问题,所以Agent系统要建立完备的容错机制。当出现错误时,必须有相应的处理措施。一个比较常见的问题是工具调用失败后应该怎么做?
针对这个问题首先应该是先尝试重试,如果重试不成功有三种方案:1. 返回错误信息,使模型换个工具调用;2.或者提示用户具体的错误原因,将选择权交给用户;3.或者也可以降级处理,跳过此工具的调用。
此外,一个稳定的系统还应该建立限流、降级、熔断机制,后面需要出个专题讲一下这部分。