详细介绍:第14章 AI Agent——构建自主智能助理

news/2025/9/30 19:24:38/文章来源:https://www.cnblogs.com/ljbguanli/p/19121680

详细介绍:第14章 AI Agent——构建自主智能助理


1. 项目概述

如果说LLM是“大脑”,那么Agent就是赋予这个大脑“身体”和“工具”的系统,使其能够感知环境、做出决策、并采取行动。Agent是当前AI领域最激动人心的前沿方向之一,它代表着从被动响应到主动执行的范式转变。本项目将带你进入Agent的世界,构建一个能够自主规划和执行任务的智能助理。

核心目标:

开发一个具备基本Agent能力的AI助理,它能够:

  1. 理解复杂指令:接收一个高层次的目标,例如“查询今天北京的天气,并计算100美元按当前汇率是多少人民币”。
  2. 自主规划 (Planning):将复杂目标分解成一系列可执行的子任务。
  3. 工具使用 (Tool Use):调用外部API(如天气查询、汇率计算)来获取信息或执行操作。
  4. 结果整合 (Synthesis):整合所有子任务的结果,形成最终的、符合用户目标的答案。

你将学习到的核心技术:

  1. Agent框架:理解主流Agent框架(如LangChain, LlamaIndex)的核心思想和组件。
  2. ReAct (Reason + Act) 思想:学习Agent如何通过“思考”和“行动”的循环来完成任务。
  3. Function Calling:掌握如何利用LLM的Function Calling能力,使其能够结构化地调用外部工具。
  4. 任务分解与执行:了解Agent如何处理依赖关系,一步步完成复杂任务。
Agent工作流程图
graph TDA[用户输入高层目标] --> B{Agent核心循环}subgraph sLoop[Agent核心循环]B1[思考 - Reasoning: 我应该做什么?] --> B2[规划 - Planning: 分解任务,选择工具]B2 --> B3[行动 - Action: 调用工具API]B3 -- 返回结果 --> B4[观察 - Observation: 分析工具结果]B4 --> B1endB -- 任务完成 --> C[整合最终答案]C --> D[返回给用户]subgraph sTools[外部工具 - APIs]T1[天气查询API]T2[汇率计算API]T3[搜索引擎API]endB3 --> T1B3 --> T2B3 --> T3

2. 核心概念:Agent = LLM + 规划 + 工具

一个基础的Agent系统可以被看作是以下三个核心组件的结合:

  • LLM (大脑):作为认知核心,负责理解、推理、规划和决策。
  • 规划 (Planning):将用户的复杂目标分解为一系列可管理的小步骤。最经典的模式是ReAct,即Reason(思考下一步该做什么)和Act(执行选择的动作)的交替循环。
  • 工具 (Tools):赋予Agent与外部世界交互的能力。工具可以是任何东西:一个函数、一个API端点、一个数据库查询等。通过Function Calling,LLM可以输出结构化的JSON来指定调用哪个工具以及传递什么参数。

3. 项目实战:构建一个LangChain Agent

LangChain是一个强大的Agent开发框架,它极大地简化了构建Agent的复杂性。我们将使用LangChain和OpenAI的Function Calling能力来构建我们的智能助理。

3.1 环境准备

!pip install -q langchain langchain_openai langchain_community duckduckgo-search

3.2 定义我们的工具 (Tools)

我们将为Agent提供两个工具:一个用于网络搜索,一个用于数学计算。

import os
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_core.tools import Tool
# 设置你的OpenAI API密钥
# os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
# 1. 搜索工具
search_tool = DuckDuckGoSearchRun()
# 2. 计算器工具 (使用lambda函数快速定义一个简单的工具)
# LangChain会自动推断出这个函数的输入和输出
calculator_tool = Tool(
name="Calculator",
func=lambda expression: eval(expression), # 注意:eval有安全风险,仅用于演示
description="当你需要计算数学表达式时使用。"
)
# 将所有工具放入一个列表
tools = [search_tool, calculator_tool]

3.3 初始化LLM和Agent

我们将使用支持Function Calling的OpenAI模型,并使用LangChain提供的便捷函数来创建一个Agent。

