大家好,我是阿龙。今天我们不聊虚的,直接动手做一个能自主决策、调用外部工具的智能客服Agent。它会像人类客服一样:先查订单、再查知识库,最后给出精准回复,甚至能根据规则拒绝不合规的退款请求。
我会用 DeepSeek模型 作为大脑,配合三个核心工具(订单查询、知识库搜索、退款处理),实现一个完整的ReAct决策循环。全文包含可直接运行的代码,以及两个真实业务场景的推演。
本文所有代码已开源,文末有完整代码,建议收藏后阅读。
纯大模型(如ChatGPT)只能根据训练数据回答,无法获取实时订单状态、无法执行退款操作。而工具(Tool) 赋予它“动手能力”:
- 查询工具:对接数据库,获取订单详情
- 知识工具:对接RAG(检索增强生成),查询最新政策
- 操作工具:执行退款申请等敏感操作
我们的客服Agent会这样工作:
用户提问 → 模型思考 → 调用工具 → 获取结果 → 继续思考 → 最终回答
这个过程叫 ReAct(Reason + Act),是当前最主流的Agent实现模式。
我们先实现三个模拟工具,实际项目中可以把它们换成真实API或数据库查询。
python
GPT plus 代充 只需 145
注意:实际使用时,请将 lecture3_rag 替换为你自己的RAG实现,或者直接用一个简单的关键词匹配函数代替。
我们需要把工具的描述信息注册成模型可以理解的 JSON Schema 格式。这样DeepSeek在生成回复时,会知道什么时候该调用哪个工具,以及需要传递什么参数。
python
现在到了最关键的环节——循环。我们将不断调用DeepSeek,检查它是否要求调用工具,如果有就执行工具并把结果返回给它,直到它给出最终答案。
python
GPT plus 代充 只需 145
几点说明:
tool_choice="auto" 让模型自行决定是否需要调用工具。
工具结果通过 role="tool" 返回给模型,模型会把这些结果当作“观察”来推理下一步。
循环直到模型返回普通文本(即最终答案)才结束。
让我们用两个真实业务问题测试这个Agent。
用户输入:
“我的订单ORD-123还没收到,是不是丢件了?还有你们的退款政策是啥?”
执行过程(模拟输出):
text
可以看到,Agent先查了订单状态,又查了知识库,最后将两者整合回答。这正是多工具协作的魅力。
用户输入:
“帮我把订单ORD-123退了。”
执行过程(模拟输出):
text
GPT plus 代充 只需 145
这里Agent没有盲目调用 process_refund,而是根据业务规则(已发货订单不能直接退款)做出了合理决策。这就是系统提示词和工具调用的结合——模型“理解”了业务约束。
为了防止模型编造订单数据或擅自退款,我们可以在系统提示中加入硬性约束:
python
DeepSeek支持一次返回多个工具调用(例如同时查天气和查汇率)。我们可以利用Python的concurrent.futures并发执行,降低延迟:
python
GPT plus 代充 只需 145
然后将结果依次加入消息列表即可。
单个Agent能力有限,你可以进一步设计多Agent系统:
- 接待Agent:分类用户意图
- 售后Agent:专门处理退款(持有限定工具)
- 技术Agent:专门查阅文档(RAG)
对于标准化流程(如退款必须经过“查询订单→确认用户→提交申请”),也可以将部分流程硬编码为 Workflow,只在异常时让Agent介入。这样既有确定性,又有灵活性。
今天我们实现了一个能自主思考、调用工具、遵循业务规则的智能客服Agent。核心点包括:
- 工具定义:用函数封装外部能力
- 工具描述:通过JSON Schema让模型理解工具
- ReAct循环:反复调用模型,执行工具,直到获得答案
- 实战场景:复合问题、链式决策
- 优化:系统提示约束、并行调用
你可以在此基础上扩展更多工具(如查物流、查积分、修改地址),甚至可以接入真实数据库和RAG系统。Agent的能力边界,只取决于你提供的工具丰富程度。
欢迎在评论区留下你的想法,或者分享你用Agent解决的实际问题。如果觉得文章有用,请点个赞,让更多人看到!
完整代码已整合(下载即可运行,记得替换API key和RAG实现):
完整项目代码下载地址:https://pan.baidu.com/s/1Wm7eAajXU2OqfTIQO0IE2g?pwd=3qte
(本文代码基于DeepSeek API,兼容OpenAI SDK,其他模型需调整接口)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/237600.html