前言

最近,随着 Manus 的强势出圈,「智能体(Agent)」这一概念一下子占据了人们的视野,成为AI领域最新的流量密码。那么,智能体到底是什么?我们又该如何快速入门打造自己的智能体应用呢?其实,作为大模型开发热门框架的LangChain,就能帮助我们轻松实现这一目标。今天,就让我们从零开始,一起看看如何用LangChain打造一个专属于自己的Agent智能系统吧!

Agent 简介

借用知乎用户邓炎的一张图,从这张图可以清晰地看出,AI智能体(Agent)并不是简单的对话工具,而是具备了更为丰富的自主能力和结构化思维流程的智能系统。

img

首先,AI智能体具备三大核心能力:记忆(Memory)规划(Planning)和工具使用(Tool Use)

  • 记忆赋予Agent短期和长期的记忆能力,让Agent能够记录和回顾之前的交互信息,保证决策的一致性。
  • 规划则是Agent进行自主思考的重要部分,它能对任务进行子目标拆解,建立思维链路,并在执行中不断反思和完善自身策略。
  • 工具使用则扩展了Agent的能力边界,它能够调用外部工具(如计算器、天气查询、网页搜索、代码执行等),实现自主解决更复杂的现实任务。

同时,AI智能体还能与其他Agent进行交互协作,实现任务的协同完成。通过记忆、规划、行动和工具使用之间不断循环迭代,形成了一套完整的闭环系统,使AI智能体在处理任务时更加智能、自主和高效。

假设你想了解明天的天气情况,这时你向一个Agent提问:“明天上海的天气如何?”

  • 首先,Agent会规划如何完成这个任务(Planning),明确需要调用哪些工具。
  • 接着,Agent会采取行动,例如调用外部的天气查询工具(Action & Tool Use),获取上海明天的天气数据。
  • 获取信息后,Agent会将这些数据反馈给你,例如:“明天上海晴转多云,温度18~26摄氏度。”
  • 同时,Agent将这次交互的内容存入记忆(Memory),如果你之后再追问“那后天呢?”,Agent就能基于先前的上下文提供连贯的信息。
  • 若问题更复杂,比如“明天适合去哪里玩?”,Agent还可以调用其他工具,比如网页搜索或地图服务,综合各类信息再次进行规划与行动,以更完整地回应你的需求。

通过上述过程,AI智能体的规划、行动、记忆、工具使用互相协作,形成完整的智能闭环,从而更高效、更智能地实现用户提出的目标或任务。这就是一个典型的AI Agent运作流程。

基础智能体构建

环境准备

首先为了让大家能真正上手agent的构建,因此这里我们所使用的大模型都换成了国内的,那课程中介绍的就是从阿里官方的百炼大模型平台调用的qwen-turbo模型(可以参考回前面的课程内容),我们需要获取到api_key才能继续完成项目。

除了api_key的准备以外,我们还需要下载一些相关的库,大家只需要把下面的代码放在终端运行即可。Langchain内部有一些版本会冲突,所以请务必重开一个新的环境并进行安装。

pip install langchain==0.3.20 langchain-community==0.3.19 langchain-core==0.3.44 dashscope==1.22.2 tenacity==8.5.0 wikipedia numexpr DateTime

导入模型

在获取到api_key后,我们就能够基于langchain社区中所支持的ChatTongyi来进行大模型的载入。值得一提的是,ChatTongyi的使用范围并不仅仅只是qwen模型,而是百炼大模型平台上所有的模型都可以使用,包括最近爆火的Deepspeek-R1,我们只需要修改一下名称即可。

import os
from langchain_community.chat_models.tongyi import ChatTongyi

# 设置 API 密钥
os.environ["DASHSCOPE_API_KEY"] = '你的api_key'

# 初始化通义千问模型
llm = ChatTongyi()

导入工具并创建智能体

接下来我们就可以导入一些工具进来,那这里作为测试我们导入的就是llm-math(计算器)以及wikipedia(维基百科),还有其他的代码工具可以通过查看官方文档(load_tools — 🦜🔗 LangChain documentation[1])进行查询。然后我们就可以完成智能体的创建了!

from langchain.agents import initialize_agent, AgentType, load_tools

# 加载常用工具,例如数学计算和维基百科
tools = load_tools(["llm-math", "wikipedia"], llm=llm)

# 创建并初始化智能体Agent
agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    handle_parsing_errors=True,
    verbose=True
)

