feat: 优化 Swagger UI docs 默认参数和字段描述
main.py 变更:
- ChatMessage/ChatCompletionRequest 使用 Pydantic Field 添加 description 和 example
- model 默认 example 设为 'qwen-plus',提供 ['', 'qwen-flash', 'qwen-plus', 'qwen-max'] 选项
- messages 默认 example 设为 [{role: 'user', content: '你好,介绍一下你自己'}]
- 所有字段添加中文描述和取值范围约束 (ge/le)
- 修复 Swagger UI 点击 Try it out 后直接 Execute 报 'Unknown model: string' 的问题
效果:
- /docs 页面现在显示合理的默认值,一键即可测试
- 每个字段都有清晰的中文说明和取值范围提示
This commit is contained in:
38
main.py
38
main.py
@@ -58,23 +58,33 @@ _load_history()
|
|||||||
|
|
||||||
|
|
||||||
# ── OpenAI 兼容请求/响应模型 ────────────────────────────────
|
# ── OpenAI 兼容请求/响应模型 ────────────────────────────────
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
class ChatMessage(BaseModel):
|
class ChatMessage(BaseModel):
|
||||||
role: str
|
role: str = Field(..., description="角色:system, user, assistant", example="user")
|
||||||
content: Optional[str] = None
|
content: Optional[str] = Field(None, description="消息内容", example="你好,介绍一下你自己")
|
||||||
name: Optional[str] = None
|
name: Optional[str] = Field(None, description="可选的名称")
|
||||||
|
|
||||||
class ChatCompletionRequest(BaseModel):
|
class ChatCompletionRequest(BaseModel):
|
||||||
model: Optional[str] = None
|
model: Optional[str] = Field(
|
||||||
messages: List[ChatMessage]
|
None,
|
||||||
temperature: Optional[float] = 0.7
|
description="模型名称(留空时自动使用 NVIDIA 分类器智能路由)",
|
||||||
max_tokens: Optional[int] = None
|
example="qwen-plus",
|
||||||
stream: Optional[bool] = False
|
json_schema_extra={"examples": ["", "qwen-flash", "qwen-plus", "qwen-max"]}
|
||||||
top_p: Optional[float] = 1.0
|
)
|
||||||
n: Optional[int] = 1
|
messages: List[ChatMessage] = Field(
|
||||||
stop: Optional[Any] = None
|
...,
|
||||||
presence_penalty: Optional[float] = 0.0
|
description="对话消息列表",
|
||||||
frequency_penalty: Optional[float] = 0.0
|
example=[{"role": "user", "content": "你好,介绍一下你自己"}]
|
||||||
user: Optional[str] = None
|
)
|
||||||
|
temperature: Optional[float] = Field(0.7, ge=0, le=2, description="随机性 (0-2)")
|
||||||
|
max_tokens: Optional[int] = Field(None, ge=1, description="最大生成 token 数")
|
||||||
|
stream: Optional[bool] = Field(False, description="是否使用流式输出")
|
||||||
|
top_p: Optional[float] = Field(1.0, ge=0, le=1, description="核采样参数")
|
||||||
|
n: Optional[int] = Field(1, ge=1, le=10, description="生成回复数量")
|
||||||
|
stop: Optional[Any] = Field(None, description="停止词")
|
||||||
|
presence_penalty: Optional[float] = Field(0.0, ge=-2, le=2, description="存在惩罚")
|
||||||
|
frequency_penalty: Optional[float] = Field(0.0, ge=-2, le=2, description="频率惩罚")
|
||||||
|
user: Optional[str] = Field(None, description="用户标识")
|
||||||
|
|
||||||
|
|
||||||
# ── FastAPI App ──────────────────────────────────────────────
|
# ── FastAPI App ──────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user