91 lines
2.0 KiB
Python
91 lines
2.0 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
"""
|
|||
|
|
内容生成相关接口定义
|
|||
|
|
采用依赖倒置原则,API层依赖接口而非具体实现
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from abc import ABC, abstractmethod
|
|||
|
|
from typing import Dict, List, Any, Optional, Tuple
|
|||
|
|
from dataclasses import dataclass
|
|||
|
|
|
|||
|
|
|
|||
|
|
@dataclass
|
|||
|
|
class TopicRequest:
|
|||
|
|
"""主题生成请求"""
|
|||
|
|
user_requirements: str
|
|||
|
|
count: int = 5
|
|||
|
|
style: str = "default"
|
|||
|
|
|
|||
|
|
|
|||
|
|
@dataclass
|
|||
|
|
class ContentRequest:
|
|||
|
|
"""内容生成请求"""
|
|||
|
|
topic: Dict[str, Any]
|
|||
|
|
style: str = "default"
|
|||
|
|
length: str = "medium"
|
|||
|
|
|
|||
|
|
|
|||
|
|
@dataclass
|
|||
|
|
class ContentResult:
|
|||
|
|
"""内容生成结果"""
|
|||
|
|
content: str
|
|||
|
|
metadata: Dict[str, Any]
|
|||
|
|
success: bool
|
|||
|
|
error_message: Optional[str] = None
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ITopicGenerator(ABC):
|
|||
|
|
"""主题生成器接口"""
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def generate_topics(self, request: TopicRequest) -> List[Dict[str, Any]]:
|
|||
|
|
"""生成主题列表"""
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
class IContentGenerator(ABC):
|
|||
|
|
"""内容生成器接口"""
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def generate_content(self, request: ContentRequest) -> ContentResult:
|
|||
|
|
"""生成内容"""
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
class IContentJudger(ABC):
|
|||
|
|
"""内容审核器接口"""
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def judge_content(self, content: str) -> Tuple[bool, str, float]:
|
|||
|
|
"""审核内容质量"""
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
class IContentService(ABC):
|
|||
|
|
"""内容服务接口 - 应用服务层"""
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def create_complete_content(
|
|||
|
|
self,
|
|||
|
|
user_requirements: str,
|
|||
|
|
count: int = 5,
|
|||
|
|
style: str = "default"
|
|||
|
|
) -> Dict[str, Any]:
|
|||
|
|
"""完整的内容创作流程"""
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def generate_topics_only(self, request: TopicRequest) -> List[Dict[str, Any]]:
|
|||
|
|
"""仅生成主题"""
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
@abstractmethod
|
|||
|
|
async def generate_content_from_topic(
|
|||
|
|
self,
|
|||
|
|
topic: Dict[str, Any],
|
|||
|
|
style: str = "default"
|
|||
|
|
) -> ContentResult:
|
|||
|
|
"""根据主题生成内容"""
|
|||
|
|
pass
|