ai-robot-core/spec/ai-service-admin/openapi.deps.yaml

593 lines
15 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.1.0
info:
title: "AI Service Admin Dependencies"
description: "ai-service-admin 模块依赖的外部 API 契约Consumer 需求侧)"
version: "0.3.0"
x-contract-level: L1
servers:
- url: http://localhost:8000
description: 本地开发服务器
paths:
/admin/embedding/providers:
get:
operationId: listEmbeddingProviders
summary: 获取可用的嵌入模型提供者列表
tags:
- Embedding Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
responses:
'200':
description: 成功返回提供者列表
content:
application/json:
schema:
type: object
properties:
providers:
type: array
items:
$ref: '#/components/schemas/EmbeddingProviderInfo'
/admin/embedding/config:
get:
operationId: getEmbeddingConfig
summary: 获取当前嵌入模型配置
tags:
- Embedding Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
responses:
'200':
description: 成功返回当前配置
content:
application/json:
schema:
$ref: '#/components/schemas/EmbeddingConfig'
put:
operationId: updateEmbeddingConfig
summary: 更新嵌入模型配置
tags:
- Embedding Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmbeddingConfigUpdate'
responses:
'200':
description: 配置更新成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
message:
type: string
/admin/embedding/test:
post:
operationId: testEmbedding
summary: 测试嵌入模型连接
tags:
- Embedding Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
test_text:
type: string
description: 测试文本(可选)
config:
$ref: '#/components/schemas/EmbeddingConfigUpdate'
responses:
'200':
description: 测试成功
content:
application/json:
schema:
$ref: '#/components/schemas/EmbeddingTestResult'
/admin/embedding/formats:
get:
operationId: getSupportedFormats
summary: 获取支持的文档格式列表
tags:
- Embedding Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
responses:
'200':
description: 成功返回支持格式列表
content:
application/json:
schema:
type: object
properties:
formats:
type: array
items:
$ref: '#/components/schemas/DocumentFormat'
/admin/llm/providers:
get:
operationId: listLLMProviders
summary: 获取可用的 LLM 提供者列表
tags:
- LLM Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
responses:
'200':
description: 成功返回提供者列表
content:
application/json:
schema:
type: object
properties:
providers:
type: array
items:
$ref: '#/components/schemas/LLMProviderInfo'
/admin/llm/config:
get:
operationId: getLLMConfig
summary: 获取当前 LLM 配置
tags:
- LLM Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
responses:
'200':
description: 成功返回当前配置
content:
application/json:
schema:
$ref: '#/components/schemas/LLMConfig'
put:
operationId: updateLLMConfig
summary: 更新 LLM 配置
tags:
- LLM Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LLMConfigUpdate'
responses:
'200':
description: 配置更新成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
message:
type: string
/admin/llm/test:
post:
operationId: testLLM
summary: 测试 LLM 连接
tags:
- LLM Management
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
test_prompt:
type: string
description: 测试提示词(可选)
example: "你好,请简单介绍一下自己。"
config:
$ref: '#/components/schemas/LLMConfigUpdate'
responses:
'200':
description: 测试成功
content:
application/json:
schema:
$ref: '#/components/schemas/LLMTestResult'
/admin/rag/experiments/run:
post:
operationId: runRagExperiment
summary: 运行 RAG 实验(含 AI 输出)
tags:
- RAG Lab
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RagExperimentRequest'
responses:
'200':
description: 实验完成
content:
application/json:
schema:
$ref: '#/components/schemas/RagExperimentResult'
/admin/rag/experiments/stream:
post:
operationId: runRagExperimentStream
summary: 运行 RAG 实验(流式输出)
tags:
- RAG Lab
parameters:
- name: X-Tenant-Id
in: header
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RagExperimentRequest'
responses:
'200':
description: SSE 流式输出
content:
text/event-stream:
schema:
type: string
components:
schemas:
EmbeddingProviderInfo:
type: object
required:
- name
- display_name
- config_schema
properties:
name:
type: string
description: 提供者唯一标识
example: "ollama"
display_name:
type: string
description: 提供者显示名称
example: "Ollama 本地模型"
description:
type: string
description: 提供者描述
example: "使用 Ollama 运行的本地嵌入模型"
config_schema:
type: object
description: 配置参数定义JSON Schema 格式)
additionalProperties: true
EmbeddingConfig:
type: object
required:
- provider
- config
properties:
provider:
type: string
description: 当前激活的提供者
example: "ollama"
config:
type: object
description: 提供者配置参数
additionalProperties: true
updated_at:
type: string
format: date-time
description: 配置最后更新时间
EmbeddingConfigUpdate:
type: object
required:
- provider
properties:
provider:
type: string
description: 提供者标识
example: "ollama"
config:
type: object
description: 提供者配置参数
additionalProperties: true
EmbeddingTestResult:
type: object
required:
- success
- dimension
properties:
success:
type: boolean
description: 测试是否成功
dimension:
type: integer
description: 返回的向量维度
example: 768
latency_ms:
type: number
description: 响应延迟(毫秒)
example: 125.5
message:
type: string
description: 测试结果消息
example: "连接成功,向量维度: 768"
error:
type: string
description: 错误信息(失败时)
example: "连接超时"
DocumentFormat:
type: object
required:
- extension
- name
properties:
extension:
type: string
description: 文件扩展名
example: ".pdf"
name:
type: string
description: 格式名称
example: "PDF 文档"
description:
type: string
description: 格式描述
example: "使用 PyMuPDF 解析 PDF 文档"
LLMProviderInfo:
type: object
required:
- name
- display_name
- config_schema
properties:
name:
type: string
description: 提供者唯一标识
example: "openai"
display_name:
type: string
description: 提供者显示名称
example: "OpenAI"
description:
type: string
description: 提供者描述
example: "OpenAI GPT 系列模型"
config_schema:
type: object
description: 配置参数定义JSON Schema 格式)
additionalProperties: true
LLMConfig:
type: object
required:
- provider
- config
properties:
provider:
type: string
description: 当前激活的提供者
example: "openai"
config:
type: object
description: 提供者配置参数
additionalProperties: true
example:
api_key: "sk-xxx"
base_url: "https://api.openai.com/v1"
model: "gpt-4o-mini"
updated_at:
type: string
format: date-time
description: 配置最后更新时间
LLMConfigUpdate:
type: object
required:
- provider
properties:
provider:
type: string
description: 提供者标识
example: "openai"
config:
type: object
description: 提供者配置参数
additionalProperties: true
LLMTestResult:
type: object
required:
- success
properties:
success:
type: boolean
description: 测试是否成功
response:
type: string
description: LLM 响应内容
example: "你好!我是一个 AI 助手..."
latency_ms:
type: number
description: 响应延迟(毫秒)
example: 1250.5
prompt_tokens:
type: integer
description: 输入 Token 数
example: 15
completion_tokens:
type: integer
description: 输出 Token 数
example: 50
total_tokens:
type: integer
description: 总 Token 数
example: 65
message:
type: string
description: 测试结果消息
example: "连接成功"
error:
type: string
description: 错误信息(失败时)
example: "API Key 无效"
RagExperimentRequest:
type: object
required:
- query
properties:
query:
type: string
description: 查询文本
example: "什么是 RAG"
kb_ids:
type: array
items:
type: string
description: 知识库 ID 列表
top_k:
type: integer
description: 检索数量
default: 5
score_threshold:
type: number
description: 相似度阈值
default: 0.5
llm_provider:
type: string
description: 指定 LLM 提供者(可选)
example: "openai"
generate_response:
type: boolean
description: 是否生成 AI 回复
default: true
RagExperimentResult:
type: object
properties:
query:
type: string
description: 原始查询
retrieval_results:
type: array
items:
$ref: '#/components/schemas/RetrievalResult'
final_prompt:
type: string
description: 最终拼接的 Prompt
ai_response:
$ref: '#/components/schemas/AIResponse'
total_latency_ms:
type: number
description: 总耗时(毫秒)
RetrievalResult:
type: object
properties:
content:
type: string
description: 检索到的内容
score:
type: number
description: 相似度分数
source:
type: string
description: 来源文档
metadata:
type: object
additionalProperties: true
description: 元数据
AIResponse:
type: object
properties:
content:
type: string
description: AI 回复内容
prompt_tokens:
type: integer
description: 输入 Token 数
completion_tokens:
type: integer
description: 输出 Token 数
total_tokens:
type: integer
description: 总 Token 数
latency_ms:
type: number
description: 生成耗时(毫秒)
model:
type: string
description: 使用的模型