从零开始打造自己的Manus:学学如何使用 LangChain 快速构建 AI Agent

前言

最近,随着 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: 我需要查询关于特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系统!

如何零基础入门 / 学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

read-normal-img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

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

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

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值