langchain构建简单agent

一.背景

        LangChain 作为大语言模型(LLM)应用开发的核心框架,其核心价值在于将 LLM 与外部工具、数据来源、工作流进行协同整合,而 **Agent(智能体)** 是 LangChain 实现 “自主决策与行动” 的关键组件 —— 简单 Agent 能够基于用户指令,自主判断任务类型、选择工具执行操作、整合结果并生成最终响应,突破了 LLM 仅能被动生成文本的局限。构建简单 Agent 的需求,源于纯 LLM 应用在处理复杂任务时的核心痛点,也是开发者从 “调用 LLM API” 走向 “搭建智能应用” 的入门关键。

1.纯 LLM 应用的核心痛点

        在使用 LangChain 构建 Agent 之前,开发者通常直接调用 LLM(如 GPT-3.5/4、通义千问、文心一言)的 API 实现功能,但这种方式在处理稍复杂的任务时,会暴露诸多难以解决的问题:

        1. 无法处理需要外部数据的任务

        LLM 的知识局限于训练数据的截止时间(如 GPT-4 训练数据截止到 2024 年中),且无法访问实时数据(如最新天气、股票价格、企业内部数据库)或私有数据(如本地文档、企业知识库)。例如,用户询问 “2025 年最新的人工智能行业报告核心数据”,纯 LLM 无法获取实时信息,只能生成模糊的回答,甚至给出错误数据。

        2. 不具备执行具体操作的能力

        LLM 仅能生成文本,无法直接执行外部操作:如计算复杂的数学公式、调用 API 接口、查询数据库、发送邮件等。例如,用户要求 “计算 1000 的阶乘并将结果保存到本地文件”,纯 LLM 可以给出计算思路,但无法实际完成计算与文件写入操作,需开发者手动编写代码实现,效率极低。

        3. 任务处理缺乏逻辑拆分与决策能力

        对于多步骤任务(如 “查询北京明天的天气,然后推荐适合的户外活动,最后生成一份出行计划”),纯 LLM 只能一次性生成结果,无法按步骤拆解任务、验证中间结果的正确性,也无法根据中间结果调整后续行动。例如,若天气查询结果为 “下雨”,纯 LLM 可能仍推荐户外活动,导致结果不符合实际需求。

        4. 对模糊指令的处理能力不足

        用户的指令往往是模糊的、非结构化的(如 “帮我了解一下我们公司最新的销售数据并做简单分析”),纯 LLM 无法明确指令中的核心需求(如 “最新” 是指今日还是本月、“销售数据” 包含哪些维度、“分析” 需要哪些指标),也无法主动追问用户补充信息,只能基于猜测生成回答,结果往往不符合用户预期。

        5. 缺乏错误修正与迭代能力

        纯 LLM 生成的结果若存在错误(如计算错误、信息错误),无法自主检测并修正,也无法重新执行任务来获取正确结果。例如,LLM 计算 “2025 年 10 月 1 日是星期几” 时出现错误,只能等待用户指出后重新调用 API,无法自主验证并纠正。

2.LangChain 构建简单 Agent 的核心价值

        LangChain 构建的简单 Agent,本质是将LLM(大脑,负责决策)工具(手脚,负责执行操作)记忆(短期存储,负责保存中间结果) 三者整合为一个自主运行的系统。即使是简单 Agent,也能解决纯 LLM 应用的痛点,核心价值体现在:

        1. 整合外部数据与工具,扩展能力边界

        LangChain 为 Agent 提供了丰富的工具集成能力,包括内置工具(如搜索引擎、计算器、文件操作、API 调用)和自定义工具(如企业内部数据库查询、知识库检索)。Agent 可根据用户指令,自主选择工具获取外部数据或执行操作,突破 LLM 的能力限制。例如,Agent 可调用搜索引擎获取最新行业报告数据,调用计算器完成复杂计算,调用文件工具保存结果。

        2. 实现任务的自主拆解与步骤化执行

        简单 Agent 能够将多步骤任务拆解为单个子任务,按顺序执行并验证中间结果。例如,对于 “查询天气→推荐活动→生成计划” 的任务,Agent 会先调用天气工具获取结果,再根据天气结果选择推荐工具,最后调用文本生成工具生成计划,确保每一步结果的正确性,最终输出符合逻辑的结果。

        3. 具备模糊指令的解析与交互能力

        Agent 可对模糊指令进行解析,若发现信息不足,会主动向用户追问补充信息(如 “你所说的‘最新销售数据’是指今日还是本月的?”),直到明确需求后再执行任务,大幅提升回答的准确性与用户体验。

        4. 拥有基础的决策与反馈机制

        Agent 以 LLM 为核心,能够根据用户指令和工具执行的中间结果,自主决策下一步行动:如 “是否需要调用工具”“调用哪个工具”“是否需要结束任务”“是否需要修正错误”。例如,若工具返回的天气数据为空,Agent 会尝试调用另一个天气工具,而非直接生成结果。

        5. 降低智能应用的开发门槛

        LangChain 提供了标准化的 Agent 架构(如 AgentExecutorToolLLMChain)和丰富的预设组件,开发者无需从零编写决策逻辑与工具集成代码,只需几行代码即可构建出具备自主决策能力的简单 Agent,大幅降低了智能应用的开发成本与门槛。

