2026-02-23 16:32:52 +00:00
|
|
|
|
openapi: 3.0.3
|
|
|
|
|
|
info:
|
|
|
|
|
|
title: AI Service API
|
|
|
|
|
|
description: |
|
|
|
|
|
|
Python AI 服务接口契约。
|
|
|
|
|
|
|
|
|
|
|
|
本文件定义主框架对 AI 服务的接口需求(Consumer-First)。
|
|
|
|
|
|
由主框架作为调用方,Python AI 服务作为提供方实现。
|
|
|
|
|
|
version: 1.0.0
|
|
|
|
|
|
x-contract-level: L0
|
|
|
|
|
|
x-consumer: "java-main-framework"
|
|
|
|
|
|
x-provider: "python-ai-service"
|
|
|
|
|
|
|
|
|
|
|
|
servers:
|
|
|
|
|
|
- url: http://ai-service:8080
|
|
|
|
|
|
description: AI 服务地址
|
|
|
|
|
|
|
|
|
|
|
|
paths:
|
|
|
|
|
|
/ai/chat:
|
|
|
|
|
|
post:
|
|
|
|
|
|
operationId: generateReply
|
|
|
|
|
|
summary: 生成 AI 回复
|
|
|
|
|
|
description: |
|
|
|
|
|
|
根据用户消息和会话历史生成 AI 回复。
|
|
|
|
|
|
|
|
|
|
|
|
覆盖验收标准:
|
|
|
|
|
|
- AC-MCA-04: 主框架通过 HTTP POST 调用 AI 服务
|
|
|
|
|
|
- AC-MCA-05: 响应包含 reply、confidence、shouldTransfer 字段
|
|
|
|
|
|
- AC-MCA-06: AI 服务不可用时的降级处理(主框架侧实现)
|
|
|
|
|
|
- AC-MCA-07: 超时处理(主框架侧实现)
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- AI Chat
|
|
|
|
|
|
x-requirements:
|
|
|
|
|
|
- AC-MCA-04
|
|
|
|
|
|
- AC-MCA-04-REQ
|
|
|
|
|
|
- AC-MCA-04-OPT
|
|
|
|
|
|
- AC-MCA-05
|
|
|
|
|
|
- AC-MCA-06
|
|
|
|
|
|
- AC-MCA-07
|
2026-02-24 04:45:07 +00:00
|
|
|
|
parameters:
|
|
|
|
|
|
- name: X-Tenant-Id
|
|
|
|
|
|
in: header
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
minLength: 1
|
|
|
|
|
|
maxLength: 64
|
|
|
|
|
|
description: 租户ID,用于多租户场景下的租户标识
|
2026-02-23 16:32:52 +00:00
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ChatRequest'
|
|
|
|
|
|
example:
|
|
|
|
|
|
sessionId: "kf_001_wx123456_1708765432000"
|
|
|
|
|
|
currentMessage: "我想了解产品价格"
|
|
|
|
|
|
channelType: "wechat"
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 成功生成回复
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ChatResponse'
|
|
|
|
|
|
example:
|
|
|
|
|
|
reply: "您好,我们的产品价格根据套餐不同有所差异。"
|
|
|
|
|
|
confidence: 0.92
|
|
|
|
|
|
shouldTransfer: false
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 请求参数错误
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'500':
|
|
|
|
|
|
description: 服务内部错误
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'503':
|
|
|
|
|
|
description: 服务不可用
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
|
|
|
|
|
|
/ai/health:
|
|
|
|
|
|
get:
|
|
|
|
|
|
operationId: healthCheck
|
|
|
|
|
|
summary: 健康检查
|
|
|
|
|
|
description: 检查 AI 服务是否正常运行
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Health
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 服务正常
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
properties:
|
|
|
|
|
|
status:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
'503':
|
|
|
|
|
|
description: 服务不健康
|
|
|
|
|
|
|
|
|
|
|
|
components:
|
|
|
|
|
|
schemas:
|
|
|
|
|
|
ChatRequest:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
required:
|
|
|
|
|
|
- sessionId
|
|
|
|
|
|
- currentMessage
|
|
|
|
|
|
- channelType
|
|
|
|
|
|
properties:
|
|
|
|
|
|
sessionId:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 会话ID(AC-MCA-04-REQ 必填)
|
|
|
|
|
|
currentMessage:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 当前用户消息(AC-MCA-04-REQ 必填)
|
|
|
|
|
|
channelType:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 渠道类型(AC-MCA-04-REQ 必填)
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- wechat
|
|
|
|
|
|
- douyin
|
|
|
|
|
|
- jd
|
|
|
|
|
|
history:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
description: 历史消息列表(AC-MCA-04-OPT 可选)
|
|
|
|
|
|
items:
|
|
|
|
|
|
$ref: '#/components/schemas/ChatMessage'
|
|
|
|
|
|
metadata:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
description: 扩展元数据(AC-MCA-04-OPT 可选)
|
|
|
|
|
|
additionalProperties: true
|
|
|
|
|
|
|
|
|
|
|
|
ChatMessage:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
required:
|
|
|
|
|
|
- role
|
|
|
|
|
|
- content
|
|
|
|
|
|
properties:
|
|
|
|
|
|
role:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- user
|
|
|
|
|
|
- assistant
|
|
|
|
|
|
content:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
|
|
|
|
|
|
ChatResponse:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
required:
|
|
|
|
|
|
- reply
|
|
|
|
|
|
- confidence
|
|
|
|
|
|
- shouldTransfer
|
|
|
|
|
|
properties:
|
|
|
|
|
|
reply:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: AI 回复内容(AC-MCA-05 必填)
|
|
|
|
|
|
confidence:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: double
|
|
|
|
|
|
description: 置信度评分 0.0-1.0(AC-MCA-05 必填)
|
|
|
|
|
|
shouldTransfer:
|
|
|
|
|
|
type: boolean
|
|
|
|
|
|
description: 是否建议转人工(AC-MCA-05 必填)
|
|
|
|
|
|
transferReason:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 转人工原因(可选)
|
|
|
|
|
|
metadata:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
description: 响应元数据(可选)
|
|
|
|
|
|
additionalProperties: true
|
|
|
|
|
|
|
|
|
|
|
|
ErrorResponse:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
required:
|
|
|
|
|
|
- code
|
|
|
|
|
|
- message
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 错误代码
|
|
|
|
|
|
message:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
description: 错误消息
|
|
|
|
|
|
details:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
description: 详细错误信息(可选)
|
|
|
|
|
|
items:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
additionalProperties: true
|