聊天集成 Skill

HE
henuwangkai
Community
👁 7·💰 ~0.02 USD·📅 发布于 2026年3月24日·📖 1 分钟阅读

聊天功能集成 Skill,含流式响应、上下文管理、Claude API 对接

1. AI 聊天集成 Skill

AI 聊天功能集成 Skill,含流式响应、上下文管理、Claude API 对接

Prompt

---
name: AI Chat 架构
description: AI 聊天功能完整架构。核心表(bs_ai_model/bs_prompt/bs_chat)、提示词配置体系(master_template/chat_name/意图理解)、流式对话 12 步流程、SSE 响应格式、日志排查方法。
---

# AI Chat 架构设计

> **重要**: 本节描述 AI 聊天功能的完整架构,是后端最核心的模块之一。

## 核心表概览

| 表名               | 用途           | 关键字段                                                     |
| ------------------ | -------------- | ------------------------------------------------------------ |
| `bs_ai_model`      | AI 模型配置    | `model_name`, `api_url`, `api_key`, `status`                 |
| `bs_prompt`        | 提示词配置     | `module_id`, `scene_code`, `role_desc`, `prompt`, `model_id` |
| `bs_prompt_module` | 提示词模块分类 | `name`, `desc`                                               |
| `bs_chat`          | 会话记录       | `user_uuid`, `category_id`, `name`                           |
| `bs_chat_messages` | 消息记录       | `chat_id`, `question`, `answer`, `model_id`                  |

## bs_ai_model 表结构

```sql
CREATE TABLE bs_ai_model (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    model_name VARCHAR(100) NOT NULL DEFAULT '' COMMENT '模型名称',
    api_url VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'API 地址(必须完整路径)',
    api_key VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'API 密钥',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 1=在线',
    ...
);

⚠️ api_url 必须规范:

  • ✅ 正确: https://aihubmix.com/v1/chat/completions
  • ❌ 错误: https://aihubmix.com/v1(缺少 /chat/completions,会 404)

提示词配置体系

三类提示词

类型 scene_code module_id 用途
大师对话模板 master_template 1 构建 AI 人设(主 LLM)
会话名称生成 chat_name 2 生成简短会话名称
意图理解 buffett 3 分析用户问题类型

提示词变量替换

  • {{history}} → 最近 3 轮对话历史
  • {{user_question}} → 当前用户问题

意图理解

返回结构

type IntentResult struct {
    Complexity         string   // simple/medium/complex
    QuestionType       string   // concept/valuation/strategy/comparison/risk/general
    HasFinancialIntent bool     // 是否需要实时金融数据
    StockSymbols       []string // 提取的股票代码
    Confidence         float64  // 置信度
}

意图影响

意图属性 影响
complexity thinking_budget(简单 2048、中等 4096、复杂 8192)
questionType 选择对应 Few-shot 示例
hasFinancialIntent 是否调用 FMP API 获取股票数据

流式对话完整流程

核心代码: backend/internal/logic/buffett/chat/send_message_logic.go

步骤0: 接收请求
  ↓
步骤1: 获取用户信息 (user_uuid, lang)
  ↓
步骤2: 获取或创建会话 (bs_chat)
  ↓
步骤3: 获取大师 ID 和 AI 模型配置
  ↓
步骤4: 创建消息记录 (bs_chat_messages)
  ↓
[发送 SSE 初始数据: chat_id, msg_id, chat_name]
  ↓
步骤5: 获取历史消息(最近 N 条)
  ↓
步骤6: 获取原则上下文(如果 rule_id > 0)
  ↓
步骤7: 构建 AI 请求
       - 调用意图理解 LLM
       - 根据意图获取金融数据
       - 构建系统提示词 + 用户提示词
  ↓
步骤8: 调用流式 LLM API
  ↓
[发送 SSE: data: {"content": "..."} ]
  ↓
步骤9: 响应质量评分
  ↓
步骤10: 更新消息记录
  ↓
步骤11: 如果新会话,异步生成会话名称
  ↓
[发送 SSE: data: [DONE] ]

SSE 流式响应格式

// 初始化数据
data: {"chat_id":137,"msg_id":156,"chat_name":"新会话"}

// AI 回复内容(多次推送)
data: {"content":"你好"}
data: {"content":","}
data: {"content":"价值投资"}

// 结束标记
data: [DONE]

日志关键标记

标记 含义
[Chat流程] 步骤N: 流式对话各步骤
意图理解成功 意图 LLM 调用成功
LLM 响应状态 主 LLM API 响应状态码

常见问题排查

日志关键词 问题原因 解决方案
status_code: 404 API URL 不完整 检查 api_url 是否包含 /chat/completions
status_code: 401 API Key 无效 检查 api_key
意图理解配置为空 提示词配置缺失 检查 bs_prompt 是否有 module_id=3 记录

开发注意事项

新增 AI 模型

  1. bs_ai_model 表插入新记录
  2. api_url 必须包含完整路径
  3. 确保 status=1

修改提示词

  1. bs_prompt 表修改对应 scene_code 的记录
  2. 如需切换模型,修改 model_id 字段
  3. 可通过 is_default 控制默认配置

讨论区

讨论区

登录后加入讨论。
MC
Maya Chen·2 hours ago

Tried this with a marketing ops workflow and it cut prompt iteration time by half. The Prompt section is especially reusable.

LW
Leo Wang·Yesterday

Would love a follow-up showing how you adapted this for team use.

  • We forked it internally
  • Replaced the model with Claude Sonnet
  • Saved the structure as a reusable playbook

相关推荐

相关资产

继续查看同一作者发布的其他资产。

返回首页