- 前端文件移入 frontend/ 子目录 - 新建 backend/ 目录(待开发) - 新增 CLAUDE.md、claudehd.md、EXTERNAL_SERVICES.md Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
claudehd.md — so-c-chat-clone 后端功能方案
前端代码未经明确指定不允许修改。
功能一:基础对话
做什么: 用户发送消息,后端调用 LLM 生成回复,返回 Markdown 文本给前端渲染。
用什么:
- FastAPI(Python)— 提供
POST /chat接口,接收message+thread_id+model - Azure OpenAI SDK(异步) — 调用 gpt-5.4 部署,返回文本内容
- 内存字典 — 按
thread_id存储多轮对话历史,拼入每次请求的 messages 数组实现上下文连续
模型行为:
model=flash→max_tokens=500,temperature=0.2,快速简洁model=pro→max_tokens=4096,temperature=0.3,深度详细
功能二:内部知识库检索
做什么: 用户在输入框激活"内部知识库"工具后,发送消息前先检索企业知识库,将相关文档片段注入 LLM prompt,让回复基于内部知识。
用什么:
- httpx(异步) — 调用 KB Agent REST API(Azure AI Search 代理)
- 检索参数:
search_mode=hybrid,top=5 - 检索结果格式化为背景材料追加到 system prompt,LLM 基于此生成回复
功能三:外部 AI 搜索
做什么: 用户激活"搜索"工具后,后端联网检索实时信息(含图片、视频),经重排后注入 LLM,回复引用真实来源。
用什么:
- Jina Search API (
https://s.jina.ai/) — 搜索网页,返回标题+摘要+URL - Jina Reader API (
https://r.jina.ai/{url}) — 读取搜索结果全文 - Jina Rerank API (
jina-reranker-v2-base-multilingual) — 对结果按相关性重排,提升准确度 - httpx(异步) — 并发调用以上三个接口
按模型深度区分:
flash→ 搜索 top=3,timeout=8s,跳过重排,追求速度pro→ 搜索 top=10,timeout=20s,Rerank 取 top=5,追求准确
功能四:沙盒代码执行
做什么: 用户激活"沙盒"工具并提出编程需求时,后端在隔离环境中执行代码,将 stdout/stderr 格式化为 Markdown 代码块注入回复。
用什么:
- Daytona API (
https://app.daytona.io/api) — 创建隔离 workspace → 上传代码 → 执行 → 获取输出 → 销毁 workspace - httpx(异步) — 调用 Daytona REST API
- 执行结果以 Markdown 代码块形式追加到 LLM 最终回复
功能五:文档生成
做什么: 用户激活"文档生成"工具并描述需求时,后端调用 Doc Creator Agent 生成 Word/PPT/表格文件,将下载链接追加到回复末尾。
用什么:
- Doc Creator Agent (
http://doc-creator-agent-b0d02105-a557fe.taijiagnet.com) — 传入 prompt,返回生成文件的 URL - httpx(异步) — 调用 Agent REST API
- 输出类型自动识别:含 ppt/slides → PPT;含 table/excel → 表格;其余 → Word
功能六:工单数据接入
做什么: 前端 ExtensionsPanel 连接工单系统后,展示真实工单列表(P0-P3 优先级、状态)。后端作为代理拉取 Gongdan 工单数据。
用什么:
- FastAPI — 提供
GET /tickets接口,支持page/pageSize分页参数 - httpx(异步) — 代理调用 Gongdan API,透传工单数据
- 返回字段严格对齐前端
TicketData类型:id / title / status / priority / createdAt
功能七:多轮对话持久化
做什么: 对话历史在服务重启后不丢失,支持恢复历史对话上下文。
用什么:
- PostgreSQL(Azure,
dataope.postgres.database.azure.com)— 存储 thread 和 message 记录 - asyncpg — 异步数据库驱动,不阻塞事件循环
- 未配置
DATABASE_URL时自动降级为内存字典(开发模式)
技术栈总览
| 层 | 技术 |
|---|---|
| Web 框架 | FastAPI + Uvicorn |
| LLM | Azure OpenAI SDK (AsyncAzureOpenAI) |
| HTTP 客户端 | httpx(全异步) |
| 外部搜索 | Jina Search / Reader / Rerank |
| 知识库 | KB Agent (Azure AI Search 代理) |
| 沙盒 | Daytona API |
| 文档生成 | Doc Creator Agent |
| 工单 | Gongdan API(只读代理) |
| 数据库 | PostgreSQL / asyncpg(可选) |
| 部署 | Azure Web App (Python 3.11) |