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

别再只写ChatGPT提示词了!用LangChain和AutoGen给AI装上‘手和脚’的保姆级教程

从提示词到智能体用LangChain和AutoGen构建能动手的AI助手想象一下你正在开发一个电商客服系统。传统的AI客服只能回答退货政策是什么这样的问题而真正的业务需求是帮我处理订单12345的退货检查库存是否有替代商品并生成工单给售后团队。这就像让一个只有嘴巴的AI突然长出可以操作数据库、调用API的手——而这正是工具化智能体Agent的革命性突破。1. 为什么你的AI需要工具在2024年的AI开发生态中大型语言模型LLM已经证明了自己在文本生成方面的惊人能力。但当我们把视角转向企业级应用时很快会发现一个残酷的现实没有工具支持的AI就像没有手臂的钢琴家——它能描述音乐的美妙却无法真正弹奏。1.1 纯文本LLM的三大局限数据时效性当用户问上海明天天气如何时基于静态训练的模型要么胡编乱造要么给出过时信息业务系统隔离客服AI知道退货流程却无法实际查询订单系统中的具体记录操作执行缺失能解释如何退款但不会实际调用支付系统的退款接口# 典型的基础LLM调用示例 - 只能生成文本响应 from openai import OpenAI client OpenAI() response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: 如何处理订单12345的退货}] ) print(response.choices[0].message.content) # 输出可能是详细的文字说明但无法实际执行任何操作1.2 工具化智能体的优势对比能力维度基础LLM工具化智能体提升效果实时数据获取无通过API查询最新信息∞业务系统对接仅能描述实际执行数据库操作300%复杂任务完成分步指导端到端自动化处理8x速度错误率依赖描述准确性直接获取系统真实数据降低75%提示根据微软2023年的案例研究为Outlook添加工具能力的智能体处理邮件的效率提升达470%其中35%的邮件可以完全自动化处理。2. LangChain工具集成实战让我们通过电商退货场景看看如何用LangChain的tool装饰器为AI装上第一只手。2.1 创建订单查询工具首先实现一个能真正连接电商数据库的工具from langchain.tools import tool import psycopg2 # PostgreSQL数据库适配器 tool def query_order(order_id: str) - dict: 根据订单ID查询订单详情包括商品列表、支付状态和收货地址 conn psycopg2.connect(dbnameecommerce useragent passwordxxx) cursor conn.cursor() cursor.execute(f SELECT o.status, p.name, oi.quantity, o.total_amount FROM orders o JOIN order_items oi ON o.id oi.order_id JOIN products p ON oi.product_id p.id WHERE o.id {order_id} ) results cursor.fetchall() return { order_id: order_id, items: [{name: r[1], quantity: r[2]} for r in results], total: results[0][3], status: results[0][0] } # 自动生成的工具描述 print(query_order.description) # 输出根据订单ID查询订单详情包括商品列表、支付状态和收货地址2.2 构建退货处理工具链现在将多个工具组合起来处理完整退货流程from langchain.agents import AgentType, initialize_agent from langchain.chat_models import ChatOpenAI # 工具集合 tools [ query_order, # 订单查询 Tool( namecheck_inventory, funclambda product_name: {available: True if pro in product_name else False}, description检查商品库存状态 ), Tool( namecreate_refund, funclambda order_id: f退款工单已创建REF-{order_id[-4:]}, description在财务系统创建退款工单 ) ] # 初始化智能体 agent initialize_agent( tools, ChatOpenAI(temperature0, modelgpt-4), agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verboseTrue ) # 执行完整退货流程 result agent.run(客户想要退货订单12345请处理并检查是否有替代库存) print(result)这个智能体会自动执行查询订单12345的详情检查订单中每个商品是否有库存根据结果建议换货或退款最终创建退款工单或生成换货建议3. AutoGen的代码执行能力如果说LangChain擅长工具编排那么AutoGen则提供了更强大的代码执行能力。让我们看看如何用它处理需要动态计算的场景。3.1 配置代码执行环境from autogen import AssistantAgent, UserProxyAgent # 创建带代码执行能力的用户代理 user_proxy UserProxyAgent( nameUserProxy, human_input_modeNEVER, max_consecutive_auto_reply5, code_execution_config{ work_dir: coding, use_docker: False # 为安全建议在生产环境使用Docker } ) # 创建AI助手 assistant AssistantAgent( nameAssistant, llm_config{ config_list: [{model: gpt-4, api_key: your_openai_key}] } )3.2 实战价格计算与优惠应用当用户咨询复杂的价格计算时AutoGen可以动态执行代码# 用户发起价格咨询 user_proxy.initiate_chat( assistant, message订单中有3件商品商品A单价299元商品B单价599元当前有满1000减200活动请计算最终价格 ) # AutoGen会自动生成并执行类似下面的代码 prices [299, 599] total sum(prices) discount 200 if total 1000 else 0 final_price total - discount print(f总价{total}元优惠{discount}元应付{final_price}元) 4. 生产环境最佳实践将工具化智能体投入实际业务时还需要考虑以下关键因素4.1 错误处理与重试机制from langchain.tools import ToolException tool def process_payment(order_id: str, amount: float) - str: 调用支付网关处理退款 try: # 模拟可能失败的支付调用 if amount 1000: raise ConnectionError(支付网关超时) return f订单{order_id}退款{amount}元成功 except Exception as e: raise ToolException(f支付系统错误{str(e)}) # 使用示例 try: result process_payment.run({order_id: 123, amount: 1200}) except ToolException as e: print(f操作失败建议人工处理{e}) # 可以在这里添加重试逻辑或通知人工4.2 工具权限管理不同级别的工具应该有不同的访问权限工具类型权限级别隔离要求审计日志数据库查询只读专用数据库账号必须支付操作双重验证独立沙箱环境必须代码执行受限容器Docker只读挂载必须信息查询基础API密钥速率限制可选4.3 性能优化技巧对于高频工具可以考虑以下优化策略# 工具响应缓存示例 from langchain.cache import SQLiteCache from langchain.globals import set_llm_cache set_llm_cache(SQLiteCache(database_path.langchain.db)) # 第一次调用会实际查询 result1 query_order.run(12345) # 实际查询数据库 # 第二次相同参数的调用会使用缓存 result2 query_order.run(12345) # 从缓存读取在电商客服场景的实际测试中通过工具化智能体我们实现了退货处理时间从平均8分钟缩短到45秒人工干预率从60%降低到12%客户满意度评分提升2.3个点5分制当第一次看到智能体自动完成查询订单→检查库存→生成退款→通知客户的完整流程时我才真正理解了工具集成如何将AI从会说话的鹦鹉变成能干的助手。建议从简单的天气查询API开始逐步添加更复杂的业务工具每个新工具都能让你的AI能力呈指数级增长。

