从头构建基本AI代理:工具
本文介绍如何通过添加工具来增强基本AI代理,使其能够与计算机环境交互。涵盖工具定义、代理使用方式以及七个必备工具(bash、文件读写、文件搜索、grep、网页获取等)的Python实现和工具模式定义。
在之前的文章中,我们构建了最基本的AI代理框架,它仅能根据内部知识回应用户输入。但要让代理真正有用,我们需要赋予它执行操作的能力,而工具(Tools)正是实现这一点的关键。工具是暴露给大语言模型(LLM)的函数或程序,使其能够自主调用。本文将继续扩展基础代理,添加七种实用工具。
首先,工具的定义可以简单如一个Python函数,也可以复杂如MCP服务器。现代LLM通过原生工具调用(native tool calling)支持以JSON格式生成工具请求,提升了可靠性。我们实现的第一个工具是run_bash,允许代理执行Bash命令——这是最强大的工具,但也最危险,因为它赋予代理完全的系统访问权限。后续文章会讨论安全措施。
接下来是文件操作工具。read_file可以读取文件内容并显示行号,支持偏移和行数限制。glob_files用于按模式查找文件,grep则通过正则表达式搜索文件内容,并返回匹配行及文件路径。write_file用于创建或覆盖文件,自动创建父目录。edit_file进行精确的字符串替换,比全量写入更安全。最后,webfetch工具可获取网页内容并转换为纯文本,限制为HTTP/HTTPS且最大2MB。
所有工具都需要定义模式(schema)供LLM识别。代码中通过get_tool_schemas函数返回每个工具的名称、描述和参数结构。在代理循环中,我们通过TOOL_REGISTRY映射工具名称到实际函数,并在LLM返回工具调用时执行相应函数,将结果附加到对话中。系统提示词中明确告知代理其可用工具。
这七种工具构成了AI代理与计算机交互的基础。它们组合使用,使代理能够探索文件系统、读写文件、执行命令和获取网络信息。后续文章将在此基础上添加更多高级功能和安全加固。通过这种方式,我们可以逐步构建出功能强大的自主代理系统。