在智能客服系统中,AI 回复能力一直是核心竞争力。市面上的大模型平台五花八门——OpenAI、Coze(扣子)、Dify、FastGPT……每个平台的协议各异,接入成本高。更麻烦的是,很多团队有自研的知识库或私有化部署的模型,无法直接对接。
我们最近在客服系统中上线了一个新能力:自定义 HTTP 智能体。你不需要在客服系统里改一行 Go 代码,只要自己写一个 HTTP 接口,返回规定的 JSON 格式,就能把你的私有大模型接入客服系统。
四种模式分别是:
| 模式 | 说明 |
|---|---|
coze | 扣子智能体,支持流式对话和会话上下文保持 |
fastgpt | FastGPT 知识库平台 |
dify | Dify 开源 LLM 应用平台,支持流式 + 访客属性传递 |
http | 自定义 HTTP 接口,完全由用户自行实现后端逻辑 |
自定义 HTTP 模式详解
这是本文的重点。当 BigModelName 配置为 http 时,触发自定义 HTTP 智能体路径:
请求格式(系统 → 你的接口)
系统会以 POST 方式向你的接口发送 JSON,Content-Type: application/json,Body 包含以下字段:
json
{
"visitor_id": "访客唯一ID",
"visitor_name": "访客昵称",
"avatar": "访客头像URL",
"content": "用户发送的消息原文",
"kefu_name": "当前客服名称"
}
响应格式(你的接口 → 系统)
你的接口只需要返回一个字段:
json
{
"result": "你的智能体回复内容"
}
系统通过 gjson.GetBytes(respBody, "result") 解析,取到 result 的值后,会自动以客服身份发送给访客。
超时与错误处理
后端 HTTP Client 已配置 120 秒超时
这意味着:
- 你的接口有 2 分钟 的完整处理时间
- 超时或网络错误会打印日志
"http智能体调用失败",不影响系统其他功能
实践:写一个最简示例
用 Python(Flask)举例,仅需 20 行代码:
python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/my-agent', methods=['POST'])
def my_agent():
data = request.get_json()
user_message = data.get("content", "")
visitor_name = data.get("visitor_name", "用户")
# 这里接入你自己的逻辑:
# - 调用 OpenAI / Claude / 文心一言 / 通义千问
# - 查询知识库 RAG
# - 基于规则的自动回复
reply = f"你好 {visitor_name},你问的是:{user_message}。我是自定义智能体!"
return jsonify({"result": reply})
if __name__ == '__main__':
app.run(port=5000)
然后在客服系统后台:
- 选择智能体知识库平台 →
http - 接口地址 → xxxxxx
- 接口密钥 → 可留空(或你自行在接口中校验)
完成!
对比其他模式
| 特性 | coze | dify | fastgpt | http(自定义) |
|---|---|---|---|---|
| 流式输出 | ✅ | ✅ | ✅ | ❌(同步等待) |
| 会话上下文 | ✅ | ✅ | ✅ | ❌(自己维护) |
| 多轮对话 | ✅ | ✅ | ✅ | ❌(除非自己实现) |
| 零代码接入 | ✅ | ✅ | ✅ | ✅ |
| 灵活性 | 低 | 中 | 中 | 极高 |
| 适合场景 | 标准问答 | 知识库+RAG | 知识库 | 私有模型、自定义逻辑 |
总结
http 模式的核心优势在于 解耦——客服系统不需要知道你的模型是什么、部署在哪里、用了什么协议。它只管把用户消息和访客信息传给你,你返回一个字符串,它帮你投递给用户。
这种设计让你可以:
- 接入私有化部署的大模型(如公司内网的 Llama、ChatGLM)
- 实现基于规则的自动回复(查数据库、调内部 API)
- 组合多个模型做一个路由层(简单问题用规则,复杂问题走大模型)
- 在返回结果前做后处理(敏感词过滤、格式美化)
可以说,客服系统变成了一个纯粹的”消息管道”,智能对话的全部逻辑都由你掌控。