前言

在前面的学习中,我们已经实现了一个基础版 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识别系统

本质上都是在这个基础上不断增加新的工具能力。

更多推荐