186 lines
5.9 KiB
Python
186 lines
5.9 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
提示词API模型定义
|
||
"""
|
||
|
||
from typing import List, Dict, Any, Optional
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class StyleRequest(BaseModel):
|
||
"""风格请求模型"""
|
||
name: str = Field(..., description="风格名称")
|
||
description: Optional[str] = Field(None, description="风格描述,如果为空则表示获取")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "攻略风",
|
||
"description": "详细的旅行攻略信息,包含行程安排、交通指南、住宿推荐等实用信息,语言平实靠谱"
|
||
}
|
||
}
|
||
|
||
|
||
class StyleResponse(BaseModel):
|
||
"""风格响应模型"""
|
||
name: str = Field(..., description="风格名称")
|
||
description: str = Field(..., description="风格描述")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "攻略风",
|
||
"description": "详细的旅行攻略信息,包含行程安排、交通指南、住宿推荐等实用信息,语言平实靠谱"
|
||
}
|
||
}
|
||
|
||
|
||
class AudienceRequest(BaseModel):
|
||
"""受众请求模型"""
|
||
name: str = Field(..., description="受众名称")
|
||
description: Optional[str] = Field(None, description="受众描述,如果为空则表示获取")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "亲子向",
|
||
"description": "25-45岁家长群体,孩子年龄3-12岁,注重安全和教育意义,偏好收藏实用攻略"
|
||
}
|
||
}
|
||
|
||
|
||
class AudienceResponse(BaseModel):
|
||
"""受众响应模型"""
|
||
name: str = Field(..., description="受众名称")
|
||
description: str = Field(..., description="受众描述")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "亲子向",
|
||
"description": "25-45岁家长群体,孩子年龄3-12岁,注重安全和教育意义,偏好收藏实用攻略"
|
||
}
|
||
}
|
||
|
||
|
||
class ScenicSpotRequest(BaseModel):
|
||
"""景区请求模型"""
|
||
name: str = Field(..., description="景区名称")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "天津冒险湾"
|
||
}
|
||
}
|
||
|
||
|
||
class ScenicSpotResponse(BaseModel):
|
||
"""景区响应模型"""
|
||
name: str = Field(..., description="景区名称")
|
||
description: str = Field(..., description="景区描述")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"name": "天津冒险湾",
|
||
"description": "天津冒险湾位于天津市滨海新区,是华北地区最大的水上乐园..."
|
||
}
|
||
}
|
||
|
||
|
||
class StyleListResponse(BaseModel):
|
||
"""风格列表响应模型"""
|
||
styles: List[StyleResponse] = Field(..., description="风格列表")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"styles": [
|
||
{
|
||
"name": "攻略风",
|
||
"description": "详细的旅行攻略信息,包含行程安排、交通指南、住宿推荐等实用信息,语言平实靠谱"
|
||
},
|
||
{
|
||
"name": "清新文艺风",
|
||
"description": "文艺范十足,清新脱俗的表达风格,注重意境和美感描述"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
|
||
|
||
class AudienceListResponse(BaseModel):
|
||
"""受众列表响应模型"""
|
||
audiences: List[AudienceResponse] = Field(..., description="受众列表")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"audiences": [
|
||
{
|
||
"name": "亲子向",
|
||
"description": "25-45岁家长群体,孩子年龄3-12岁,注重安全和教育意义,偏好收藏实用攻略"
|
||
},
|
||
{
|
||
"name": "周边游",
|
||
"description": "全龄覆盖,主要围绕三天内的短期假期出游需求和周末出游需求"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
|
||
|
||
class ScenicSpotListResponse(BaseModel):
|
||
"""景区列表响应模型"""
|
||
spots: List[ScenicSpotResponse] = Field(..., description="景区列表")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"spots": [
|
||
{
|
||
"name": "天津冒险湾",
|
||
"description": "天津冒险湾位于天津市滨海新区,是华北地区最大的水上乐园..."
|
||
}
|
||
]
|
||
}
|
||
}
|
||
|
||
|
||
class PromptBuilderRequest(BaseModel):
|
||
"""提示词构建请求模型"""
|
||
topic: Dict[str, Any] = Field(..., description="选题信息")
|
||
step: Optional[str] = Field(None, description="当前步骤,用于过滤参考内容")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"topic": {
|
||
"index": "1",
|
||
"date": "2025-07-15",
|
||
"object": "天津冒险湾",
|
||
"product": "冒险湾-2大2小套票",
|
||
"style": "攻略风",
|
||
"targetAudience": "亲子向",
|
||
"logic": "暑期亲子游热门景点推荐"
|
||
},
|
||
"step": "content"
|
||
}
|
||
}
|
||
|
||
|
||
class PromptBuilderResponse(BaseModel):
|
||
"""提示词构建响应模型"""
|
||
system_prompt: str = Field(..., description="系统提示词")
|
||
user_prompt: str = Field(..., description="用户提示词")
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"system_prompt": "你是一位专业的旅游内容创作者...",
|
||
"user_prompt": "请根据以下信息创作一篇旅游文章..."
|
||
}
|
||
} |