从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!

实战篇


文章目录
  • 系列文章目录
  • 前言
  • 一、LangChain 环境搭建与初始配置
    • 1.1 安装依赖
    • 1.2 环境变量加载
      • 1.2.1 具体步骤
      • 1.2.2 注意事项
    • 1.3 初始化模型客户端
  • 二、使用 LangChain 内建工具
    • 2.1 加载内建工具
    • 2.2 初始化智能体
    • 2.3 使用智能体执行任务
      • 2.3.1 处理数学问题
      • 2.3.2 使用 Wikipedia 查找信息
    • 2.4 观察执行过程
  • 三、定义和使用自定义工具
    • 3.1 安装依赖并导入库
    • 3.2 定义自定义工具
    • 3.3 集成自定义工具到智能体中
    • 3.4 使用智能体执行任务
    • 3.5 错误处理与调试
  • 四、总结

前言

在近年来,LangChain作为一款强大的开源框架,逐渐成为构建基于大型语言模型(LLM)应用的首选工具。它不仅提供了简洁且灵活的API来进行模型的交互,还包括了众多功能模块,支持高效构建多种应用,如智能问答系统、自动化工作流等。LangChain的模块化设计使得开发者能够根据自己的需求灵活组合不同的功能,从而快速实现复杂的业务场景。

LangChain 的核心模块

LangChain 由以下核心模块组成,每个模块都有其特定的功能:

  1. Model(模型)
    • 提供与大语言模型交互的接口,例如 OpenAI、阿里云等的 LLM。
    • 开发者可以轻松配置 API 调用和模型参数。
  2. Prompt(提示词)
    • 提供动态提示词模板管理功能,支持变量插值、Prompt 优化。
    • 适用于创建灵活且高效的模型交互任务。
  3. Chains(链条)
    • 用于将多个任务步骤组合成一个链条,例如多次调用模型完成复杂的推理任务。
    • 支持模块化设计,便于维护和扩展。
  4. Memory(记忆)
    • 提供上下文记忆功能,可以让模型在多轮对话中记住用户的输入和历史对话内容。
    • 适合构建长时间、多轮交互的对话系统。
  5. Output Parsers(输出解析器)
    • 解析模型的返回结果,例如将文本解析为 JSON 结构,便于后续处理。
    • 特别适用于信息提取、分类任务等。
  6. Agents(代理)
    • 集成多种工具(如 API、数据库、文件系统)与模型交互,使模型能够动态调用外部资源完成复杂任务。
    • 适合构建更智能化的自动化工作流。

LangChain 的应用场景

LangChain 的灵活性和模块化设计使其广泛适用于以下场景:

  • 文本生成与翻译:例如生成新闻稿、调整语气风格、翻译专业文档。
  • 智能问答与知识库:构建基于文档、数据库的知识问答系统。
  • 信息提取与分析:从非结构化文本中提取关键信息,例如用户评论分析、商业报告解析。
  • 对话系统与聊天机器人:利用记忆模块支持上下文多轮对话,实现类似 ChatGPT 的应用。
  • 自动化工作流:通过 Agents 模块集成外部工具,完成复杂的任务链,例如自动处理订单或执行 API 查询。

本文主题

本文将探讨如何利用 LangChain 框架中的 Agents(代理) 功能,构建能够自动调用外部工具和资源的智能体。特别地,我们将重点介绍如何使用 LangChain 提供的内建工具,如 DuckDuckGo 搜索和 Wikipedia 进行动态信息查询,同时讲解如何定义和集成自定义工具,扩展智能体的功能以适应更加复杂的任务。

  • 使用内建工具:介绍如何利用 DuckDuckGo 搜索和 Wikipedia 进行信息查询。
  • 定义自定义工具:展示如何创建并集成自定义工具,以扩展智能体的功能。

通过这些内容,读者将学会如何通过 LangChain 构建更加智能化的自动化工作流。


一、LangChain 环境搭建与初始配置

在开始构建 LangChain 应用之前,需要完成基础环境的搭建和配置。

