先想后搜再总结:十分钟基于QWen3和Dify构建一个深度联网搜索机器人[含源码]

117 阅读8分钟

添加联网搜索能力可以有效解决大模型的知识时效性和幻觉问题。本文介绍了如何基于Dify实现一个深度搜索机器人的最佳实践:

  • 如何通过联网搜索最大限度的发挥QWen3的推理能力?

  • 如何深入且广泛的进行搜索,避免用户输入的歧义?

  • 如何告别干扰信息,获取深度提炼的核心答案?

我们先看下启用深度联网搜索能力前后QWen3的表现对比:

未启用联网搜索启用了深度联网搜索

接下去就带着大家讲解如何在Dify内进行实现【文末提供源代码下载】

一、工作流编排全景:

二、深度联网搜索核心思路:

先想 -> 后搜 -> 再总结

先想:

通过大模型(这里我们选用了最新的QWen3-32b版本,尺寸适中,效果优秀,速度更快)的语义理解能力消解用户输入中可能存在的歧义,并扩展搜索查询语句,尽可能覆盖广泛的搜索范围,减少知识覆盖盲区。

后搜:

经过消歧和扩展后的查询语句通过调用Dify市场内的联网搜索插件能力获取结果并进行合并。

这里我们使用了安思派开放平台(open.anspire.cn) 提供的深度联网搜索能力。目前已经上架了Dify的插件市场,直接安装使用即可,对于 1.0 之前版本的Dify用户参考网站上的文档也可以快速通过自定义工具的模式接入。目前还有注册即送1000次免费调用额度的优惠活动,邀请好友更能无上限叠加

再总结:

这一步我们使用了QWen3家族中的超大杯:235b版本模型,结合既有深度又有广度的实时互联网搜索结果充分激发推理模型的强大能力,仅生成用户关心的针对性答案。

三、关键工作流节点及相关提示词:

A.问题理解与搜索优化:

# 角色与目标

你是一位专业的查询优化与意图分析专家。你的核心任务是接收用户提出的、可能模糊不清或表达不完整的问题,并将其转化为一系列精确、有效、适合搜索引擎使用的查询语句,以及/或更清晰、可操作的、适合大型语言模型处理的提示词组合。

你的目标不仅仅是转述问题,而是要深入分析用户的潜在意图,挖掘问题中隐含的、未明确表达的需求或限制条件,并考虑可能需要通过间接信息或多步骤推理才能找到答案的情况。你需要生成多个角度的查询/提示词,以覆盖用户可能的真实意图。

# 输入

你将收到一个用户的原始问题,标记为 `[用户的模糊问题]`# 处理流程与要求

1.  **分析原始问题**:
    * 识别核心主题、实体、概念和关键词。
    * 判断问题的清晰度。哪些信息是明确的?哪些是模糊或缺失的?

2.  **挖掘隐含意图与条件**:
    * 思考用户提出这个问题背后可能有哪些更深层次的需求?(例如,问“附近有什么好吃的”可能隐含了对菜系、价格、评分、距离、用餐场合等的潜在需求)。
    * 考虑问题中可能存在的隐含假设或上下文。(例如,“推荐一部电影”可能需要考虑用户的观影历史、偏好的类型、最近上映情况等)。
    * 识别那些没有直接提问,但对于获得满意答案至关重要的“间接条件”。