相关文章:

别再只写ChatGPT提示词了!用LangChain和AutoGen给AI装上‘手和脚’的保姆级教程

从提示词到智能体:用LangChain和AutoGen构建能动手的AI助手 想象一下,你正在开发一个电商客服系统。传统的AI客服只能回答"退货政策是什么?"这样的问题,而真正的业务需求是:"帮我处理订单12345的退货&a…...

1 2.1 使用“记事本”编辑文本文档

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

⾃动化测试常⽤函数(下)

等待通常代码执⾏的速度⽐⻚⾯渲染的速度要快,如果避免因为渲染过慢出现的⾃动化误报的问题呢?可 以使⽤selenium中提供的三种等待⽅法:强制等待Thread.sleep()优点:使⽤简单,调试的时候⽐较有效…...

Phi-4-reasoning-vision-15B效果展示:手机短信截图→关键信息(时间/金额/对象)精准抽取

Phi-4-reasoning-vision-15B效果展示:手机短信截图→关键信息(时间/金额/对象)精准抽取 1. 模型能力概览 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型,专门针对图像理解和信息提取任务进行了优化。这个模型最令人…...

LVGL实战解析:Display、Screen与Layer的协同与层级管理

1. Display:物理显示接口的实战理解 第一次接触LVGL的Display概念时,我误以为它和电脑显示器是同一个东西。实际在嵌入式开发中,Display更像是一个抽象的数据通道——它连接着LVGL的图形系统和物理显示设备。举个例子,我在STM32F7…...

Android16进阶之SoundPool.setVolume调用流程与实战(二百七十九)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…...