1.1 安装依赖

在项目环境中安装必要的 Python 包:

pip install langchain langchain-community langchain_openai python-dotenv openai docarray langchain-huggingface numexpr wikipedia

这些依赖包含了 LangChain 框架、环境变量管理工具 python-dotenv 和与 OpenAI 模型交互的接口。

1.2 环境变量加载

为了保护敏感信息(如 API Key 和 API URL),建议将这些信息存储在项目根目录下的一个名为 .env 的文件中。这样可以避免将敏感信息直接暴露在代码中,同时方便环境的统一配置。

1.2.1 具体步骤
  1. 创建 .env 文件
    在项目根目录下创建一个名为 .env 的文件。注意,这个文件不需要任何扩展名。
    如果使用版本控制(如 Git),记得将 .env 文件添加到 .gitignore 中,避免敏感信息被提交到代码仓库。

  2. 编写 .env 文件内容
    .env 文件的内容采用键值对的形式,每行一个键值对,格式如下:

阿里云通义千问(Qwen)API 配置
ALIYUN_API_KEY=你的阿里云API密钥
ALIYUN_API_URL=你的阿里云API地址,例如:https://dashscope.aliyuncs.com/compatible-mode/v1

DeepSeek API 配置
DEEPSEEK_API_KEY=你的DeepSeek API密钥
DEEPSEEK_API_URL=你的DeepSeek API地址,例如:https://api.deepseek.com

OpenAI API 配置
OPENAI_API_KEY=你的OpenAI API密钥
OPENAI_API_URL=https://api.openai.com/v1


  • 键名ALIYUN_API_KEYALIYUN_API_URL 是阿里云 API 的密钥和访问地址;DEEPSEEK_API_KEYDEEPSEEK_API_URL 是DeepSeek API 的密钥和地址;OPENAI_API_KEYOPENAI_API_URL 是OpenAI API 的密钥和地址。
  • :具体的密钥和 URL 需要根据实际情况替换为你自己的值。
  1. 在代码中加载 .env 文件
    使用 python-dotenv 模块加载 .env 文件中的内容到 Python 程序中。示例如下:
   import os
   from dotenv import load_dotenv

   # 加载 .env 文件中的环境变量
   load_dotenv()

   # 获取环境变量的值
   api_key = os.getenv("ALIYUN_API_KEY")
   base_url = os.getenv("ALIYUN_API_URL")

1.2.2 注意事项
  • .env 文件应放在项目根目录下,与主代码文件(如 main.py)处于同一级目录。这样 load_dotenv() 可以自动找到 .env 文件。
  • 在使用其他环境变量(如 DEEPSEEK_API_KEYDEEPSEEK_API_URL)时,直接通过 os.getenv("<变量名>") 访问即可。
  • 确保 .env 文件已正确加载。如果程序中获取不到变量值,请检查文件路径和格式是否正确。

通过这种方式,可以在保护敏感信息的同时,方便多环境配置和管理。

1.3 初始化模型客户端

使用 LangChain 提供的 ChatOpenAI,连接阿里云通义千问模型(Qwen):

from langchain_openai import ChatOpenAI # type: ignore

llm = ChatOpenAI(
    openai_api_key=api_key,
    model_name="qwen-plus",
    base_url=base_url
)

至此,环境已经完成初始化,可以开始与模型交互。


二、使用 LangChain 内建工具

LangChain 提供了多种内建工具,这些工具能够帮助开发者实现模型与外部资源的互动,使得智能体能够完成更多复杂的任务。本文将重点介绍如何加载并使用其中的两个常用工具——DuckDuckGo 搜索和 Wikipedia,以便智能体能够获取实时的互联网信息。

2.1 加载内建工具

在使用内建工具之前,我们需要先加载所需的工具。LangChain 提供了 load_tools 函数,方便加载 DuckDuckGo 搜索和 Wikipedia 工具。

