112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
# =============================================================================
|
|
# 企微IT智能服务台 — AI 辅助消息框请求模型
|
|
# =============================================================================
|
|
# 说明:坐席端 AI 辅助工具栏的 4 个功能的请求验证模型:
|
|
# 1. AutocompleteRequest — 自动补齐
|
|
# 2. ToneAdjustRequest — 语气调整
|
|
# 3. PolishRequest — 文字润色
|
|
# 4. RewriteRequest — 智能改写
|
|
#
|
|
# 字段约束与 PRD v1.0 / 增量设计 v1.0 对齐。
|
|
# =============================================================================
|
|
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class AutocompleteRequest(BaseModel):
|
|
"""自动补齐请求。
|
|
|
|
坐席输入停顿超过 800ms 后,前端发送当前输入文本请求补齐建议。
|
|
|
|
Attributes:
|
|
current_text: 当前输入文本,至少 1 个字符
|
|
cursor_position: 光标位置(保留字段,当前未使用)
|
|
max_length: 补齐建议最大长度(10-200 字符,默认 80)
|
|
"""
|
|
current_text: str = Field(
|
|
..., min_length=1, max_length=500,
|
|
description="当前输入文本"
|
|
)
|
|
cursor_position: int = Field(
|
|
0, ge=0,
|
|
description="光标位置"
|
|
)
|
|
max_length: int = Field(
|
|
80, ge=10, le=200,
|
|
description="补齐最大长度"
|
|
)
|
|
|
|
|
|
class ToneAdjustRequest(BaseModel):
|
|
"""语气调整请求。
|
|
|
|
坐席选中一段文字后,选择目标语气,请求 AI 改写。
|
|
|
|
Attributes:
|
|
selected_text: 选中的文字,至少 1 个字符
|
|
full_text: 输入框完整内容(可选,供 AI 理解上下文)
|
|
tone: 目标语气,必须是 professional/friendly/concise 之一
|
|
"""
|
|
selected_text: str = Field(
|
|
..., min_length=1, max_length=2000,
|
|
description="选中的文字"
|
|
)
|
|
full_text: str = Field(
|
|
"", max_length=5000,
|
|
description="输入框完整内容"
|
|
)
|
|
tone: str = Field(
|
|
..., pattern="^(professional|friendly|concise)$",
|
|
description="目标语气:professional/friendly/concise"
|
|
)
|
|
|
|
|
|
class PolishRequest(BaseModel):
|
|
"""文字润色请求。
|
|
|
|
坐席点击润色按钮后,选择操作类型,请求 AI 对输入文字进行处理。
|
|
|
|
Attributes:
|
|
text: 待润色文字
|
|
action: 润色操作类型:expand(扩写)/compress(压缩)/correct(纠错)
|
|
conversation_context: 是否携带对话上下文(默认 True)
|
|
"""
|
|
text: str = Field(
|
|
..., min_length=1, max_length=5000,
|
|
description="待润色文字"
|
|
)
|
|
action: str = Field(
|
|
..., pattern="^(expand|compress|correct)$",
|
|
description="润色操作:expand/compress/correct"
|
|
)
|
|
conversation_context: bool = Field(
|
|
True,
|
|
description="是否携带对话上下文"
|
|
)
|
|
|
|
|
|
class RewriteRequest(BaseModel):
|
|
"""智能改写请求。
|
|
|
|
坐席点击改写按钮后,AI 基于对话上下文生成多个不同风格的备选回复。
|
|
|
|
Attributes:
|
|
current_text: 当前输入文本(可为空,此时 AI 仅基于对话上下文生成)
|
|
generate_count: 生成版本数(1-5,默认 3)
|
|
include_knowledge: 是否包含知识库引用版本(默认 True)
|
|
"""
|
|
current_text: str = Field(
|
|
"", max_length=5000,
|
|
description="当前输入文本(可为空)"
|
|
)
|
|
generate_count: int = Field(
|
|
3, ge=1, le=5,
|
|
description="生成版本数"
|
|
)
|
|
include_knowledge: bool = Field(
|
|
True,
|
|
description="是否包含知识库引用版本"
|
|
)
|