值得一提的就是这个agent的类型我们选择的是CHAT_ZERO_SHOT_REACT_DESCRIPTION,除此之外我们还有其他可选择的,我们可以从官方文档中查询(AgentType — 🦜🔗 LangChain documentation[2]),包括:

AgentType 说明
ZERO_SHOT_REACT_DESCRIPTION 零样本 ReAct 代理,执行推理(Reasoning)后再行动(Acting)。适用于通用任务。
REACT_DOCSTORE 类似 ZERO_SHOT_REACT_DESCRIPTION,但 带有文档存储,可以查找信息再回答问题。
SELF_ASK_WITH_SEARCH 复杂问题拆解代理,将 复杂问题分解成多个小问题,然后使用搜索工具查找答案。
CONVERSATIONAL_REACT_DESCRIPTION 适用于 对话场景 的 ReAct 代理,支持多轮对话。
CHAT_ZERO_SHOT_REACT_DESCRIPTION 适用于 聊天模型 的零样本 ReAct 代理(适用于 GPT-4、通义千问)。
CHAT_CONVERSATIONAL_REACT_DESCRIPTION 适用于 聊天+多轮对话 的 ReAct 代理,适合更自然的对话交互。
STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION 适用于 结构化聊天 的 ReAct 代理,支持 多输入工具 调用。

此外,handle_parsing_errors=True其实的作用是如果 LLM 生成了 无效的 JSON 或命令,是否自动处理解析错误。其实就是避免输出的结果格式不准确导致智能体时效的情况发生,一般是需要勾选上的。

结果展示

在准备好了智能体后,我们就可以尝试进行使用了。具体操作如下:

# 执行Agent任务并输出结果
response = agent.invoke("计算一下300的25%是多少?")

print(response['output'])

由于我们在创建智能体(Agent)时设置了 verbose=True,因此执行过程被详细记录并展示出来。从日志中可以看到,智能体首先进行了 规划(Thought),确定需要使用 计算器(Calculator) 来完成百分比计算。随后,它执行了一次 行动(Action),调用了 Calculator 工具,并输入计算指令 300 * 0.25

在工具执行后,智能体接收到了 观察结果(Observation),即计算器返回的答案 75.0。此时,智能体再次进行思考,并得出结论——它已经获得了最终答案。因此,在 最终回答(Final Answer) 阶段,智能体直接给出了结论:“300 的 25% 是 75”。至此,整个推理链条顺利完成,最终返回正确答案。

> Entering new AgentExecutor chain...
Thought: 我需要使用计算器来进行百分比计算。
Action:

{
"action": "Calculator",
"action_input": "300 * 0.25"
}


Observation: Answer: 75.0
Thought:我现在知道最终答案了。

Final Answer: 30025%75> Finished chain.
30025%75

这个就是我们最简单的一个框架,假如我们这个时候问一些关于文学类的问题,那其自然也会通过工具在维基百科上进行搜索。

> Entering new AgentExecutor chain...
Thought: 我需要查询关于特X普的信息。
Action:

{
"action": "wikipedia",
"action_input": "特X普"
}

Observation: Page: Transcription into Chinese characters
Summary: Transcription into Chinese characters is the use of traditional or simplified Chinese characters to phonetically transcribe the sound of terms and names of foreign words to the Chinese language. Transcription is distinct from translation into Chinese whereby the meaning of a foreign word is communicated in Chinese. Since English classes are now standard in most secondary schools, it is increasingly common to see foreign names and terms left in their original form in Chinese texts. However, for mass media and marketing within China andfor non-European languages, particularly those of the Chinese minorities, transcription into characters remains very common.
Except for a handful of traditional exceptions, most modern transcription inMainland of China uses the standardized Mandarin pronunciations exclusively.

Page: List of metro systems
Summary: This list of metro systems includes electrified rapid transit train systems worldwide. In some parts of the world, metro systems are referred to as subways, undergrounds, tubes, mass rapid transit (MRT), metrô or U-Bahn. As of 22 December 2024, 204 cities in65 countries operate 891 metro lines.
The London Underground first opened as an underground railway in1863and its first electrified underground line, the City and South London Railway, opened in1890, making it the world's first deep-level electric metro system. The Budapest Millennium Underground Railway, which opened in 1896, was the world's first electric underground railway specifically designed for urban transportation andis still in operation today. The Shanghai Metro is both the world's longest metro network at 808 kilometres (502 mi) and the busiest with the highest annual ridership reaching approximately 2.83 billion passenger trips. The Beijing Subway has the greatest number of stations, with 424. As of 2024, the country with the most metro systems is China, with 54 in operation, including 11 of the 12 longest networks in the world.