import os
from dotenv import load_dotenv # type: ignore
from langchain_openai import ChatOpenAI # type: ignore
from langchain.agents import load_tools, initialize_agent

# 加载 .env 文件中的环境变量
load_dotenv()

# 从环境变量中获取 API Key 和 Base URL
api_key = os.getenv("DEEPSEEK_API_KEY")
base_url = os.getenv("DEEPSEEK_API_URL")

# 初始化 ChatOpenAI 客户端
llm = ChatOpenAI(
    openai_api_key=api_key,  # 必须明确设置 api_key
    model_name="deepseek-chat",  # 使用 deepseek-chat
    base_url=base_url,  # 设置 Base URL
)

tools = load_tools(["llm-math", "wikipedia"], llm=llm)


在上述代码中,我们加载了 llm-mathwikipedia 工具。llm-math 用于数学计算,wikipedia 则用于从 Wikipedia 获取信息。加载这些工具后,智能体可以通过它们来解答不同类型的问题。

2.2 初始化智能体

一旦工具加载完毕,我们就可以初始化智能体。通过 initialize_agent 函数,我们可以将加载的工具与语言模型(LLM)结合,从而使智能体能够动态调用外部工具来执行任务。

from langchain.agents import AgentType

# 初始化智能体,将工具和 LLM 传入
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,  # 使用零样本反应描述代理
    handle_parsing_errors=True,  # 处理解析错误
    verbose=True  # 打印详细的执行过程
)

2.3 使用智能体执行任务

智能体初始化后,我们可以开始让它执行任务。例如,智能体可以解答数学问题,或者查询 Wikipedia 获取关于某个主题的信息。下面是一个简单的数学问题示例:

# 询问智能体 25% 的 300 等于多少
response = agent("What is the 25% of 300?")
print(response)

2.3.1 处理数学问题

通过 llm-math 工具,智能体将计算 25% 的 300,并返回结果。执行后的输出为:

Final Answer: 75.0

2.3.2 使用 Wikipedia 查找信息

智能体也能够使用 wikipedia 工具来查询知识库中的信息。例如,询问智能体有关 Tom M. Mitchell 的书籍,它会自动访问 Wikipedia 查找相关信息并返回答案:

question = "Tom M. Mitchell is an American computer scientist what book did he write?"
result = agent(question)
print(result)

返回的结果将是:

Final Answer: Machine Learning

2.4 观察执行过程

LangChain 提供了调试模式,可以查看智能体的执行过程,帮助开发者了解每个步骤的详细信息。通过调试模式,可以清晰地看到智能体在执行任务时如何选择工具、执行操作并得出结果。

import langchain
langchain.debug = True  # 开启调试模式

# 运行任务
response = agent("What is the 25% of 300?")
print(response)

langchain.debug = False  # 关闭调试模式


三、定义和使用自定义工具

除了 LangChain 提供的内建工具外,开发者还可以根据自己的需求定义并集成自定义工具。通过自定义工具,智能体可以执行更为专门化的任务,从而适应更加复杂的业务场景。本文将展示如何定义一个简单的工具,例如返回当前日期的工具,并将其集成到智能体中。

3.1 安装依赖并导入库

首先,我们需要确保所需的依赖已安装,并导入相关库。为了获取当前日期,我们将使用 Python 内置的 datetime 模块。接着,使用 LangChain 的 @tool 装饰器来定义自定义工具。

from langchain.agents import tool
from datetime import date

3.2 定义自定义工具

在 LangChain 中,自定义工具通过装饰器 @tool 定义,工具函数的输入和输出可以根据需求进行定制。下面我们定义一个简单的工具,返回今天的日期:

@tool
def time(text: str) -> str:
    """返回今天的日期,用于与日期相关的任务"""
    return str(date.today())

time 工具的功能非常简单:当调用时,它将返回当前日期。它的输入参数 text 在本例中并不会实际使用,但保留该参数是为了保持工具接口的统一性。

3.3 集成自定义工具到智能体中

