AI PLAY玩法更新持续收录
← 回到更新流

2026-09-30 · 原文发布日

用GPT-5加Qdrant搭英文网站问答机器人

n8n付费模板,卖的是一个带鉴权webhook的网站客服机器人骨架:收到消息后先用OpenAI把意图分成闲聊、知识检索或拒答三类;检索类去Qdrant向量库查站点内容(可叠加Cohere重排),把去重后的标题、URL、摘要拼成上下文,再由带严格JSON schema的agent输出最多五条结果和可选追问,最后按前端约定的JSON格式返回。拒答走固定安全文案。

原文要点

这是Paolo Ronco的付费n8n模板:暴露一个带header鉴权的webhook,把请求归一化为消息和会话ID;用OpenAI把意图分为smalltalk、search、reject三路;reject返回固定安全文案JSON,smalltalk生成简短英文回复;search去Qdrant向量集合检索(可选Cohere重排),把去重后的标题、URL、摘要拼成上下文,再由带严格JSON schema的agent产出最多五条结果和可选追问,最终按前端约定的JSON结构返回。

这次做成什么

理解并复刻这个网站客服机器人的骨架逻辑。注意:原模板需付费购买,本节是本站独立设计的等价练习方案,不是原工作流文件,界面与参数细节需以购买后的原模板核对;OpenAI、Qdrant、Cohere各自可能另行收费。

准备什么

  • 一个可用的n8n实例(云端或自托管)
  • OpenAI API key(分类、闲聊、回答三处共用)
  • 一个Qdrant实例及已灌入站点内容的集合(含url、title元数据)
  • 可选:Cohere API key(启用重排才需要)

具体怎么做

  1. 建鉴权webhook入口

    新建Webhook节点,POST方法,在认证里选Header Auth并新建凭据(如X-Chat-Token: 一串自定的长随机串)。跟随一个Code节点把入参归一化成两个字段:message(用户文本)和sessionId(会话标识),缺失时给默认值。

  2. 意图分类与三路分支

    接OpenAI Chat节点,用下方提示词把message分类为smalltalk、search或reject,只输出一个词。后面用Switch节点按该词分三路:reject直接返回固定安全文案JSON;smalltalk让模型生成一两句英文寒暄;search进入检索分支。

  3. Qdrant检索与上下文拼装

    search分支接Qdrant向量检索节点,指到你的集合(如website_knowledge),取top 5;可选在后面接Cohere重排。用Code节点按URL去重,把每条的title、url、snippet拼成编号列表作为上下文。

  4. 结构化回答与返回

    接OpenAI节点并启用严格JSON schema输出(见下方schema artifact),要求基于上下文产出最多五条结果加可选follow_up_question;解析清洗后用Respond to Webhook节点按前端约定的JSON结构(text或search_results)返回。

可直接复制的材料

意图分类提示词

本站独立编写的练习提示词,非原模板原文;占位符语法按n8n表达式调整。

You are an intent classifier for an English website support chatbot.
Classify the user message into exactly one of: smalltalk, search, reject.
- smalltalk: greetings, thanks, casual chit-chat.
- search: questions answerable from the website's content (products, docs, pricing, policies).
- reject: requests for harmful, illegal, or clearly out-of-scope content.
Reply with only the single label word, nothing else.
User message: {{ $json.message }}

回答agent的JSON schema

本站按原文描述(最多五条结果、可选追问)独立编写的schema示例,原模板的具体schema以购买后文件为准。

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "object",
        "properties": {
          "title": { "type": "string" },
          "url": { "type": "string" },
          "summary": { "type": "string" }
        },
        "required": ["title", "url", "summary"]
      }
    },
    "follow_up_question": { "type": "string" }
  },
  "required": ["results"]
}

前端调用测试报文

本站虚构的测试请求。token为占位值,替换为你在Header Auth凭据里设的串;sessionId格式可与前端自行约定。

{
  "headers": {
    "X-Chat-Token": "demo-token-replace-me"
  },
  "body": {
    "message": "How do I reset my password?",
    "sessionId": "sess-demo-0001"
  }
}

输入与输出示例

本站虚构演示输出,未实际运行;真实字段名以你前端与原模板约定为准。

输入

POST测试报文:{"message": "How do I reset my password?", "sessionId": "sess-demo-0001"},Qdrant集合里有两条相关文档:Password Reset Guide和Account Security FAQ。

对应输出

{"type":"search_results","sessionId":"sess-demo-0001","results":[{"title":"Password Reset Guide","url":"https://example.test/docs/reset","summary":"Open Settings > Security and choose Reset password; a reset link is emailed within minutes."},{"title":"Account Security FAQ","url":"https://example.test/docs/security","summary":"Covers reset links, two-factor setup and locked accounts."}],"follow_up_question":"Are you locked out of your account right now?"}

做完检查这些

  • 无token或token错误的请求被webhook直接拒绝,不进入后续节点
  • 发hello类消息走smalltalk分支,返回简短英文text类型JSON
  • 发站点内容问题走search分支,返回的results不超过5条且URL互不重复
  • 发明显越界请求走reject分支,返回固定安全文案且不调用Qdrant

容易卡住的地方

  • 原模板是付费商品,本方案是等价练习,节点命名和schema细节需购买后核对
  • Qdrant集合必须预先灌入站点内容并带url/title元数据,空集合会让search分支返回空
  • OpenAI的JSON schema输出需要模型和节点版本支持,旧节点可能只有JSON mode,需自行验证
  • Cohere重排是可选增强,不配凭据时不要启用对应开关,否则流程报错
  • OpenAI、Qdrant托管、Cohere均可能单独计费,原文未给出具体费用

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Run an English website chatbot with OpenAI GPT-5 and Qdrant
原作者
Paolo Ronco
原始发布日期
2026-09-30T12:06:42.859Z
来源
https://n8n.io/workflows/20208