Skip to content

聊天 API

聊天接口负责会话管理、消息发送、历史读取和安全指南。主消息接口是普通 JSON 响应,不是稳定 SSE 流式接口。

Endpoint 索引

MethodPath鉴权用途
GET/api/chat/historyBearer JWT读取指定会话或默认会话历史。
POST/api/chat/messageBearer JWT发送用户消息并返回 AI 回复。
POST/api/chat/clear-historyBearer JWT清空进程内临时历史。
POST/api/chat/sessionBearer JWT创建新会话。
GET/api/chat/sessionsBearer JWT读取当前用户会话列表。
DELETE/api/chat/session/{session_id}Bearer JWT软删除当前用户会话。
GET/api/chat/safety-guidelines读取通用安全指南。

Endpoint 契约

GET /api/chat/history

内容
Requestquery pagelimitsessionId
Responsemessagestotalpagelimit
Errors400 分页非法;401404 会话不存在或无权限;500
ConsumerChatApiClient.getHistory
Handlerchat.get_chat_history
DB Touchpointschat_sessions 归属;读 dialogue_logs
Teststests/services/test_dialogue_repository_phase1.py

POST /api/chat/message

内容
Requestmessageinput_typeuser_contextprovidersessionIdidempotencyKey
ResponseidcontentragContextconfidencesessionIdsafety_check
Errors401404 会话不存在或无权限;500
ConsumerChatApiClient.sendMessageChatBloc
Handlerchat.send_message -> SendChatMessageUseCase
DB Touchpoints读写 chat_sessionsdialogue_logs;RAG 读 knowledge_chunks
Teststests/use_cases/test_send_chat_message_use_case.pytests/api/test_chat_idempotency_phase3.py

POST /api/chat/clear-history

内容
Request
Responsemessage
Errors401500
Consumer旧清空历史入口
Handlerchat.clear_chat_history
DB Touchpoints当前不删除数据库记录;仅清空进程内临时历史
Testssource inspection

POST /api/chat/session

内容
Request当前 handler 不读取 body
Responseidsession_iduser_idname、时间字段
Errors401500
ConsumerChatApiClient.createSession
Handlerchat.create_new_session
DB Touchpointschat_sessions
Teststests/presenters/test_chat_session_presenter.py

GET /api/chat/sessions

内容
Requestquery skiplimit
Responsesessionstotalskiplimit
Errors401500
ConsumerChatApiClient.getSessions
Handlerchat.get_sessions
DB Touchpointschat_sessions
Teststests/presenters/test_chat_session_presenter.py

DELETE /api/chat/session/{session_id}

内容
Requestpath session_id
Responsesuccessmessage
Errors401404 会话不存在或已删除;500
ConsumerChatApiClient.deleteSession
Handlerchat.delete_session
DB Touchpoints软删除本人 chat_sessions.is_deleted
Teststests/services/test_dialogue_repository_phase1.py

GET /api/chat/safety-guidelines

内容
Request
Responsegeneralemergency_contacts
Errors500
Consumer运维 smoke / 安全说明入口
Handlerchat.get_safety_guidelines
DB Touchpoints不读写 DB
Tests运维手册 smoke 路径

POST /api/chat/message 请求

FieldTypeRequiredDescription
messagestringyes用户输入内容。
input_typestringno默认 text
user_contextobjectno前端附加上下文。
providerstringno可指定 LLM provider;默认由后端配置决定。
sessionIdstringno传入时后端校验会话归属。
idempotencyKeystringno客户端重试复用键;后端用同用户同 key 重放已落库响应。

POST /api/chat/message 响应

json
{
  "id": "<message-id>",
  "content": "AI response text",
  "ragContext": ["source summary"],
  "confidence": 0.86,
  "sessionId": "<session-id>",
  "timestamp": "2026-05-08T10:00:00Z",
  "safety_check": {
    "is_safe": true,
    "risk_level": "safe",
    "flags": [],
    "warnings": []
  },
  "requires_acknowledgment": false
}

主链路

  1. get_current_user 校验 JWT 与用户存在性。
  2. 如传 sessionIdDialogueRepository.get_session_by_id 校验当前用户归属。
  3. 使用 idempotencyKey 查询 dialogue_logs.message_hash,命中时重放响应。
  4. SendChatMessageUseCase 编排 safety filter、RAG、LLM manager 和对话持久化。
  5. 用户消息、AI 回复、RAG context、safety metadata 写入 dialogue_logs,会话时间和标题更新到 chat_sessions

来源锚点

  • Router: apps/backend_service/app/api/chat.py
  • Use case: apps/backend_service/app/use_cases/chat/send_message.py
  • Repository: apps/backend_service/app/repositories/dialogue_repository.py
  • Flutter: apps/flutter_app/lib/api/chat_api_client.dart
  • Tests: apps/backend_service/tests/use_cases/test_send_chat_message_use_case.pyapps/backend_service/tests/api/test_chat_idempotency_phase3.py