ai-robot-core/spec/intent-driven-mid-platform/openapi.provider.yaml

339 lines
7.7 KiB
YAML

openapi: 3.0.3
info:
title: Intent-Driven Mid Platform Provider API
version: 0.3.0
x-contract-level: L2
paths:
/mid/dialogue/respond:
post:
operationId: respondDialogue
summary: 生成中台分段响应
x-requirements:
- AC-IDMP-01
- AC-IDMP-02
- AC-IDMP-03
- AC-IDMP-04
- AC-IDMP-05
- AC-IDMP-06
- AC-IDMP-07
- AC-IDMP-11
- AC-IDMP-12
- AC-IDMP-15
- AC-IDMP-16
- AC-IDMP-17
- AC-IDMP-18
- AC-IDMP-19
- AC-IDMP-20
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DialogueRequest'
responses:
'200':
description: 成功生成分段响应
content:
application/json:
schema:
$ref: '#/components/schemas/DialogueResponse'
'400':
description: 请求参数错误
'500':
description: 服务内部错误
/mid/messages/report:
post:
operationId: reportMessages
summary: 上报会话消息与事件
x-requirements:
- AC-IDMP-08
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessageReportRequest'
responses:
'202':
description: 已接受异步处理
'400':
description: 请求参数错误
/mid/sessions/{sessionId}/mode:
post:
operationId: switchSessionMode
summary: 切换会话模式
x-requirements:
- AC-IDMP-09
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SwitchModeRequest'
responses:
'200':
description: 模式切换成功
content:
application/json:
schema:
$ref: '#/components/schemas/SwitchModeResponse'
'400':
description: 请求参数错误
components:
schemas:
DialogueRequest:
type: object
required:
- session_id
- user_message
- history
properties:
session_id:
type: string
user_id:
type: string
description: 用于记忆召回与更新的用户标识
user_message:
type: string
minLength: 1
maxLength: 2000
history:
type: array
description: 仅允许已送达历史
items:
$ref: '#/components/schemas/HistoryMessage'
interrupted_segments:
type: array
items:
$ref: '#/components/schemas/InterruptedSegment'
feature_flags:
$ref: '#/components/schemas/FeatureFlags'
FeatureFlags:
type: object
properties:
agent_enabled:
type: boolean
description: 会话级 Agent 灰度开关
rollback_to_legacy:
type: boolean
description: 强制回滚传统链路
HistoryMessage:
type: object
required:
- role
- content
properties:
role:
type: string
enum: [user, assistant, human]
content:
type: string
InterruptedSegment:
type: object
required:
- segment_id
- content
properties:
segment_id:
type: string
content:
type: string
DialogueResponse:
type: object
required:
- segments
- trace
properties:
segments:
type: array
items:
$ref: '#/components/schemas/Segment'
trace:
$ref: '#/components/schemas/TraceInfo'
Segment:
type: object
required:
- segment_id
- text
- delay_after
properties:
segment_id:
type: string
text:
type: string
delay_after:
type: integer
minimum: 0
TraceInfo:
type: object
required:
- mode
properties:
mode:
type: string
enum: [agent, micro_flow, fixed, transfer]
intent:
type: string
request_id:
type: string
generation_id:
type: string
guardrail_triggered:
type: boolean
fallback_reason_code:
type: string
react_iterations:
type: integer
minimum: 0
maximum: 5
description: ReAct 实际循环次数
timeout_profile:
$ref: '#/components/schemas/TimeoutProfile'
metrics_snapshot:
$ref: '#/components/schemas/MetricsSnapshot'
high_risk_policy_set:
type: array
description: 当前启用的高风险最小场景集
items:
type: string
enum: [refund, complaint_escalation, privacy_sensitive_promise, transfer]
tools_used:
type: array
items:
type: string
tool_calls:
type: array
items:
$ref: '#/components/schemas/ToolCallTrace'
TimeoutProfile:
type: object
properties:
per_tool_timeout_ms:
type: integer
maximum: 2000
end_to_end_timeout_ms:
type: integer
maximum: 8000
MetricsSnapshot:
type: object
properties:
task_completion_rate:
type: number
format: float
slot_completion_rate:
type: number
format: float
wrong_transfer_rate:
type: number
format: float
no_recall_rate:
type: number
format: float
avg_latency_ms:
type: number
format: float
ToolCallTrace:
type: object
required:
- tool_name
- duration_ms
- status
properties:
tool_name:
type: string
tool_type:
type: string
enum: [internal, mcp]
registry_version:
type: string
auth_applied:
type: boolean
duration_ms:
type: integer
minimum: 0
status:
type: string
enum: [ok, timeout, error, rejected]
error_code:
type: string
args_digest:
type: string
result_digest:
type: string
MessageReportRequest:
type: object
required:
- session_id
- messages
properties:
session_id:
type: string
messages:
type: array
items:
$ref: '#/components/schemas/ReportedMessage'
ReportedMessage:
type: object
required:
- role
- content
- source
- timestamp
properties:
role:
type: string
enum: [user, assistant, human, system]
content:
type: string
source:
type: string
enum: [bot, human, channel]
timestamp:
type: string
format: date-time
segment_id:
type: string
SwitchModeRequest:
type: object
required:
- mode
properties:
mode:
type: string
enum: [BOT_ACTIVE, HUMAN_ACTIVE]
reason:
type: string
SwitchModeResponse:
type: object
required:
- session_id
- mode
properties:
session_id:
type: string
mode:
type: string
enum: [BOT_ACTIVE, HUMAN_ACTIVE]