在定义好自定义工具后,我们可以将其集成到智能体中。将自定义工具与其他内建工具一起加载,并初始化智能体,便于它动态执行任务。

from langchain.agents import initialize_agent
from langchain.chat_models import ChatOpenAI

# 初始化 ChatOpenAI 客户端
llm = ChatOpenAI(
    openai_api_key=api_key,  # 必须明确设置 api_key
    model_name="deepseek-chat",  # 使用 deepseek-chat
    base_url=base_url,  # 设置 Base URL
)

# 加载内建工具和自定义工具
tools = load_tools(["llm-math", "wikipedia"], llm=llm)
tools.append(time)  # 将自定义的 time 工具添加到工具列表中

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

3.4 使用智能体执行任务

智能体现在已经具备了调用内建工具和自定义工具的能力。我们可以让智能体执行查询任务并使用自定义工具。例如,我们可以询问智能体今天的日期:

result = agent("What's the date today?")
print(result)

返回结果会是:

Final Answer: Today's date is February 4, 2025.

3.5 错误处理与调试

在实际应用中,智能体可能会遇到错误。为了确保应用的健壮性,我们可以加入错误处理机制。例如,如果某个工具无法正确访问或执行时,智能体会捕获异常并返回相应的错误信息。

try:
    result = agent("What's the date today?")
except Exception as e:
    print(f"Exception occurred: {e}")


四、总结

本篇文章深入探讨了 LangChain 框架中 Agents(代理) 模块的使用方法,详细介绍了如何加载内建工具、初始化智能体,以及如何自定义工具以扩展智能体的功能。以下是核心要点总结:

  1. LangChain Agents 介绍

    • Agents 允许 LLM 结合外部工具,实现更智能的自动化工作流。
    • 适用于动态查询、数据处理和多步骤推理等任务。
  2. 使用 LangChain 内建工具

    • 通过 load_tools() 轻松加载 wikipediallm-math 等工具,让智能体具备实时信息查询和数学计算能力。
    • initialize_agent() 结合 LLM 和工具,使智能体可以自动调用合适的工具执行任务。
  3. 执行智能体任务

    • 通过 LangChain Agents 解决数学计算、Wikipedia 查询等任务,展示了智能体如何动态选择合适的工具来完成不同类型的请求。
    • 开启 langchain.debug = True 调试模式,观察智能体执行任务的每个细节,方便优化和调试。
  4. 定义和集成自定义工具

    • 使用 @tool 装饰器创建自定义工具,例如获取当前日期的 time() 方法,并成功集成到智能体中。
    • 自定义工具的引入,使得智能体可以执行更多定制化任务,不局限于 LangChain 预置的工具集。
  5. 错误处理与优化

    • 通过 try-except 结构捕获可能的异常,提高智能体的稳定性。
    • 结合 verbose=True 参数观察智能体执行过程,帮助优化工具调用逻辑。

LangChain 的 Agents 让 LLM 具备了超越单纯文本对话的能力,使其可以动态选择和调用外部工具,执行更复杂的任务。通过内建工具和自定义工具的结合,开发者可以根据自己的业务需求构建智能化应用,如自动化数据分析、智能搜索、信息提取等。未来,随着 LangChain 生态的发展,可以期待更强大的工具集成能力,让 AI 代理真正成为生产力工具的核心组件。


计算机毕业何去何从?

现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。

零基础如何高效学习大模型?

为了帮助大家打破壁垒,快速了解大模型核心技术原理,学习相关大模型技术。从原理出发真正入局大模型。在这里我和MoPaaS魔泊云联合梳理打造了系统大模型学习脉络,这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码免费领取🆓**⬇️⬇️⬇️

在这里插入图片描述

【大模型全套视频教程】

教程从当下的市场现状和趋势出发,分析各个岗位人才需求,带你充分了解自身情况,get 到适合自己的 AI 大模型入门学习路线。

从基础的 prompt 工程入手,逐步深入到 Agents,其中更是详细介绍了 LLM 最重要的编程框架 LangChain。最后把微调与预训练进行了对比介绍与分析。

