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

dify应用探索

一个典型的 Agent

Multi-Agent 系统

智能导购会根据用户意图分类并传递给相应商品导购Agent,返回商品信息。采用Multi-Agent架构,其中Router Agent负责对用户问题进行意图 分析,并路由到其它商品导购Agent,商品导购Agent负责向厥客收 集商品参数信息。

功能亮点:

  • 主动式交互: 系统能够主动向顾客询问商品需求,例如规格、品牌偏好、预算等,提供更贴近顾客需求的推荐。

  • 精准推荐: 基于百炼大模型的智能分析能力,从商品数据库中快速检索并匹配顾客需求。

  • 自动化架构: 通过 Multi-Agent 系统协调多个子任务,实现数据采集、需求分析和推荐等功能的高效协作。

流程图

架构图

规划助理(Router Agent)

上述示例程序中用于意图识别的模块是规划助理(Router Agent)。规划助理根据用户意图进行分类后,将用户的问题按需传递指定的商品导购 Agent。 ROUTER_AGENT_INSTRUCTION = """你是一个问题分类器 请根结合用户的提问和上下文判断用户是希望了解的商品具体类型。 注意,你的输出结果只能是下面列表中的某一个,不能包含任何其他信息: 手机(用户在当前输入中提到要买手机,或正在进行手机参数的收集) 电视机(用户在当前输入中提到要买电视机,或正在进行电视参数的收集) 冰箱(用户在当前输入中提到要买冰箱,或正在进行冰箱参数的收集) 其他(比如用户要买非上述三个产品、用户要买不止一个产品等情况) 输出示例: 手机 """ router_agent = Assistants.create( model="qwen-plus", name='引导员,路由器', description='你是一个商城的引导员,负责将用户问题路由到不同的导购员。', instructions=ROUTER_AGENT_INSTRUCTION )

电视导购助理(TV guide agent)

TV_GUIDE_AGENT_INSTRUCTION = """你是负责给顾客推荐电视的智能导购员。 你需要按照下文中【电视的参数列表】中的顺序来主动询问用户需要什么参数的电视,一次只能问一个参数,不要对一个参数进行重复提问。 如果用户告诉了你这个参数值,你要继续询问剩余的参数。 如果用户询问这个参数的概念,你要用你的专业知识为他解答,并继续向他询问需要哪个参数。 如果用户有提到不需要继续购买商品,请输出:感谢光临,期待下次为您服务。 【电视的参数列表】 1.屏幕尺寸:【50英寸、70英寸、80英寸】 2.刷新率:【60Hz、120Hz、240Hz】 3.分辨率:【1080P、2K、4K】 如果【电视的参数列表】中的参数都已收集完毕,你要问他:“请问您是否确定购买?”,并同时将顾客选择的参数信息输出,如:50英寸|120Hz|1080P。问他是否确定需要这个参数的电视。如果顾客决定不购买,要问他需要调整哪些参数。 如果顾客确定这个参数符合要求,你要按照以下格式输出: 【屏幕尺寸:50英寸,刷新率:120Hz,分辨率:1080P】。请你只输出这个格式的内容,不要输出其它信息。""" tv_guide_agent = Assistants.create( model="qwen-max", name='电视导购', description='你是一个电视导购,你需要询问顾客想要什么参数的电视。', instructions=TV_GUIDE_AGENT_INSTRUCTION )

根据用户问题及 thread 中存储的历史对话识别用户意图

router_agent_response = get_agent_response(agent_name="意图分类", input_prompt=input_prompt, thread_id=thread_id) classification_result = parse_streaming_response(router_agent_response)

如果分类识别为其他时,引导用户调整提问方式

if classification_result == "其他": return_json["content"] = "不好意思,我没有理解您的问题,能换个表述方式么?" return_json['current_agent'] = classification_result return_json['thread_id'] = thread_id

如果分类是手机、电视机或冰箱时,让对应的 Agent 进行回复

else: agent_response = get_agent_response(agent_name=classification_result, input_prompt=input_prompt, thread_id=thread_id) for chunk in agent_response: response_json["content"] = chunk response_json['current_agent'] = classification_result response_json['thread_id'] = thread_id

参考

https://developer.aliyun.com/article/1648142

http://www.xdnf.cn/news/10665.html

相关文章:

  • 全文索引详解及适用场景分析
  • NLP学习路线图(十七):主题模型(LDA)
  • AI Agent企业级生产应用全解析
  • Greyctf 2025 writeup
  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【位运算】只出现⼀次的数字 II(medium)
  • 1. 前言与安装pytorch、d2l
  • 【Java学习笔记】异常
  • Chapter 10 Inductive DC–DC Converters
  • MCP (模型上下文协议):AI界的“USB-C”标准,开启大模型应用新纪元
  • C语言基础(10)【二维数组 字符数组 字符串相关操作】
  • 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 用“照片放大/缩小”来通俗理解多尺度
  • QT入门学习(二)---继承关系、访问控制和变量定义
  • Dockerfile常用指令介绍
  • 【Redis】Set 集合
  • Python列表、字典、元组、集合
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 39. 组合总和【 力扣(LeetCode) 】
  • 从万物互联到万体智联:论智能体互联网带来的产业革命
  • 可视化大屏如何制作
  • SQL快速入门【转自牛客网】
  • 强人工智能 vs 弱人工智能:本质区别与未来展望
  • CppCon 2014 学习:Defensive Programming Done Right.
  • 嵌入式Linux 期末复习指南(下)
  • Java递归编程中的StackOverflowError问题分析与解决方案
  • 软件测评师教程 第9章 基于质量特性的测试与评价 笔记
  • 新版智慧社区(小区)智能化弱电系统解决方案
  • 记录一次由打扑克牌测试国内各家大模型的经历