from langchain_openai import ChatOpenAI
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
# 选择一个支持Function Calling的模型
llm = ChatOpenAI(model="gpt-3.5-turbo-1106", temperature=0)
# 设计Agent的Prompt
# 这个Prompt模板告诉Agent它的角色、可用的工具,以及如何与用户互动
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个乐于助人的AI助理。你可以使用工具来回答问题。"),
("user", "{input}"),
# MessagesPlaceholder是Agent存储其思考和行动历史的地方
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
# 创建Agent
# 这个函数将LLM、工具和Prompt绑定在一起
agent = create_openai_functions_agent(llm, tools, prompt)
# 创建Agent执行器 (Agent Executor)
# 这是Agent的运行环境,负责执行Agent的决策
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True # 设置为True可以看到Agent的完整思考过程
)

3.4 运行Agent并测试

现在,我们可以向Agent提出一个需要结合使用工具才能完成的复杂问题。

# 提出一个复杂问题
# 这个问题需要Agent先搜索百度的市值,然后用计算器进行汇率转换
question = "百度目前的市值是多少美元?如果1美元等于7.2人民币,那么换算成人民币是多少?"
# 运行Agent
response = agent_executor.invoke({"input": question})
print("\n--- Agent的最终回答 ---")
print(response["output"])

当你运行上述代码并设置verbose=True时,你将在控制台看到非常详细的输出,它会展示Agent的完整“心路历程”:

  1. Thought: 用户想知道百度的市值(美元)并换算成人民币。我需要先搜索百度的市值,然后用计算器计算。第一步是搜索。
  2. Action: DuckDuckGoSearchRun(query="百度市值")
  3. Observation: (返回搜索结果,例如“百度市值约为350亿美元”)
  4. Thought: 我已经知道市值是350亿美元了。现在我需要计算350 * 7.2
  5. Action: Calculator(expression="350 * 7.2")
  6. Observation: (返回计算结果 2520)
  7. Thought: 我已经完成了所有步骤,现在可以给出最终答案了。
  8. Final Answer: 百度目前的市值约为350亿美元,换算成人民币约为2520亿元。

4. 总结与展望

通过这个项目,你已经成功构建并运行了一个具备基本规划和工具使用能力的AI Agent。这只是Agent世界的冰山一角,但它为你打开了通往更高级AI应用的大门。

可以探索的扩展方向:

  • 更复杂的工具:尝试集成更强大的API,例如发送邮件、操作日历、查询数据库,甚至控制智能家居设备。
  • 多Agent协作:设计一个系统,其中包含多个专门的Agent(如“研究员Agent”、“程序员Agent”、“报告撰写Agent”),它们可以相互协作,共同完成一个宏大的任务。
  • 记忆与学习:为你的Agent增加长期记忆能力(通常通过向量数据库实现),使其能够记住过去的交互,并从中学习,变得越来越“懂你”。
  • 开源Agent框架:除了LangChain,还可以探索其他优秀的开源Agent框架,如AutoGen (微软)、LlamaIndex等,它们在多Agent协作等领域提供了独特的解决方案。

Agent技术的发展日新月异,它正在重新定义人与机器的协作方式。掌握Agent开发,你将站在AI应用创新的最前沿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设宣传广告03340 网站建设与管理

响应式设计方法对开发者非常有用,因为它使我们的内容在各种设备上广为传播。不用保留几个独立版本的网站,也可以摒除诸如缩放和流式布局这些方法的弊端。 缩放、流式布局与响应式 这些术语容易造成混淆,设计师常常错误地交替互用。实际上&…

网站建设费用属于业务宣传费吗软件企业

写在前面的话: 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏后,才记得曾经有人提醒过。 核心军规 1、不在数据库做运算 cpu计算务必移至业务层 2、控制单表数据量 int型不超过1000w,含char则不超过500w&#xf…

Java入门级教程21——Java 缓存技术、RMI远程办法调用、多线程分割大档案

Java入门级教程21——Java 缓存技术、RMI远程办法调用、多线程分割大档案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

如何建设网站 知乎aoc24g2色域

随着信息技术的迅猛发展,计算机和网络已经成为了我们日常生活中不可或缺的工具,用于办公、通信和协作。尽管这些信息系统提高了工作效率,但也引发了一系列与信息安全相关的问题,例如如何有效地保护存储在这些系统中的关键数据&…

PowerToys新工具Light Switch:让Windows自动切换明暗主题

微软PowerToys将新增Light Switch工具,可根据时间自动切换Windows明暗主题。用户可设置地理位置或特定时间,还能选择仅系统、仅应用或两者同时切换主题,提升视觉舒适度。PowerToys:在Windows上根据时间自动切换明暗…

