大模型管理与智能客服 · 完整使用与配置文档
适用对象:GFast V4 后台管理员、二次开发者
对应模块:后台「大模型管理」「智能客服」
目录
一、模块总览
| 后台菜单 | 路由 | 功能 |
|---|---|---|
| 大模型管理 → 大模型配置列表 | /llm/config |
管理接入的 LLM/Embedding/Rerank 模型 |
| 大模型管理 → mcp服务器配置列表 | /llm/mcp |
管理 MCP 工具服务器(SSE) |
| 大模型管理 → AI对话 | /llm/chat |
与模型对话(可调用 MCP 工具) |
| 智能客服 → 知识库管理 | /kb/knowledge |
创建知识库(绑定模型、分块参数) |
| 智能客服 → 文档管理 | /kb/docs |
上传文档 → 解析 → 分块 → 向量化入库 |
| 智能客服 → 客服对话 | /kb/chat |
后台在线问答(RAG 检索增强) |
| 智能客服 → 流程编排 | /kb/flow |
可视化编排客服 SOP 流程 |
| 智能客服 → 应用管理 | /kb/app |
应用/凭证管理,对接 C 端开放 API 与网站挂件 |
链路关系:知识库 = 知识 + 向量化模型 + 对话模型;文档喂给知识库 → Qdrant 向量化;客服对话用「检索 + 大模型」回答;流程编排把上述能力编排成 SOP。
二、大模型管理
2.1 模型接入协议(5 种)
通过数据库 lm_config.model_class 区分(值与字典 lm_protocol 一致):
| 协议 | model_class 值 |
说明 |
|---|---|---|
| OpenAI 兼容 | openai_compatible |
智谱/Kimi/腾讯混元/MiniMax/MiMo/火山方舟/Gemini 兼容端等,通用性最强 |
| Anthropic | anthropic |
Anthropic Claude Messages API |
| DeepSeek | deepseek |
DeepSeek 原生协议(deepseek-reasoner 可输出思维链) |
| 阿里百炼 | qwen |
DashScope 原生 SDK 协议(Embedding 也用此协议) |
| Ollama | ollama |
本地模型(默认 http://127.0.0.1:11434) |
2.2 提供商预设(12 项)
lm_config.provider 用于前端预设与 baseUrl 缺省回退(字典 lm_provider):
openai、bailian(百炼)、zhipu(智谱)、kimi(月之暗面)、hunyuan(腾讯混元)、minimax、mimo、ark(火山方舟)、deepseek、anthropic、ollama、custom(自定义)
内建默认 baseUrl:
| 提供商 | 默认 baseUrl |
|---|---|
| openai | https://api.openai.com/v1 |
| bailian | https://dashscope.aliyuncs.com/compatible-mode/v1 |
| zhipu | https://open.bigmodel.cn/api/paas/v4 |
| kimi | https://api.moonshot.cn/v1 |
| hunyuan | https://api.hunyuan.cloud.tencent.com/v1 |
| minimax | https://api.minimaxi.com/v1 |
| ark | https://ark.cn-beijing.volces.com/api/v3 |
| deepseek | https://api.deepseek.com |
| anthropic | https://api.anthropic.com |
| ollama | http://127.0.0.1:11434 |
baseUrl 回退顺序(重要):显式填写的 base_url > 提供商预设 > 协议默认 > 组件默认。选「厂商」会自动填协议 + baseUrl,通常无需手填。
2.3 模型类型
| 类型 | 用途 |
|---|---|
LLM |
对话、意图识别、回复生成(客服核心) |
TextEmbedding |
文档/问题向量化(智能客服必配,见 5.1 前置条件) |
Rerank |
检索结果重排(可选扩展) |
2.4 配置字段说明
| 字段 | 说明 |
|---|---|
| 提供商 | 见 2.2 预设 |
| 协议 | 见 2.1 |
| 模型名称 | 全表唯一(新自动校验),如 qwen3.8-flash、text-embedding-v4 |
| API Key | 调用凭证 |
| Base URL | 端点地址,留空走回退顺序 |
| 最大 Token | 单次回复最大长度限制。1 个汉字≈1~2 token,配 4096 会截断超长内容 |
| 温度(temperature, 0-2) | 随机性。0 接近确定,0.7 平衡,1.0+ 更发散 |
| TopP(0-1) | 词池采样。0.1 保守、1.0 默认;一般与温度二选一调整 |
| Responses 开关 | OpenAI 系专用,兼容旧接口时置灰 |
| 启用状态 | 仅启用项可被调用 |
2.5 典型配置示例
对话模型:
提供商 = 阿里百炼(bailian) / 火山方舟(ark)
协议 = qwen(百炼)或 openai_compatible(方舟)
模型名 = qwen3.8-flash / glm-5.3-flash(方舟)
温度 = 0.7
向量模型(TextEmbedding,客服必配):
提供商 = bailian,协议 = qwen
模型名 = text-embedding-v4(百炼,输出 1024 维)
base_url = 留空(默认走 dashscope 官方端点)
三、MCP 服务器配置
MCP(Model Context Protocol)让大模型能调用外部工具(查天气、查订单、建工单等)。
- 入口:大模型管理 → mcp服务器配置列表(
/llm/mcp) - 关键字段:服务器名称、SSE 地址(如
http://服务端/mcp,需服务端实现 SSE 端点) - 保存后,AI 对话发送时会自动拉取该服务器暴露的工具列表,模型按需调用
备注:MCP 工具的能力也可复用到「智能客服流程编排」的 LLM 节点(见 6.4)。
四、AI 对话
4.1 使用方式
- 选择模型(下拉:左侧模型名、右侧提供商小徽章)
- 输入问题 → 发送。采用真流式打字:WebSocket
chat事件逐字推送正文,chatThink事件推送思考过程 - 历史消息通过
lm_chat_list/lm_chat_message持久化
4.2 关键交互
| 功能 | 操作 |
|---|---|
| 思维链/思考过程 | 回复时形成黄色虚线「思考过程」折叠块,完成后默认收起可点击展开 |
| 中断回答 | 发送中按钮变为红色「停止」,点击即中断并保留已输出部分(追加「(已中断)」) |
| 工具调用 | 模型调用 MCP 工具时,右栏工具调用记录 + 消息下 tag;刷新后仍会回显 |
| 单条消息删除 | 悬浮到消息时间上出现删除图标,确认后删除(级联删除其工具记录) |
| 新建/删除会话 | 会话列表操作 |
五、智能客服(知识库 RAG)
基于「检索增强生成」:上传文档 → 切分 → 向量化入 Qdrant → 问答时检索最相关内容 + 大模型生成,回答标注引用来源。
5.1 前置条件(重要)
Qdrant 向量库可用:配置
manifest/config/config.yamlkb: qdrant: address: "http://192.168.0.214" # Qdrant HTTP 地址 grpcPort: 6334 # Qdrant gRPC 端口 apiKey: "" # 可选- 若
address为空,知识库功能不可用 - go-client 与 Qdrant 服务端版本必须匹配(主版本一致、次版本差 ≤1),否则向量「假写入」(Upsert 返回成功但实际 0 点),本机 go-client 升级后请同步升级 Qdrant 至 1.19.x
安装qdrant
创建一个qdrant数据库目录,进入该目录,创建docker-compose.yml,填入以下内容:执行以下命令,Docker 会自动拉取最新的 v1.19.0 镜像并启动:services: qdrant: # 使用 2026 年最新稳定版本 image: qdrant/qdrant:v1.19.0 container_name: qdrant ports: - "6333:6333" # REST API & Web UI - "6334:6334" # gRPC API volumes: - ./qdrant_storage:/qdrant/storage environment: # 关闭遥测(可选,内网/隐私环境推荐) - QDRANT__TELEMETRY_DISABLED=true restart: unless-stopped # 限制资源,防止未来数据量大时 OOM deploy: resources: limits: # 注意我这里是测试环境,根据您实际情况处理,下同 memory: 4G reservations: memory: 2Gdocker compose up -d
查看容器状态,确保状态为 Updocker compose ps
打开浏览器,访问 Qdrant 的可视化面板:
👉 http://localhost:6333/dashboard
- 若
TextEmbedding 模型:在大模型配置列表新增一条
TextEmbedding类型配置(如百炼text-embedding-v4),知识库创建时选择它对话模型:至少一条启用状态的
LLM配置
5.2 知识库管理
| 字段 | 说明 |
|---|---|
| 名称 / 描述 | |
| 向量化模型 | TextEmbedding 配置(决定向量维度) |
| 对话模型 | 客服回复用的 LLM |
| MCP 配置 | 可选,客服 Agent 可调用工具 |
| 分块大小 / 分块重叠 | 文档切分粒度(如 300 / 50) |
| 检索条数 topK | 每次问答检索的分块数(默认 5) |
| 状态 | 停用后该库不可问答 |
每个知识库对应 Qdrant 一个独立 collection(命名 kb_{id},Cosine 距离)。
5.3 文档管理
- 支持格式:
txt/md/pdf/docx/xlsx/html(共 6 种) - 处理流程:上传 → 异步 解析 → 分块 → 向量化 → 写入 Qdrant + 落库分块元数据(
kb_chunk) - 状态:0 待处理 / 1 处理中 / 2 完成 / 3 失败
- 处理失败可点「重试」;点文档可查看分块列表、查看向量入库后的引用结果
5.4 客服对话(后台)
- 三栏布局:会话列表 / 消息区 / 引用来源列表
- 发送时先检索知识库(topK 条),后台 WebSocket 流式推送,回答中用
[n]标注引用,右侧来源卡联动高亮 - 顶部可选「执行流程」(见第六章),选择后走流程引擎而非直接 RAG
六、流程编排(SOP Workflow)
让客服按预设「标准作业程序」处理多步骤任务:意图识别 → 条件判断 → 路由 → 查询/转人工 → 回复。
核心技术:DSL(JSON)→ 后端用 eino compose.Graph 动态构建执行引擎;前端用 vue-flow 可视化画布编辑 DSL。
6.1 节点类型
| 类型 | 作用 | 关键配置 |
|---|---|---|
| 开始 start | 流程入口,可选先检索知识库 | kbSearch 开关、topK |
| LLM | 模型调用,可做意图识别或最终回复 | modelConfigId、mcpConfigId(工具)、instruction(支持变量插值)、extractVariables(JSON 变量提取)、stream(流式回复) |
| 条件分支 branch | 按表达式路由到不同分支 | branches[].when(expr 表达式,可留空作默认) |
| 模板回复 template | 固定话术插值输出 | text |
| 转人工 handoff | 结束并标记转人工 | message 话术 |
| 结束 end | 流程终点 | — |
内置插值变量:{{question}}(本次问题)、{{history}}(历史对话)、{{kbContext}}(检索资料)、{{kbSources}} 及 LLM 节点提取出的自定义变量。
分支表达式示例(expr 语法,基于上下文变量):
intent == "投诉"
confidence < 0.5
(留空 = 默认分支)6.2 画布操作
- 添加节点:点击左侧「节点库」卡片
- 连线:鼠标移到节点 → 节点左右出现蓝色圆点锚点 → 从右侧「出锚点」按住拖到目标节点左侧「入锚点」松开
- 普通节点只有一条出线(重复连会替换)
- 条件分支节点每个分支对应一个独立出线锚点,从哪条分支行拖出代表哪条路由;连线上自动显示分支条件标签(空条件显示「默认」),改条件实时同步
- 删除连线:单击选中连线(高亮)→ 按
Backspace或Delete - 删除节点:选中后按
Delete/Backspace,或「删除选中」按钮(开始节点受保护) - 防呆规则:branch→branch 禁止、branch 仅一条入边、连线实时防环、保存时全量校验(开始唯一/有结束/分支已连线/无环)
6.3 测试运行
- 画布「测试运行」或列表页「测试」按钮:输入测试问题 → 返回逐节点轨迹(类型/耗时/摘要)+ 最终回复 + 变量快照 + 是否转人工
- 正式客服对话走流程时,执行轨迹可查后端日志(
kbFlow trace flowId/sessionId/...)用于排错
6.4 流程与其它能力组合
- 流程可挂到「应用管理」的应用上(见第七章),C 端问答自动走流程
- LLM 节点配置 MCP 服务器后即可在流程内调用业务工具
- 转人工消息落库带
[[HANDOFF]]前缀,前端渲染为橙色「已转人工」标签
七、C 端开放接口与网站挂载插件
7.1 应用管理与凭证
- 入口:智能客服 → 应用管理
- 新建应用:绑定知识库、可绑定流程(选后 C 端问答走流程)、分配
appKey+appSecret - 状态开关:停用后 C 端接口立即失效(安全兜底)
- 表格显示绑定知识库/流程;接口弹窗含 curl 示例与网站挂载代码
7.2 接口一:服务器对服务器(全凭证)
POST /api/v1/kb/open/chat
{
"appKey": "kb-xxxxxxxx",
"appSecret": "xxxxxxxx",
"kbId": 1,
"sessionId": "",
"visitorId": "visitor-001",
"question": "如何修改检索条数?"
}
返回 SSE 事件流:
| 事件 | 内容 |
|---|---|
start |
{sessionId} |
think |
思考过程增量 |
message |
回答正文增量 |
tools |
工具调用信息 |
sources |
引用来源数组 |
done |
{sessionId, content} 最终结果 |
error |
错误信息 |
- 校验:appKey + appSecret + 知识库归属 + 按 appKey 秒级滑窗限流(10 QPS,常量
KbOpenRateLimitQps) - 鉴权方式:请求体携带(生产环境请用 HTTPS)
7.3 接口二:网站挂载(仅 appKey)
插件脚本部署在网页中,appSecret 会泄露,故提供仅 appKey 的公开入口,安全性靠:启用开关 + 知识库绑定校验 + 限流。
POST /api/v1/kb/open/widget/chat
{ "appKey": "kb-xxxxxxxx", "kbId": 1, "sessionId": "", "visitorId": "xxx", "question": "..." }
仅校验 appKey 存在/启用 + 知识库归属 + 限流,SSE 事件同上。
7.4 网站挂载插件(kb-widget.js)
单文件、零依赖、后端静态托管(/kb-widget/kb-widget.js)。目标网站 body 内加一行:
<script src="http://你的gfast地址/kb-widget/kb-widget.js"
data-app-key="kb-xxxxxxxx"
data-kb-id="1"
data-title="在线客服"
data-primary="#4f7cff"
defer></script>
- 右下角悬浮气泡 → 点击展开聊天面板(Shadow DOM,与宿主样式完全隔离)
- 流式打字、思考过程折叠、引用来源卡片、多轮会话续聊
data-server缺省自动取脚本来源域名;visitorId(localStorage 持久)、sessionId(sessionStorage 续聊)- 演示页:
http://你的地址/kb-widget/demo.html - 安全提醒:appKey 为公开凭证,敏感知识库请勿挂载到公开站点
八、权限与数据库要点
8.1 菜单与会话
- 无需验证权限的后台用户 id:
system.notCheckAuthAdminIds: [1,2,31](含 admin) - 其它角色需在「角色管理」分配对应菜单;智能客服子菜单(知识库/文档/客服对话/流程编排/应用管理)与各按钮权限在菜单管理配置
- 修改
casbin_rule后需重启后端(enforcer 内存缓存)
8.2 核心数据表
| 表 | 用途 |
|---|---|
lm_config |
大模型配置(provider/model_name/model_class/model_type/api_key/base_url/temperature/top_p/use_responses/max_token/status) |
lm_mcp_server |
MCP 服务器(sseUrl) |
lm_chat_list / lm_chat_message / lm_chat_tool |
AI 对话会话/消息/工具调用 |
kb_knowledge |
知识库(embedding_config_id/model_config_id/chunk_size/chunk_overlap/top_k) |
kb_document |
知识库文档(status 0-3) |
kb_chunk |
文档分块(qdrant_point_id) |
kb_flow |
流程及其 DSL(JSON) |
kb_session / kb_message |
客服会话/消息 |
kb_app |
C 端应用(app_key/app_secret/flow_id) |
九、常见问题与排错
| 现象 | 排查 / 解决 |
|---|---|
| 知识库创建/上传报「Qdrant 未配置」 | 填写 config.yaml 的 kb.qdrant.address 并重启后端 |
| 上传后文档完成但 Qdrant 0 点 | 版本不匹配假写入。将 Qdrant 服务端升级到与 go-client 匹配的版本 |
| 客服提问模型报 400 | 模型端点/参数问题;可换一个对话模型(如百炼 qwen)规避某些专用端点限制 |
| 流程测试走错分支/变量没提取 | 看测试运行轨迹 + 变量快照;LLM 节点变量提取会自动纠错重试一次 |
| 画布无法连线 | 确认节点边缘出现蓝色圆点锚点(Handle);branch 从分支行右侧锚点拖出 |
| 转人工没有标签 | 确认消息以 [[HANDOFF]] 开头,前端已按标签渲染 |
| 应用列表绑定流程为空 | 确认「流程编排」有启用流程,且当前角色有 kb/flow/list 权限 |
| AI 对话回复同时两个框 / 思考与正文不分 | 已修复;重启前端 + 后端后仍出现请升级部署 |
| 中断无效果(客服) | 确认后端已加载流程中断逻辑(cancelChat 对流程模式生效) |
| C 端接口 429/限流 | 单 appKey 秒级 10 QPS 上限,降低调用频率 |
最后编辑:管理员 更新时间:2026-09-20 15:48