3.LangChain 简单 Agent 的典型应用场景

  1. 个人智能助手:构建能够处理日常任务的简单 Agent,如查询天气、计算数据、设置提醒、检索本地文档信息等,替代传统的语音助手,具备更强的自主决策能力。
  2. 企业知识库问答:Agent 整合知识库检索工具,能够根据用户问题自主检索企业内部文档(如 PDF、Word、Markdown),并生成精准的回答,无需用户手动查找文档。
  3. 数据查询与分析:Agent 连接企业数据库或外部数据 API,能够根据用户的自然语言指令(如 “查询本月的销售总额并对比上月数据”),自主查询数据、进行简单分析并生成报告。
  4. 简单的自动化任务:Agent 整合邮件发送、文件操作、API 调用等工具,能够完成自动化任务(如 “将今日的销售数据发送给销售经理并保存到本地 Excel 文件”),无需人工干预。
  5. 教育与学习辅助:Agent 整合计算器、搜索引擎、知识点检索工具,能够为学生解答问题(如 “解释牛顿第二定律并计算相关物理题”),并提供个性化的学习建议。

4.关键优势总结

        LangChain 构建简单 Agent 的核心价值,是将 LLM 从 “文本生成工具” 升级为 “具备自主决策与行动能力的智能体”:即使是简单 Agent,也能解决纯 LLM 应用在数据访问、操作执行、任务拆解上的痛点,实现从 “被动响应” 到 “主动服务” 的转变。同时,LangChain 的标准化组件大幅降低了 Agent 的开发门槛,让开发者能够快速搭建出满足实际需求的智能应用,是进入大语言模型应用开发的重要入门环节。

        综上,LangChain 构建简单 Agent 的需求,源于开发者对 LLM 应用 “能力扩展、自主决策、任务自动化” 的核心诉求:解决了纯 LLM 应用的诸多痛点,支撑个人助手、企业知识库、数据分析等核心场景,为构建更复杂的多 Agent 系统奠定了基础。

二.具体实现

1.引入依赖

from langchain.agents import create_agent
import sys
import io
import os

2.定义大模型配置

if sys.stdout.encoding != 'utf-8':
    sys.stdout.reconfigure(encoding='utf-8')
if sys.stderr.encoding != 'utf-8':
    sys.stderr.reconfigure(encoding='utf-8')
os.environ['PYTHONIOENCODING'] = 'utf-8'

os.environ["OPENAI_API_BASE"] = "xxx"
    

os.environ["OPENAI_API_KEY"] = "xxx"

3.定义工具函数

def get_weather(city: str) -> str:
    """针对城市给出天气情况."""
    return f"在 {city} 天气很热!"

4.定义agent

agent = create_agent(
    model="gpt-4.1-2025-04-14",
    tools=[get_weather],
    system_prompt="你是个很好的助手",
)

5.调用agent

# Run the agent
result = agent.invoke(
    {"messages": [{"role": "user", "content": "广州天气如何?"}]}
)

# 提取并打印最终的回答
if result and 'messages' in result:
    messages = result['messages']
    # 获取最后一条AI消息(通常是最终回答)
    for msg in reversed(messages):
        if hasattr(msg, 'content') and msg.content and hasattr(msg, '__class__'):
            if 'AIMessage' in str(type(msg)):
                print(f"\n助手回答: {msg.content}")
                break
else:
    print(result)

6.结果如下

### 使用 LangChain 构建 AI Agent 的优势和特点 LangChain 是一个强大的框架,专为构建对话式 AI 应用程序设计。以下是使用 LangChain 构建 AI Agent 的主要优势和特点: #### 1. 灵活的工具集成能力 LangChain 提供了丰富的工具集,可以轻松地将多种外部资源(如搜索引擎、数据库、API 等)与语言模型结合[^3]。通过定义工具并将其集成到 Agent 中,AI 可以调用这些工具来扩展其功能,而不仅仅依赖于模型自身的知识[^1]。 #### 2. 支持多代理模式 LangChain 提供了多种代理模式,例如 ReAct 和 OpenAI Functions,开发者可以根据具体需求选择合适的代理类型。这些代理模式能够优化任务执行流程,使 Agent 更加高效地完成复杂任务[^3]。 #### 3. 内置记忆机制 通过使用 `ConversationBufferMemory`,LangChain 能够让 AI 记住历史对话信息,从而实现更自然、连贯的对话体验。这种记忆功能对于需要上下文理解的应用场景尤为重要。 #### 4. 易于调试与追踪 LangChain 集成了 LangSmith 工具,可以帮助开发者对应用进行调试和性能追踪。这使得问题排查更加简便,同时也有助于持续改进 Agent 的表现[^1]。 #### 5. 简化的开发流程 LangChain 提供了高度模块化的架构,简化了从工具定义到 Agent 部署的整个开发过程[^2]。开发者可以通过简单的配置快速搭建出功能齐全的 AI Agent。 #### 6. 社区支持与文档完善 LangChain 拥有活跃的开源社区和详尽的官方文档,为开发者提供了大量的学习资源和技术支持[^2]。这有助于降低学习成本,加快项目进度。 #### 示例代码:创建一个简单的 AI Agent 以下是一个使用 LangChain 创建 AI Agent 的示例代码,展示了如何定义工具并将其集成到 Agent 中: ```python from langchain.agents import initialize_agent, Tool from langchain.llms import OpenAI from langchain.tools import DuckDuckGoSearchRun # 初始化语言模型 llm = OpenAI(temperature=0) # 定义工具 search = DuckDuckGoSearchRun() tools = [ Tool( name="Search", func=search.run, description="Useful for when you need to answer questions about current events" ) ] # 初始化 Agent agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) # 测试 Agent response = agent.run("谁是2023年诺贝尔奖得主?") print(response) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边草随风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值