
对于AI Agent而言, 不少新手觉得它是那种“高大上”的技术, 要具备深厚的算法功底以及复杂的框架知识方可上手。然而实际上呢, 凭借成熟的开源库还有简洁的代码逻辑, 就算是才刚开始接触的小白, 也能够在半小时之内写出一个可以自主执行任务的AI Agent。今日便带来, 全网最为详尽的入门教程, 起始于环境搭建, 接着到代码编写, 随后是功能测试, 每一个步骤都, 逐一亲手拆解, 不存在晦涩难懂的术语, 全都是能够直接复制粘贴的实操内容, 助力你轻松跨出AI Agent开发的第一步。一、先搞懂什么是AI Agent它到底能做什么在开始编写代码以前, 我们要首先花费2分钟弄明白核心概念, 防止出现“明明知道这样做, 却不清楚为什么要这样做”的情况。不是简单的, 被称为AI Agent的, 是那种, 能够自己主动去感知所处环境的, 智能程序, 它还能制定计划, 并且执行任务。它跟普通脚本之间存在区别, 具体呢, 普通脚本是这样的情况, 就是你让它做什么, 它依据指令安排就做什么, 然而AI Agent不一样, 是你向它告知目标之后, 它会凭借自身能力想各种办法去完成。举个简单的例子有种普通脚本, 你去写代码, 要让它达成打开指定文件夹, 接着去往读取所有txt文件, 随后再去提取关键词这样一系列操作, 其中步骤只要有一步出现差错, 那就会报错。假设存在这样一个AI Agent, 你只需告知它, 帮我整理这个文件夹里的txt文件, 提取每个文件的核心关键词, 它便会自行规划步骤, 当遇到文件不存在的状况时, 还能够设法报错或者予以跳过, 并非需要你将每一步都固定写好不用你写死每一步。以下是今天我们所要撰写的, 乃是一个“网页信息提取AI Agent”, 给予其一个网页链接, 它能够独立自主地达成“请求网页, 紧接着解析内容, 递进至提取标题以及正文, 最终保存至本地文件”这般完整详尽的流程任务, 并且还具备处理简易异常状况的能力。二、准备工作3分钟搭建开发环境要想让工匠做好他的事情, 就一定要先让他把工具弄精良, 我们鉴于自身所需得去安装3个库, 这些库具有都是精巧优质并且能够轻易熟练操作的特性:1. 用于发送网页请求获取网页内容2. 用于解析HTML页面提取需要的信息3. 能够提供AI Agent的基础框架, 以此来帮助我们, 去相对快速地构建智能体, 而且不用我们自己去撰写复杂的决策逻辑。安装步骤复制到终端执行# 安装依赖库pip去验证一下安装究竟有没有成功, 要打开终端, 接着输入一下下面这样子的代码, 倘若没有出现报错的情况的话那就表明环境是没有问题的。from bs4from . , tprint(环境搭建成功)三、核心代码编写手把手拆解每一行都讲清楚我们所拥有的AI Agent被划分成4个核心模块, 其中有环境感知模块, 其职能是获取网页内容, 另有任务规划模块, 该模块的作用是要去确定所要做的步骤, 还有执行模块执行模块负责解析以及提取信息, 除此之外还有存储模块, 存储模块用于保存结果。接下来, 一步步去编写代码, 在整个过程中注释要清晰明了, 即便新手也能够看得懂。步骤1导入所需库和模块# 用于发送网页请求# 用于解析HTMLfrom bs4# 核心模块构建Agentfrom . , tfrom .from .tools Tool从列表, 元组, 任意类型, 联合类型之中。步骤2定义工具函数——让Agent有“干活的能力”执行具体任务时, AI Agent需要“工具”, 这和人干活需要工具是一样的。我们定义3个工具函数。1. 获取网页内容根据链接下载网页HTML2. 解析网页信息提取标题和正文3. 保存到本地文件把提取的内容存成txt。# 工具1获取网页内容def (url: str) - str:try:# 发送请求添加请求头模拟浏览器避免被反爬 {“用户代理”: “/5.0 新台币10.0 64位视窗 64型 /537.36 类壁虎KHTML /120.0.0.0 /537.36”。 .get(url, , 10).() # 抛出HTTP异常. . # 自动识别编码.textas e:f获取网页失败{str(e)}# 工具2解析网页提取标题和正文def (html: str) - str:try:soup (html, html.)# 提取标题title等于soup的title, 如果存在soup的title的话, 否则就是“无标题”。# 提取正文去除和style标签for in soup(, style):.()# 合并结果标题呈现为: {title}, 正文内容是: {text} , 二者以不同分列为两个部分, 组成这样一份文本结果状态。as e:f解析网页失败{str(e)}# 工具3保存内容到本地txt文件try:f.write()f内容已成功保存到 {}as e:f保存文件失败{str(e)}步骤3构建AI Agent核心——让它学会“自主决策”这一步占据着关键局面, 我们所运用的那个整体架构, 使得智能体拥有以此目标为依据自行挑选工具去开展任务的潜力, 而并非需要我们以实际手动操作的方式去调用函数来达成。第1点, 定义工具列表, 将刚才撰写出的函数, 封装成为Agent能够识别的工具。tools Tool(name,func,用于获取指定网页的HTML内容输入参数是网页链接),Tool(name,func,用于对HTML内容做解析, 从中提取标题以及正文, 其输入参数为网页的HTML字符串。),Tool(name,func,它的作用是, 把提取到的内容, 保存到本地的txt文件之中, 其输入参数呢, 是需要保存的文本内容。# 2. 定义Agent类核心决策逻辑class (t):def (self) - List:# Agent的输入是网页链接def plan(self,: List,**: Any,) - Union:# 决策逻辑根据已完成的步骤决定下一步做什么url if not :# 第一步还没做任何事先获取网页内容f调用 工具参数{url}elif len() 1:# 第二步已经获取了HTML下一步解析内容if 失败 in :# 获取失败直接返回结果f调用 工具参数{}elif len() 2:# 第三步已经解析了内容下一步保存到文件if 失败 in :# 解析失败直接返回结果f调用 工具参数{}else:# 所有步骤完成任务已完成async def aplan(self,: List,**: Any,) - Union:# 异步规划这里和同步逻辑一致新手可以忽略self.plan(,** )# 3. 解析工具调用指令def (: str) - Tuple:if 调用 not in :(, )进行分割操作, 先按照“调用”一词进行分割, 之后再依据“工具”一词进行分割, 最后执行去除两端空白字符的操作。 .split(参数).strip()(, )# 4. 创建Agent执行器def r() - :agent ().(agentagent,toolstools,True, # 开启详细日志方便看执行过程步骤4编写主函数——运行AI Agent最后写一个主函数传入网页链接让Agent开始工作if :# 创建Agent执行器 r()# 目标网页链接可以换成你想提取的链接 # 运行Agent .({url: })# 输出结果print(\n 任务执行结果 )print()四、测试运行看AI Agent如何自主完成任务在代码被写完之后, 我们实施测试这一行为, 以此查看当前这个AI Agent从事工作时是否能够依照预期的情况去运行。运行步骤1. 把代码保存为 .py2. 打开终端输入 .py3. 观察终端输出的日志你会看到Agent的执行流程第一步自动调用 工具获取目标网页的HTML第二步如果获取成功自动调用 工具提取标题和正文第三步, 要是解析达成成功的状态, 便会自行去调用那个工具, 将内容完好保存妥当到那个.txt文件之中。最终得出的结果是, 终端会输出任务完成的提示, 与此同时, 在本地生成一个txt格式的文件。常见问题及解决方法1. 那种被表述为“获取网页失败”的状况, 很大程度上是由于目标网站存在反爬机制, 又或者是链接处于无效的情形。能够去尝试更换一个公开的网页链接, 就像举例内容那样去尝试。2. “解析网页失败”, 这种情况有可能是因为网页结构太过复杂, 以至于无法进行解析。若是如此情况, 可以尝试采用 lxml解析器展开解析不过这要求额外安装 pip lxml, 之后需要将 html. 替换为 lxml。3. 出现“保存文件失败”这种情况, 有可能是存在没有得以具备的文件写入权限, 那么不妨将保存路径作出更改, 改成桌面去尝试一下。五、功能升级给你的AI Agent加“buff”这个处于基础版本的人工智能智能体已然能够达成简单的任务, 我们还能够为其增添一些具备实用性质的功能, 从而使得它变得更加智能。升级1支持批量处理多个网页链接修改主函数让Agent能一次性处理多个链接if : r()# 批量链接列表, for i, url in ():print(f\n 针对第 {i 1} 个链接展开处理: {url} )。 .({url: url})print()升级2添加异常重试机制在工具函数里添加重试逻辑比如获取网页失败时重试2次函数定义为, 参数为一个字符串类型的url, 还有一个默认值为2的整数类型参数, 返回值为字符串类型。for i in range( 1):try: {User-Agent: /5.0 ( NT 10.0; Win64; x64) /537.36 (KHTML, like Gecko) /120.0.0.0 /537.36 .get(url, , 10).(). ..textas e:if i :f获取网页失败已重试{}次{str(e)}进行打印操作, 打印的内容为“获取失败, 正在重试第”, 其后紧跟变量 \(i 1\) 的值 , 再接着打印“次 ...”。升级3支持提取指定标签内容将函数更改, 促使它能够把特定的HTML标签给提炼出来, 像是仅仅提炼从某个起始点往后截至特定位置的、标明为标题的那些HTML字符串部分 , 标点符号def (html: str, : List h1, h2, h3, p) - str:try:soup (html, html.)title soup.title. if soup.title else 无标题for tag in : soup.(tag)for elem in :.(elem.(stripTrue))这个句子似乎不太完整你可以补充完整后让我继续为你按照要求进行改写。请把它完整准确地呈现出来。as e:f解析网页失败{str(e)}六、进阶方向从“玩具”到“实用工具”它只是入门案例, 是这个基础版的AI Agent, 若想把它变成真正能实用的工具, 朝着这几个方向深入即可:1. 接入大语言模型, 也就是LLM, 像对接GPT、文心一言这类模型, 以此让Agent能够理解更为复杂的自然语言指令, 存在这样的指令, 例如“帮我提取这篇文章中关于人工智能的段落, 并且用一句话进行总结”。2. 增添记忆功能, 使得 Agent 能够记住先前的任务执行结果, 像是提取过的网页链接, 还有保存的文件路径, 在下次执行的时候无需重复进行相关操作。3. 多Agent协作, 使得多个Agent进行分工合作, 其中一个承担爬取网页的工作, 一个负责分析内容, 还有一个负责生成报告, 以此共同来完成复杂任务。4. 制作添加可视化界面的操作: 运用PyQt来编写一个简易的GUI, 使得那些不明白代码的人也能够借由点击按钮的方式来运用这个Agent。七、总结AI Agent没你想象的那么难很多人认定AI Agent是高深莫测的技术, 然而通过今天的教程能发觉, 只要把握了核心框架以及工具函数, 新手也能够迅速上手。这个案例的核心逻辑并不繁杂, 把那任务划分成逐个步骤, 使得Agent依据当下状态自行挑选工具去执行, 从本质上来说, 就是“自动化 决策逻辑”两者的结合。以这个基础案例作为起始点, 你能够持续增添功能, 终究能创作出可解决实际问题的AI Agent, 它有可能是为你梳理资料的那个“秘书”, 也有可能是帮你抓取数据的那种“爬虫”, 甚或是协助你制定学习规划的那个“助手”。