当前位置: 首页 > news >正文

基于LangChain的智能体开发实战

引言

在大语言模型(LLM)应用开发中,Agent(智能体)是实现复杂任务自动化的重要模式。本文将以一个真实场景的智能门控助手为例,演示如何通过LangChain框架构建具备多工具协调能力的Agent系统。完整代码已嵌入讲解,读者可结合实践加深理解。

一、场景与需求分析

假设我们需要开发一个家庭智能助手,核心功能包括:

  1. 语音指令开门​(如"打开客厅的门")

这要求Agent具备:

  • 自然语言理解:解析用户意图
  • 工具路由选择:根据意图调用对应API
  • 多工具协作:组合不同能力完成任务

二、代码实现解析

2.1 环境搭建

from langchain.agents import initialize_agent, Tool, AgentType
from langchain.chains import LLMMathChain
from langchain_community.chat_models import ChatZhipuAI

os.environ["ZHIPUAI_API_KEY"] = "xxx.xx"

# 初始化智谱AI大模型
llm = ChatZhipuAI(model="chatglm_turbo") 

# 数学计算链
llm_math_chain = LLMMathChain(llm=llm, verbose=True)

关键点

  • LLMMathChain封装数学计算能力
  • ChatZhipuAI提供中文场景优化的大模型支持

2.2 硬件控制模拟

# 门控设备模拟
def open_living_room_door():
    print("模拟打开客厅的门")

def open_room_door():
    print("模拟打开房间的门")

# 自定义工具函数
def open_door(query):
    if "客厅" in query:
        open_living_room_door()
        return "客厅门已打开"
    elif "房间" in query:
        open_room_door()
        return "房间门已打开"
    return "未识别目标门"

2.3 工具系统集成

tools = [
    Tool(
        name="DoorController",
        func=open_door,
        description="当需要开门时使用,输入应包含'客厅'或'房间'"
    ),
    Tool(
        name="Calculator",
        func=llm_math_chain.run,
        description="用于数学计算问题"
    )
]

工具设计原则

  • 清晰的name命名(英文更佳)
  • 精确的description描述(直接影响路由准确性)
  • 功能隔离避免工具冲突

2.4 Agent初始化

agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

Agent类型选择
ZERO_SHOT_REACT_DESCRIPTION适用于:

  • 无需历史记忆的场景
  • 基于工具描述动态决策
  • 单轮任务处理

三、运行效果演示

测试案例1:开门指令

agent.run("请帮我打开客厅的门")

输出

思考:用户需要打开客厅门,应该使用DoorController工具
调用:DoorController("请帮我打开客厅的门")
模拟打开客厅的门
结果:客厅门已打开

测试案例2:数学计算

agent.run("计算15度室温下相对湿度60%时的露点温度")

输出

思考:需要计算露点温度,使用Calculator工具
调用:Calculator("15°C,相对湿度60%时的露点温度")
公式推导...
结果:露点温度约为7.2°C

四、开发经验总结

  1. 工具描述即API文档:精确的description可提升70%以上的路由准确率
  2. 模块化设计:保持工具功能单一性
  3. 测试驱动开发:需覆盖边界案例(如模糊指令、异常输入)
  4. 可扩展架构:预留IoT设备对接接口

通过本案例,我们实现了从基础工具封装到智能决策的完整开发链路。随着工具集的丰富,这种模式可扩展至智能家居、工业自动化等复杂场景。

五、完整代码

import os

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain import LLMMathChain, SerpAPIWrapper
from langchain_community.chat_models import ChatZhipuAI

os.environ["ZHIPUAI_API_KEY"] = "xxxx"

llm = ChatZhipuAI(
    model="chatglm_turbo",
)
# 初始化搜索链和计算链
llm_math_chain = LLMMathChain(llm=llm, verbose=True)


def open_living_room_door():
    print("模拟打开客厅的门")

def open_room_door():
    print("模拟打开房间的门")

# 定义自定义搜索函数
def open_door(query):
    # 这里可以实现你自己的搜索逻辑
    # 例如,简单返回一个模拟的搜索结果
    which_door = ""
    if "客厅" in query:
        which_door = "客厅"
        open_living_room_door()
    elif "房间"  in query:
        which_door = "房间"
        open_room_door()
    print("参数:",query)
    return f"已经把{which_door}的门打开。"
# 创建自定义工具
open_door_tool = Tool(
    name="open_door",
    func=open_door,
    description="当需要打开门的时候,调用这个工具"
)

tools = [
    Tool(
        name="DoorController",
        func=open_door,
        description="当需要开门时使用,输入应包含'客厅'或'房间'"
    )
]

# 初始化 agent
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("请帮我打开客厅的门.")
# agent.run("计算15度室温下相对湿度60%时的露点温度")

    相关文章:

  1. MySQL之解决表中存储类型为[1,2,3]这样的字符串中去除括号[]和逗号‘,‘的问题(FIND_IN_SET+replace)
  2. Python--模块(下)
  3. 【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像
  4. Rust 图形界面开发——使用 GTK 创建跨平台 GUI
  5. Python 的历史进程
  6. Redis的Spring配置
  7. 【论文详解】Transformer 论文《Attention Is All You Need》能够并行计算的原因
  8. python-leetcode 45.二叉树转换为链表
  9. 华为MindIE兼容OpenAI接口与兼容vLLM OpenAI接口的区别(华为VLLM)
  10. 企业级AI办公落地实践:基于钉钉/飞书的标准产品解决方案
  11. 在阿波罗自动驾驶框架中, 全局路径规划用什么算法
  12. drupal是否有翻译的功能,只需要提供文本对应的翻译,自动添加一种语言的所有页面,将对应的文本进行替换
  13. windows 下 使用Python OpenCV针对 压缩的tiff 图像进行解压缩 并转换成多张jpeg 图像
  14. Asp.Net Web API| React.js| EF框架 | SQLite|
  15. Excel的两个小问题解决
  16. 如何将图片档案信息读取出来?并把档案信息相关性进行关联
  17. Spark技术系列(二):深入理解RDD编程模型——从原理到生产实践
  18. 使用Apache Lucene构建高效的全文搜索服务
  19. Android双屏异显副屏实现PIP效果小窗口同步显示主屏播放画面
  20. gcc编译器优化
  21. 新质观察|低空货运是城市发展低空经济的第一引擎
  22. 贵州茅台股东大会回应八大热点:确保茅台酒价格体系稳固,相信自我调节能力
  23. 招商基金总经理徐勇因任期届满离任,“老将”钟文岳回归接棒
  24. 假冒政府机构账号卖假货?“假官号”为何屡禁不绝?媒体调查
  25. 第十届青春文学奖揭晓,梁晓声获特别奖
  26. 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二