AI Agent入门实战 Day5:让Agent拥有读取文件的能力
前言
在前面的学习中,我们已经实现了一个基础版 AI Agent。
它已经具备:
-
调用大模型 API
-
理解用户需求
-
调用自定义工具
-
保存上下文记忆
但是之前的工具比较简单,例如:
-
加法计算
-
乘法计算
这些工具只能处理固定的数据。
一个真正有价值的 AI Agent,需要能够连接外部世界,例如:
-
读取文件
-
查询数据库
-
搜索网页
-
分析图片
-
处理 PDF
因此,本节将实现第一个真实工具:
文件读取工具(File Tool)
让 Agent 具备读取本地文件的能力。
一、Agent为什么需要文件工具?
普通聊天机器人只能根据用户输入生成回答。
例如:
用户:
介绍一下AI Agent
模型可以直接回答。
但是如果用户提供一个文件:
用户:
帮我分析这个文档
模型本身并不知道本地文件内容。
因此需要给 Agent 增加工具:
用户
↓
AI模型
↓
判断需要读取文件
↓
调用read_file工具
↓
Python读取文件
↓
返回文件内容
↓
AI分析并回答
这就是 Agent 使用工具解决问题的基本流程。
二、Python实现文件读取工具
首先创建一个文件工具:
file_tools.py
代码:
def read_file(filename):
with open(
filename,
"r",
encoding="utf-8"
) as f:
content = f.read()
return content
代码解析
1. open()
Python中使用:
open()
打开文件。
例如:
open("test.txt")
表示打开:
test.txt
2. 文件读取模式
这里:
"r"
代表:
read
即读取文件。
常见模式:
| 模式 | 作用 |
|---|---|
| r | 读取文件 |
| w | 写入文件 |
| a | 追加内容 |
3. encoding参数
encoding="utf-8"
用于指定文件编码。
如果读取中文文件,建议明确指定 UTF-8,避免出现乱码。
4. with语句
推荐使用:
with open(...)
而不是:
file=open(...)
原因:
with 会自动关闭文件。
不需要额外执行:
file.close()
三、将文件工具接入Agent
Agent并不知道Python中有哪些函数。
因此需要进行工具注册。
1. 创建工具映射
tools_map = {
"read_file": read_file
}
作用:
建立:
工具名称
↓
Python函数
的对应关系。
当AI返回:
{
"name":"read_file"
}
程序就知道执行:
read_file()
四、向模型描述工具
除了注册工具,还需要告诉模型:
这个工具有什么作用。
例如:
tools = [
{
"type":"function",
"function":{
"name":"read_file",
"description":"读取指定文件内容"
}
}
]
模型不会直接查看Python代码。
它只能根据工具描述判断:
什么时候应该调用哪个工具。
因此:
工具描述越清晰,Agent决策越准确。
五、完整Tool Calling流程
当用户输入:
读取test.txt
整个流程如下:
第一步:用户请求
用户:
读取test.txt
第二步:模型判断
模型发现:
需要读取文件。
于是返回:
{
"name":"read_file",
"arguments":{
"filename":"test.txt"
}
}
第三步:Python执行工具
程序接收到:
read_file
执行:
read_file("test.txt")
第四步:返回文件内容
例如:
AI Agent是一种能够调用工具完成任务的智能程序。
第五步:模型生成回答
最终:
这个文件介绍了AI Agent,
它能够通过调用工具完成任务。
六、Tool Result(工具结果)
在 Agent 中,一个非常重要的概念:
Tool Result
即:
工具执行后的返回结果。
例如:
工具:
read_file()
返回:
文件内容
这个结果需要重新发送给模型。
流程:
AI请求工具
↓
Python执行
↓
工具结果
↓
返回AI
↓
AI生成最终回答
这也是 Agent 和普通聊天机器人的重要区别。
七、异常处理:让Agent更加稳定
真实环境中,文件不一定存在。
例如:
用户:
读取abc.txt
但是:
abc.txt不存在
如果直接运行:
open("abc.txt")
程序会报错退出。
因此需要异常处理:
try:
读取文件
except:
返回错误信息
修改:
def read_file(filename):
try:
with open(
filename,
"r",
encoding="utf-8"
) as f:
return f.read()
except FileNotFoundError:
return "错误:文件不存在"
这样:
程序不会崩溃。
而是把错误作为结果返回给 Agent。
然后模型可以告诉用户:
没有找到该文件,请检查文件名称。
八、今天实现的Agent能力
经过本节学习,Agent从:
只能聊天
升级为:
能够调用工具
↓
读取真实数据
↓
分析数据
↓
生成回答
九、知识总结
本节学习内容:
Python部分
-
open文件操作
-
with语句
-
文件编码
-
try-except异常处理
Agent部分
-
Tool设计
-
Tool注册
-
Tool Calling
-
Tool Result
-
Agent执行闭环
总结
文件读取工具是 AI Agent 连接现实世界的重要一步。
工具本身并不复杂,本质就是一个 Python 函数。
真正重要的是理解:
Agent负责思考和决策,工具负责执行具体任务。
未来更复杂的 AI 应用,例如:
-
ChatPDF
-
企业知识库
-
AI客服
-
OCR识别系统
本质上都是在这个基础上不断增加新的工具能力。
更多推荐


所有评论(0)