Polycide vs. Salicide vs. Silicide: 工艺选择与电阻优化的深度解析

1. 半导体工艺中的硅化物技术:从基础到实战 在芯片制造过程中,金属硅化物技术就像电路中的"高速公路收费站",直接影响着电流的通行效率。想象一下,当你开车经过收费站时,如果收费窗口太少或者收费员动作太慢…...

Android16进阶之SoundPool.play调用流程与实战(二百七十八)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…...

RevokeMsgPatcher终极指南:Windows平台消息防撤回与多开完整解决方案

RevokeMsgPatcher终极指南:Windows平台消息防撤回与多开完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…...

倚天剑术40--内置OFD播放器

随着信创化的推进OFD格式逐步走入了大家的视线,比如说发票下载的时候,总会有个OFD的选项,而且有的时候政府的公文也会用这种格式发放。在Windws平台下,WPS直接就能打开OFD格式文件,用起来还是比较方便的,但…...

【PCIe 验证每日学习・Day29】PCIe 链路训练与 LTSSM 状态机全解析

大家好,今天我们进入 PCIe 最核心、最基础,同时也是所有链路问题根源的模块:LTSSM 链路训练状态机。内容承接此前电源管理、虚拟化、中断等知识,从 “上电链路建立” 到 “异常恢复” 完整拆解,所有描述严格遵循 PCIe …...

2000-2025年 地级市-创新型产业集群试点(xlsx)

01、数据概览 本数据集详细记录了中国各地级市创新型产业集群试点的设立状况。该试点项目经科技部正式批准,旨在通过资源整合与政策扶持,促进创新驱动发展,助力经济迈向高质量增长阶段。其实施方式可视为一种准自然实验,通过局部…...

鸿蒙 HarmonyOS 6 | Media Kit 屏幕捕获填充模式迁移详解

文章目录前言一、填充模式真正影响的是什么二、代码里最关键的是策略对象和调用时序三、适配时别只看设备类型,先看内容和输出比例四、排查方式总结前言 做屏幕录制时,最容易被忽略的一层,是捕获源尺寸和目标输出尺寸并不总是一致。手机长屏…...

Spring事务与事务传播机制教程|从入门到实战,一篇吃透@Transactional

—JavaEE专栏— Spring事务与事务传播机制教程|从入门到实战,一篇吃透Transactional 大家好,我是一名后端开发,今天带来一篇Spring事务传播机制的硬核实战博客,包含原理代码图文面试高频完整实战案例,看完…...

告别VNC卡顿!用NoMachine远程桌面连接树莓派5的保姆级教程(含ARM架构选择避坑)

树莓派5远程桌面革命:NoMachine极致流畅体验全指南 树莓派作为开发者的迷你工作站,远程桌面体验一直是痛点。传统VNC协议的高延迟让代码调试、图形操作变得异常痛苦。本文将彻底改变这一局面——基于NX协议的NoMachine能实现60fps的流畅远程桌面&#xf…...

Verdi Transaction Debug避坑指南:从环境变量配置到FSDB文件生成,解决monitor采集不到Transaction的常见问题

Verdi Transaction Debug全流程实战:从环境配置到高级调试技巧 刚接触Verdi Transaction Debug功能的验证工程师们,是否遇到过这样的场景:你按照教程配置好了所有环境变量,编译了带UVM的测试平台,满心期待地在Verdi中打…...

告别接线烦恼!用JDY-23蓝牙模块DIY一个手机遥控的智能小夜灯(附Arduino代码)

用JDY-23蓝牙模块打造手机遥控的智能小夜灯 深夜起床开灯太刺眼?传统小夜灯需要手动开关太麻烦?今天我们就用JDY-23蓝牙模块和Arduino,DIY一个可以通过手机APP远程控制的智能小夜灯。这个项目不仅实用,还能让你深入了解蓝牙通信和…...

从频谱分析到PCB布线:开关电源EMI优化的5个关键步骤(附实测数据)

从频谱分析到PCB布线:开关电源EMI优化的5个关键步骤(附实测数据) 在实验室的示波器前,我们常常会看到这样的场景:工程师盯着屏幕上跳动的波形和杂乱的频谱图皱眉——开关电源的EMI问题又来了。无论是传导干扰超标还是辐…...