同时课程详细介绍了AI大模型技能图谱知识树,规划属于你自己的大模型学习路线,并且专门提前收集了大家对大模型常见的疑问,集中解答所有疑惑!

在这里插入图片描述

深耕 AI 领域技术专家带你快速入门大模型

跟着行业技术专家免费学习的机会非常难得,相信跟着学习下来能够对大模型有更加深刻的认知和理解,也能真正利用起大模型,从而“弯道超车”,实现职业跃迁!

在这里插入图片描述

【精选AI大模型权威PDF书籍/教程】

精心筛选的经典与前沿并重的电子书和教程合集,包含《深度学习》等一百多本书籍和讲义精要等材料。绝对是深入理解理论、夯实基础的不二之选。

在这里插入图片描述

【AI 大模型面试题 】

除了 AI 入门课程,我还给大家准备了非常全面的**「AI 大模型面试题」,**包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG 面试真题等,帮你在面试大模型工作中更快一步。

【大厂 AI 岗位面经分享(92份)】

图片

【AI 大模型面试真题(102 道)】

图片

【LLMs 面试真题(97 道)】

图片

【640套 AI 大模型行业研究报告】

在这里插入图片描述

【AI大模型完整版学习路线图(2025版)】

明确学习方向,2025年 AI 要学什么,这一张图就够了!

img

👇👇点击下方卡片链接免费领取全部内容👇👇

在这里插入图片描述

抓住AI浪潮,重塑职业未来!

科技行业正处于深刻变革之中。英特尔等巨头近期进行结构性调整,缩减部分传统岗位,同时AI相关技术岗位(尤其是大模型方向)需求激增,已成为不争的事实。具备相关技能的人才在就业市场上正变得炙手可热。

行业趋势洞察:

  • 转型加速: 传统IT岗位面临转型压力,拥抱AI技术成为关键。
  • 人才争夺战: 拥有3-5年经验、扎实AI技术功底真实项目经验的工程师,在头部大厂及明星AI企业中的薪资竞争力显著提升(部分核心岗位可达较高水平)。
  • 门槛提高: “具备AI项目实操经验”正迅速成为简历筛选的重要标准,预计未来1-2年将成为普遍门槛。

与其观望,不如行动!

面对变革,主动学习、提升技能才是应对之道。掌握AI大模型核心原理、主流应用技术与项目实战经验,是抓住时代机遇、实现职业跃迁的关键一步。

在这里插入图片描述

01 为什么分享这份学习资料?

当前,我国在AI大模型领域的高质量人才供给仍显不足,行业亟需更多有志于此的专业力量加入。

因此,我们决定将这份精心整理的AI大模型学习资料,无偿分享给每一位真心渴望进入这个领域、愿意投入学习的伙伴!

我们希望能为你的学习之路提供一份助力。如果在学习过程中遇到技术问题,也欢迎交流探讨,我们乐于分享所知。

*02 这份资料的价值在哪里?*

专业背书,系统构建:

  • 本资料由我与MoPaaS魔泊云的鲁为民博士共同整理。鲁博士拥有清华大学学士美国加州理工学院博士学位,在人工智能领域造诣深厚:

    • 在IEEE Transactions等顶级学术期刊及国际会议发表论文超过50篇
    • 拥有多项中美发明专利。
    • 荣获吴文俊人工智能科学技术奖(中国人工智能领域重要奖项)。
  • 目前,我有幸与鲁博士共同进行人工智能相关研究。

在这里插入图片描述

内容实用,循序渐进:

  • 资料体系化覆盖了从基础概念入门核心技术进阶的知识点。

  • 包含丰富的视频教程实战项目案例,强调动手实践能力。

  • 无论你是初探AI领域的新手,还是已有一定技术基础希望深入大模型的学习者,这份资料都能为你提供系统性的学习路径和宝贵的实践参考助力你提升技术能力,向大模型相关岗位转型发展

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

抓住机遇,开启你的AI学习之旅!

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值