339 lines
7.7 KiB
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]
|