#!/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": "请根据以下信息创作一篇旅游文章..." } }