丰县做淘宝网站网站聚合页面怎么做

1005.K次取反后最大化的数组和 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。) 以这种方式修改数组后…

icoc.cc是哪个网站域名琼海网站制作

问题: 问题1磁盘满 1.原本是100G的大小,我们实际还没接入真正业务,昨日空间满了,需要帮忙看下是什么原因导致磁盘满的吗 数据库是每天备份一次,是不是备份的太频繁,还是数据量的问题导致,需要…

java从word模板生成.doc和.wps文件

当遇到要生成一个word文档(证明文件等)的需求时,就可以考虑使用word模板生成.doc和.wps文件 一、需求 1、生成如下这样的订单数据.doc文件,红框部分是变化的,其余部分是固定的2、生成如下这样的书籍列表,书的个数…

做我女朋友好不好手机网站汕头网站制作电话

一、介绍带有金属球的球形倾斜开关,它用于检测小角度的倾斜。图7.1 倾斜开关模块二、材料准备Arduino Uno 主板*1USB数据线*1倾斜开关模块*1杜邦线若干三、实验原理在倾斜开关中小球以不同的倾斜角度移动以造成触发电路的原理。倾斜开关模块使用双向传导的球形倾斜开…

分布式限流方案 - 详解

分布式限流方案 - 详解2025-09-30 19:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

炼石#8 T1

赛时很快想出切掉,感觉比t2恶心🤢,可能是二分做法的问题(bushi 想法简单,贪心想法保留m个最小的 ,于是二分k用来区分大数和小数 , 如果小于k/2为小数 , 显然小数是必拿 ,然后在每个小数之间最多只能有一个大…

中国建设银行卖狗年纪念币官方网站百度推广seo软件

标题:深入解析JVM内部机制:探索Java虚拟机的工作原理 摘要:本文将深入解析Java虚拟机(JVM)的内部机制,探索其工作原理。我们将从JVM的架构、内存管理、垃圾回收、即时编译器等方面进行讨论,并通…

详细介绍:《C++ Primer Plus》读书笔记 第二章 开始学习C++

详细介绍:《C++ Primer Plus》读书笔记 第二章 开始学习C++pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

网站后台数据库下载企业网站服务类型

纯HTML外贸公司通用企业html网站模板源码 源码地址:https://download.csdn.net/download/Highning0007/89150720

【虚拟机】“:域名解析出现暂时性错误”VMware配置DNS

前言 最近家里路由器换了,虚拟机忘记重新配置,导致下午在apt的时候出现这个错误环境 软件:VMware Workstation 17 Pro 系统:Windows 10 网络:使用NAT模式作为虚拟机网络 步骤2. 选中虚拟机使用的虚拟网络,点击NA…

十堰网站建设电话wordpress 登录地址

1.Hazelcast介绍 Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展、高性能的分布式内存计算。并通过提供诸如Map,Queue,ExecutorService,Lock和JCache等Java的许多开发人员友好的分布式实现。 Hazelcast优…

双抗 ADC:如何突破传统 ADC 瓶颈,成为癌症治疗的精准杀伤利器?

在癌症靶向治疗领域,单克隆抗体(单抗)药物曾凭借 “精准识别肿瘤靶点” 的优势改变治疗格局,但随着临床应用深入,其局限性逐渐凸显 —— 癌症发病机制复杂,多靶点协同驱动肿瘤进展、单一靶点靶向易引发耐药、肿瘤…

通州网站建设公司如何建立自己的公司

前言:博主第一次接触MongoDB,看了一圈网上现有的教程,不是缺少细节就是有问题没交代清楚,特整理了一下自己安装运行的过程,从下载安装到开机自启,全程细节齐全、图文并茂、简单易懂。 目录 1. 从官网下载2…

电子商务网站建设预算表seo是指什么岗位

使用 netstat 检查端口 netstat 是一个命令行工具,可以提供有关网络连接的信息。 netstat - atulnp会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段 -a :all,表示列出所有的连接,服务监听&#xff…

网站备案域名需要解析到备案服务器吗设计软件的软件

第一、搭建python环境 安装python 第二、下载Gstreamer 下载Gstreamer 第三、编写 GStreamer 插件 编写 GStreamer 官方资料 其他 第四、Gstreamer中文文档 中文文档