「吴恩达Agentic AI 模块3」代理式人工智能工具使用与MCP学习指南
测验
简答题
请用2-3句话回答以下每个问题,以检验您对核心概念的理解。
- 在大型语言模型(LLM)的背景下,“工具使用”指的是什么?为什么它很重要?
- 当一个工具可用时,LLM是否总会选择使用它?请解释其决策过程。
- 根据“早期时代”的方法,描述LLM使用工具的完整流程。
- 在手动的工具创建方法中,LLM是直接调用函数吗?请解释其背后的机制。
- 像AISuite这样的现代库与旧的手动提示方法相比,是如何简化为LLM提供工具的过程的?
- 在现代工具使用语法中,JSON模式(JSON schema)扮演什么角色?它通常包含哪些信息?
- 为什么说代码执行是LLM一个特别强大的工具?
- 与LLM代码执行相关的主要风险是什么?缓解这种风险的最佳实践是什么?
- 模型上下文协议(MCP)旨在解决开发者社区面临的什么核心问题?
- 什么是MCP客户端和MCP服务器?请举例说明它们如何交互。
测验答案
- 在大型语言模型(LLM)的背景下,“工具使用”指的是什么?为什么它很重要? “工具使用”是指让LLM自行决定何时请求调用一个函数来执行特定动作、收集信息或完成其他任务。这非常重要,因为就像人类使用工具能完成更多事情一样,为LLM提供工具(即函数)能极大地扩展其能力,使其能够完成仅凭自身训练数据无法完成的任务,例如获取当前时间或查询数据库。
- 当一个工具可用时,LLM是否总会选择使用它?请解释其决策过程。 不,LLM并不会总是使用可用的工具。开发者可以将决策权留给LLM,让它根据具体的用户提示来判断是否需要调用工具。例如,如果向一个拥有“获取当前时间”工具的LLM询问绿茶中的咖啡因含量,它会直接生成答案,而不会调用该工具,因为它判断该工具与问题无关。
- 根据“早期时代”的方法,描述LLM使用工具的完整流程。 该流程包括几个步骤:首先,开发者通过提示告知LLM可用工具及其调用格式。当LLM决定使用工具时,它会生成一个特定格式的文本(如FUNCTION: getCurrentTime)作为请求。然后,开发者编写的代码会捕获并解析这个输出,实际执行相应的函数,并将函数返回的结果反馈给LLM,最后LLM利用这个新信息生成最终的答复。
- 在手动的工具创建方法中,LLM是直接调用函数吗?请解释其背后的机制。 不,LLM不直接调用函数。其机制是,LLM通过生成一种特定格式的文本输出来“请求”调用函数。开发者需要编写代码来监视LLM的输出,当检测到这个预定义的格式时,由开发者的代码来负责解析请求、执行相应的函数,并将结果返回给LLM。
- 像AISuite这样的现代库与旧的手动提示方法相比,是如何简化为LLM提供工具的过程的? 现代库(如AISuite)能自动处理将函数描述给LLM的复杂过程。开发者无需手动编写冗长的提示来解释每个工具的用法,库会自动检查函数的文档字符串(docstring),并生成一个结构化的JSON模式。这个模式清晰地告诉LLM函数的名称、功能和参数,从而实现了工具的无缝集成。
- 在现代工具使用语法中,JSON模式(JSON schema)扮演什么角色?它通常包含哪些信息? JSON模式扮演着向LLM详细描述可用工具的角色。它是一个结构化的数据格式,通常包含函数的名称(name)、功能的详细描述(description,通常从代码的文档字符串中提取)以及函数的参数列表(parameters),包括每个参数的类型和用途。这使得LLM能够准确理解何时以及如何调用该工具。
- 为什么说代码执行是LLM一个特别强大的工具? 代码执行之所以强大,是因为它赋予了LLM极大的灵活性和解决复杂问题的能力。相比于为每个数学运算(加、减、平方根等)创建单独的工具,允许LLM编写并执行代码能让它处理几乎无限种类的计算和逻辑任务。这种通用性使得LLM能够用创新的代码解决方案来应对各种复杂的用户请求。
- 与LLM代码执行相关的主要风险是什么?缓解这种风险的最佳实践是什么? 主要风险在于安全性,LLM可能生成任意甚至有害的代码,例如错误地删除文件(如remove star.py)。缓解此风险的最佳实践是在一个安全的沙盒环境(如Docker或E2B)中运行代码。沙盒环境可以隔离代码的执行,从而降低数据丢失、敏感数据泄露或对系统造成损害的风险。
- 模型上下文协议(MCP)旨在解决开发者社区面临的什么核心问题? MCP旨在解决开发者在将各种工具和数据源(如Slack、GitHub、数据库)集成到其LLM应用中时普遍存在的重复劳动问题。在MCP出现之前,每个应用开发者都需要为同一个数据源编写自定义的封装代码,导致社区总工作量呈 M(应用数)乘以 N(工具数)的规模。MCP通过提供一个标准化的集成协议,将工作量减少到 M 加 N 的规模。
- 什么是MCP客户端和MCP服务器?请举例说明它们如何交互。 MCP客户端是需要访问工具或数据的应用程序,而MCP服务器是提供这些工具或数据访问的服务封装层。例如,一个云桌面应用(MCP客户端)在需要获取GitHub仓库信息时,会向GitHub MCP服务器发送请求。服务器接收请求(如“列出最新的拉取请求”),执行相应的操作,并将结果返回给客户端,客户端再将这些信息提供给LLM以生成最终的摘要。
论文题目建议
- 比较并对比“早期时代”手动启用工具使用的方法与使用AISuite等现代库的自动化方法。深入探讨开发者工作流程的演变、底层机制的差异以及对应用开发效率的影响。
- 结合工具使用的概念,讨论大型语言模型中的“代理式”(Agentic)行为。模型能够决定何时使用哪个工具(包括决定不使用任何工具)的能力,是如何促成其代理特质的?
- 深入分析将“代码执行”作为LLM工具的独特优势和重大风险。开发者应如何平衡这一工具的强大功能与保障系统安全性和可靠性的需求?请从技术和实践角度进行论述。
- 阐述模型上下文协议(MCP)的原理及其在构建复杂、多工具LLM应用生态系统中的重要性。该协议如何改变应用开发者(客户端)和服务提供商(服务器)之间的互动模式和开发范式?
- 设想你正在构建一个课程资料中描述的“日历助手代理”。请详细规划你的开发步骤,从定义必要的工具(如检查日历、创建约会),到实现与LLM的交互循环。在你的规划中,请引用全部五个相关模块(工具定义、创建、语法、代码执行、MCP)中的概念。
关键术语词汇表
术语 | 定义 |
---|---|
工具使用 (Tool Use) | 允许大型语言模型(LLM)自行决定何时请求调用一个函数,以执行特定动作、收集信息或完成其他任务的过程。 |
工具 (Tool) | 提供给LLM的函数或代码,LLM可以请求调用这些函数来扩展其能力。 |
代理工作流 (Agentic Workflow) | LLM作为一个代理,自主地规划步骤、决策并使用工具来完成复杂任务的一系列流程。 |
代码执行 (Code Execution) | 一种特殊的工具,允许LLM编写代码并请求执行,用于解决数学计算、数据处理等复杂问题,具有高度的灵活性。 |
沙盒环境 (Sandbox Environment) | 一个安全的、隔离的执行环境(如Docker),用于运行由LLM生成的代码,以防止潜在的有害操作对系统造成损害。 |
JSON模式 (JSON Schema) | 一种基于JSON的结构化数据格式,用于向LLM详细描述一个工具(函数),包括其名称、功能描述和参数。 |
AISuite | 一个开源库,它简化了向LLM提供工具的过程,能够自动从函数的文档字符串生成JSON模式,与OpenAI的语法非常相似。 |
模型上下文协议 (MCP) | 由Anthropic提出并被广泛采用的一个标准协议,旨在简化应用程序(客户端)对外部工具和数据源(服务器)的访问,减少开发者的重复集成工作。 |
MCP客户端 (MCP Client) | 遵循MCP标准的应用程序,它消费(使用)由MCP服务器提供的工具或数据资源。 |
MCP服务器 (MCP Server) | 遵循MCP标准的服务,它将对数据源(如GitHub, Slack)的访问封装起来,向MCP客户端提供工具或数据资源。 |