Page: List of Seton Hall University people
Summary: The following is a list of notable people associated with Seton Hall University, located in the American city of South Orange, New Jersey.
Thought:我找到了关于特X普的相关信息。
Final Answer: 特X普(Donald Trump)是美国著名的商人、电视名人和政治家,曾于2017年至2021年担任美国第45任总统。他在纽约出生并长大,毕业于宾夕法尼亚大学沃顿商学院。特X普在成为总统之前,主要从事房地产开发和管理业务,并参与了许多高知名度的建筑项目。他还主持过真人秀节目《学徒》。作为总统,特X普以其独特的风格和政策立场而闻名,包括强调“美 国优先”、退出多项国际协议、加强边境安全以及推动减税等。他的任期充满了争议和关注,对美国及全球都产生了深远的影响 。

> Finished chain.
特X普(Donald Trump)是美国著名的商人、电视名人和政治家,曾于2017年至2021年担任美国第45任总统。他在纽约出生并长大,毕业于宾夕法尼亚大学沃顿商学院。特X普在成为总统之前,主要从事房地产开发和管理业务,并参与了许多高知名度的建筑项目。他还主持过真人秀节目《学徒》。作为总统,特X普以其独特的风格和政策立场而闻名,包括强调“美国优先”、退出多项国际协议、加强边境安全以及推动减税等。他的任期充满了争议和关注,对美国及全球都产生了深远的影响。

当然智能体肯定不只是可以调用一个工具而已,当我们的任务变得越来越复杂的时候,智能体能够调用多个工具为我们解答,直到其认为自己完成了任务才会将最终的结果进行返回。我们在网络上很火的DeepResearch其实就是基于这个原理实现的!

该部分完成代码如下:

import os
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain.agents import initialize_agent, AgentType, load_tools

# 设置 API 密钥
os.environ["DASHSCOPE_API_KEY"] = '你的api_key'

# 初始化通义千问模型
llm = ChatTongyi()

# 加载常用工具,例如数学计算和维基百科
tools = load_tools(["llm-math", "wikipedia"], llm=llm)

# 创建并初始化智能体Agent
agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    handle_parsing_errors=True,
    verbose=True
)

# 执行Agent任务并输出结果
#response = agent.invoke("计算一下300的25%是多少?")
response = agent.invoke("请你介绍一下特X普。")
print(response['output'])

进阶操作——自建工具

除了使用官方给出的工具以外,其实我们还可以自己来构建一些工具来帮助我们完成任务。

比如说我想构建一个工具来返回今天的时间,那我其实可以这样来进行创建(我们需要在函数的注释里说明清楚其具体的使用方式,智能体会通过注释去判断具体需要使用哪些工具):

#!pip install DateTime  # 安装 DateTime 库(如果未安装)
from langchain.agents import tool
from datetime import date

@tool
def time(text: str) -> str:
    """返回今天的日期。用于任何与获取今天日期相关的问题。
    
    该函数的输入应始终为空字符串,且它始终返回今天的日期。
    任何与日期相关的计算应在此函数之外完成。
    """
    return str(date.today())

然后我们就把工具加到智能体的创建中并询问获取结果:

agent= initialize_agent(
    tools + [time], 
    llm, 
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    handle_parsing_errors=True,
    verbose = True)

response = agent.invoke("今天是星期几呀")
print(response['output'])

我们可以发现结果其真能调用我们刚刚创建的工具time并推断出今天是星期四:

> Entering new AgentExecutor chain...
Thought: 我需要知道今天的日期,然后我可以推断出今天是星期几。
Action:

{
“action”: “time”,
“action_input”: “”
}


Observation: 2025-03-13
Thought:今天是2025年3月13日。根据日期,我们可以推断出今天是星期四。

Final Answer: 今天是星期四。

> Finished chain.
今天是星期四。

所以我们可以根据自己的想法和需求来创建出合适的工具并进行使用!大家也可以把自己写的一些函数转换为工具进行尝试!

总结

总的来说,本节课详细介绍了 LangChain Agent(智能体) 的概念,并通过代码实践,帮助大家快速上手 构建属于自己的 AI 智能体。智能体不仅仅是一个简单的对话工具,而是具备 记忆(Memory)规划(Planning)工具调用(Tool Use) 三大核心能力的智能系统,能够自主推理、调用工具,并最终完成复杂任务。希望大家能够通过这节课对Agent的整个框架有所了解,也能打造出属于自己甚至是本行业的agent系统!

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