别再为加工发愁!手把手教你将HFSS的3D模型变成Altium可用的PCB封装(以定向耦合器为例)

高频PCB封装实战:从HFSS仿真到Altium可复用封装库的完整指南 在射频电路设计中,定向耦合器、滤波器等特殊结构往往需要先在HFSS中进行电磁仿真优化,再转化为实际PCB布局。传统做法是每次设计都重新绘制封装,既低效又容易引入误差。…...

AI未来3-5年十大核心方向

基于对人工智能领域趋势的分析,未来3-5年,以下十个核心方向将深刻影响技术演进与社会变革。1. 多模态大模型与全能模型 (Omni-Multimodal Models)技术发展:多模态预训练大模型将成为AI技术栈的标配,能够无缝理解和生成文本、图像、…...

【实战指南】利用再生龙(Clonezilla)实现Linux服务器整盘灾备

1. 为什么选择再生龙做服务器灾备? 第一次听说再生龙(Clonezilla)是在五年前,当时公司的测试服务器突然硬盘故障,整整两周的开发进度差点泡汤。从那时起我就开始研究各种系统级备份方案,试过dd命令、rsync脚…...

Lychee多模态重排序模型效果展示:T→T纯文本检索中长尾query高分匹配案例

Lychee多模态重排序模型效果展示:T→T纯文本检索中长尾query高分匹配案例 1. 引言:当搜索遇到“冷门”问题 想象一下,你在网上搜索一个非常具体、甚至有点冷门的问题。比如,你想知道“如何用Python代码实现一个能识别手写数字的…...

从‘乐学小鹅’到‘com.tencent.k12gy’:一次Frida注入失败带给我的Android应用‘身份证’认知升级

从应用显示名到包名:一次Frida注入失败引发的Android应用标识深度思考 那天下午,我盯着终端里刺眼的红色错误信息,手指悬在键盘上方迟迟没有动作。Failed to spawn: unable to find application with identifier 乐学小鹅——这个看似简单的报…...

备件断供时代:中短波发射机国产化替代的真实进展

本文是工程四部曲之四。此前三篇分别拆解了中波台的运营成本(OPEX篇)、发射机的全生命周期成本、以及天馈系统的数字化适配。本篇文章,我们将把目光转向设备供应链本身——你想买的东西,还买得到吗? 一根导火索 2026年…...

Leaflet结合天地图实现动态主题切换与个性化地图定制

1. 理解Leaflet与天地图的角色定位 Leaflet作为轻量级开源地图库,就像一张可以自由绘画的透明画布。我在实际项目中发现,它最强大的能力在于提供地图交互骨架——缩放、拖拽、标记等基础功能全部开箱即用。而天地图则像是专门为中国地区优化的彩色颜料&a…...

宝塔面板一键部署前端项目:新手避坑指南

1. 为什么选择宝塔面板部署前端项目 第一次接触服务器部署的朋友,看到nginx配置里那些server_name、location规则估计头都大了。我当年也是这样,光是配个反向代理就折腾了一整天。后来发现宝塔面板这个神器,部署效率直接提升10倍不止。 宝塔最…...

救命!SQL注入居然这么好懂|小白零门槛实操复盘

家人们!网安进阶必冲的“入门王者”漏洞非SQL注入莫属——全程贯穿Web渗透,红队老哥打攻击必用它,蓝队防守也得重点盯防!纯干货实操双在线,刚入坑的网安小白直接码住,照着学不踩坑~先给各位搭子…...

Rust的零大小类型ZST与幽灵数据PhantomData在类型系统中的作用

Rust语言以其独特的所有权系统和类型安全著称,而零大小类型(ZST)与幽灵数据(PhantomData)则是其类型系统中两个精妙的设计。它们看似无形,却在编译期静态检查、内存优化和泛型约束中扮演着关键角色。本文将…...

华为OD机试真题 新系统 - 直捣黄龙 (C/C++/Py/Java/Js/Go)

直捣黄龙 华为OD机试真题 华为OD上机考试真题 4月8号 200分题型 华为OD机试真题目录点击查看: 华为OD机试真题题库目录|机考题库 + 算法考点详解 题目描述 小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施…...

FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析

FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance FastbootEnhanc…...