v2.1.x

SunBot 智能对话系统

基于大语言模型的呼叫中心 AI 对话引擎
多角色 · MCP 工具集成 · 可视化流程编排

上海尚仪信息科技有限公司 · 技术支持:wang@caiwang.wang

一、系统定位

SunBot 是一套面向呼叫中心场景的 AI 对话中间件,核心职责是:

  • 接收来自呼叫中心中间件(CTI / IVR / ASR)的文本消息
  • 通过大语言模型(LLM)理解用户意图、执行业务工具调用
  • 以流式(SSE)或普通 JSON 方式返回回复文本
  • 支持多角色、多业务流程的灵活配置,无需改代码即可调整话术和流程

二、整体架构

呼叫中心中间件层
IVR / CTI / ASR / TTS
HTTP API(GET / POST)
SunBot 后端(FastAPI + Python 3.13)
角色 Prompt
多角色配置管理
对话流 Flow
可视化节点编排
Skill 技能库
可复用对话模块
编译为 Prompt
LLM 推理层
Qwen / GLM / Ollama
MCP 工具层
Model Context Protocol
会话管理层
上下文 + 变量替换
tool_call
外部业务系统 API
会员查询 / 下单 / 售后登记
MongoDB 数据层
sessions / prompts / flows / skills / mcp_servers / logs

三、核心模块说明

角色 Prompt 管理

每个"角色"是一个完整的 AI 人设配置,包含系统 Prompt、绑定的流程、技能和工具:

字段说明
content系统 Prompt,定义角色行为、话术规则
flow_ids绑定的对话流程列表(编译后嵌入 Prompt)
skill_ids绑定的 Skill 技能模块列表
mcp_server_ids绑定的 MCP 工具服务器列表
is_default是否为默认角色(API 调用时自动 fallback)
设计亮点:角色、流程、技能、工具四者解耦,可自由组合。修改任一配置无需重启,实时生效。
流程 Flow 可视化编译器

流程以节点图形式配置,支持 7 种节点类型:

🚀start流程入口
💬speak机器人说话
📝collect信息收集+验证
🔀condition条件分支
⚡action执行动作
📤output结构化 JSON
🏁end流程结束

编译时从 start 节点出发,BFS 拓扑遍历,将节点图翻译为自然语言 Prompt,嵌入角色 Prompt 中。按 flow_id + updated_at 缓存,数据库变更后自动失效重编译。

技能 Skill 技能库

Skill 是可复用的对话知识模块,以 Markdown 文件形式存储,通过 {{skill:skill_id}} 占位符注入 Prompt,支持多技能叠加。

知识库检索FAQ 知识快速注入
订单查询实时业务数据查询
转人工条件触发转接规则
MarkdownYAML frontmatter 元数据
工具 MCP 工具集成
1LLM 识别用户意图
2生成 tool_call(函数名 + 参数)
3SunBot 路由到对应 MCP Server
4MCP Server 执行业务逻辑(查库 / 写单)
5结果返回 → LLM 生成最终回复

工具粒度控制:每个工具可单独启用/禁用,无需修改 MCP Server 代码。启动时预热 prompt_id → tools[] 映射,变更时自动刷新缓存。

推理 LLM 对话引擎
接口模型特点
Qwen(通义千问)Plus / Max主力,tool_call 最稳定,经过大量生产验证
GLM(智谱)ChatGLM备选,已实现完整 tool_call
Ollama(本地)本地部署模型离线场景,已实现完整 tool_call

Tool Call 循环:最多 5 轮,每轮都传入完整 tools 定义,确保 LLM 在多轮工具调用中不丢失上下文。

会话 会话与变量管理

每个来电对应一个 session_id,多轮上下文隔离。对话历史存储于 MongoDB,支持跨请求连续。变量系统 {{变量名}} 在运行时动态替换,如来电号码、客户姓名等。

四、对话数据流(完整链路)

1. POST /api/chat → 呼叫中心中间件发起请求
2. 路由层 → API Key 鉴权 → 限流 → 加载角色+流程+Skill → 加载 MCP 工具 → 构建上下文
3. LLM 推理 → 构建 messages → 传入 tools → 调用 LLM API → Tool Call 循环(最多 5 轮)
4. 工具执行 → tool_call → 执行 MCP 工具 → 结果追加 messages → 继续下一轮推理
5. 返回结果 → 记录 reply_source → 保存对话到 MongoDB → SSE 流式 / JSON 返回
reply_source 标识:llm 纯 LLM 回复   llm_tool 执行了工具调用后的回复   skill Skill 生成

五、安全与运维

API 鉴权X-API-Key Header 校验,可配置开关
登录安全验证码 + 密码错误锁定(默认 3 次锁 10 分钟)
会话安全Session Token 存 MongoDB,服务端校验,防伪造 Cookie
操作审计全量操作日志(登录/登出/角色变更/用户管理)
授权管理机器码绑定授权,支持试用期和永久授权
性能优化GZip 压缩、静态资源缓存、MCP/Skill 缓存预热
打包部署PyInstaller 单文件 exe,Windows 一键启动
会话超时可配置超时自动清理(默认 5 分钟)

六、接口概览

接口方法说明
/api/chatPOST核心对话接口(支持流式/普通,取决于配置)
/api/chat/streamPOST强制流式对话(SSE)
/api/promptsGET / POST角色列表 / 创建角色
/api/prompts/{id}GET / PUT / DELETE角色详情 / 更新 / 删除
/api/flowsGET / POST流程列表 / 创建流程
/api/mcp/serversGET / POSTMCP 服务器管理
/api/mcp/servers/{id}/tools/{name}/togglePUT工具启用 / 禁用
/api/sessions/{id}/historyGET对话历史查询
/api/interactionsGET对话记录查询(含 reply_source 标识)
/api/license/statusGET授权状态查询

七、技术栈

层次技术选型
Web 框架FastAPI + Uvicorn(异步,高并发)
数据库MongoDB(文档型,灵活 Schema)
LLM 接入通义千问 API / 智谱 API / Ollama
工具协议MCP(Model Context Protocol)
前端原生 HTML + Bootstrap 5 + SSE 实时推送
部署PyInstaller 打包 / Python 直接运行
语言版本Python 3.13

八、典型部署场景

电话进线 IVR 系统
Avaya / 华为 / 科大讯飞
ASR 转文字 SunBot API
POST /api/chat
TTS 合成
语音播报给用户

SunBot 在整个链路中作为纯文本 AI 推理层,与 ASR / TTS / 电话协议完全解耦,可对接任意呼叫中心平台。