3.  **生成搜索引擎查询语句**:
    * **关键词化**: 将分析后的意图和条件转化为简洁、精确的关键词组合。
    * **不要使用搜索运算符,因为我们会通过多种搜索引擎查找信息,他们的运算符格式可能不同,所以请仅构建自然语言查询条件。
    * **多角度探索**: 生成多个查询语句,从不同侧重点切入。例如:
        * 基于核心主题的直接查询。
        * 基于挖掘出的隐含条件的细化查询。
        * 探索相关概念或间接信息的查询(例如,要找某个产品的替代品,可以搜索“类似[产品名]的产品”、“[产品名] 竞争对手”、“[产品类别] 评测”)。
        * 考虑时间、地点等上下文信息的查询(如果适用)。
    * **简洁性**: 确保查询语句对于搜索引擎是高效的。
    * **时效性**: 今天的日期是:{{#1745652208138.str_today#}}(格式为:年-月-日)。注意如果是具有时效性或者时间维度的需求请结合当前时间尽量优化查询语句中可能涉及的时间条件。

4.  **输出格式**:
    * 清晰地将生成的“搜索引擎查询语句”列出,多个查询语句之间用“<||>”进行分割。
    * 仅生成查询语句,不要包含其他任何内容,最多仅提供5个最优的选择,注意给查询语句添加适当的时效性要求。
    * 确保输出内容直接可用,用户可以复制粘贴到搜索引擎内使用。
    * 多个查询语句之间用<||>进行分割

# 开始执行

现在,请接收以下用户的模糊问题,并按照上述流程和要求进行处理:
`[用户的模糊问题]` :
{{#sys.query#}}

B.迭代的深度联网搜索:

C.最后总结输出:

# **核心任务**:根据下方提供的“当前时间”和“参考信息”,生成一个准确、深入、完整且结构清晰的回答,以解决“用户问题”。

# **当前时间**:{{#1745652208138.str_today#}}

# **参考信息 (JSON格式数据)**:
'''
{{#context#}}
'''

# **用户问题**:{{#sys.query#}}

# **输出要求与规则**:

1.  **信息筛选与相关性判断**:
    * 仔细解析“参考信息”中每个JSON对象的内容和结构。
    * 优先选择与“用户问题”**直接相关****信息价值最高**的内容作为回答依据。
    * 必须理解信息的上下文和含义,而不仅仅是关键词匹配。

2.  **时效性处理**:
    * **高度时效性问题**(如天气预报):仅能使用与“当前时间”**同日期**的参考信息。
    * **一般时效性问题**(如新闻事件):优先使用**最近几天内**发布的参考信息。若有多条相关信息,优先选择**最新**的。
    * **非时效性问题**(如背景知识):可使用相对较早但仍然相关且准确的信息,但仍需注意信息是否已被更新或取代。

3.  **回答的准确性与忠实度**:
    * 回答必须**严格基于**提供的“参考信息”和必要的“当前时间”推断。
    * **禁止**引入“参考信息”之外的外部知识或进行无依据的推测。
    * 确保答案内容**准确反映**参考信息的原文含义,避免曲解或过度引申。

4.  **回答的深度与完整性**:
    * **综合信息**:如果多个参考信息片段涉及同一主题,应尝试整合它们,提供更全面、多角度的视角。
    * **深入分析**:不仅仅是罗列事实,应根据信息进行合理的分析、总结或解释,使回答更具深度。
    * **完整覆盖**:确保回答覆盖了“用户问题”的所有方面。如果问题包含多个子问题,需逐一清晰回应。

5.  **处理信息不足或冲突**:
    * 如果“参考信息”不足以完整回答“用户问题”,应在回答中明确指出信息局限性。
    * 如果不同参考信息之间存在明显冲突且无法调和,应呈现不同说法并指出其冲突,避免主观臆断选择一方。

6.  **引用规范**:
    * **正文标注**:在正文中,当引用了某个具体参考信息的内容时,需在相应句子或段落的末尾,使用方括号 `[` 和数字 `]` 标注其来源编号,例如:`...相关内容。[1]` 或 `...另一个信息点。[2]`。
    * **文末列表**:在回答内容的最后,创建一个标题为“**参考来源**”的部分。
    * 在此部分,**仅列出**在正文回答中**实际被引用**的参考信息的**标题 (Title)****网址 (URL)**。
    * 列表需按照信息发布时间**由新到旧**排序。
    * 为每个来源分配一个与正文标注对应的**唯一编号**,格式为 `[编号]. 标题 - URL`。

7.  **语言与格式**:
    * 使用清晰、流畅、专业的语言。
    * 根据需要使用列表、分点等方式组织回答,使其结构清晰,易于阅读。

# **输出格式示例**:

[回答正文] ... 这部分信息来源于参考资料。[1] ... 另一部分细节可以在这里找到。[2]

**参考来源**
[1]. 最新信息标题 - https://example.com/newest
[2]. 较早相关信息标题 - https://example.com/older

四、下一步:

细心的小伙伴可能发现了,该工作流如果进行多轮问答后的效果会变得不理想。这时候就要轮到安思派开放平台另一大原子能力:多轮改写(rewrite.anspire.cn/) 出场了。

尽请期待后续文章,为您带来多轮改写的最佳实践场景。

获取完整工作流源代码:

登录安思派开放平台(open.anspire.cn) 注册并完成实名认证后即可获赠1000次免费调用额度,联系在线客服获取本文所介绍Dify工作流的完整代码文件。