140 lines
8.9 KiB
JSON
140 lines
8.9 KiB
JSON
{
|
||
"file_path": "poster/text_generator.py",
|
||
"file_size": 2350,
|
||
"line_count": 80,
|
||
"functions": [
|
||
{
|
||
"name": "__init__",
|
||
"line_start": 19,
|
||
"line_end": 27,
|
||
"args": [
|
||
{
|
||
"name": "self"
|
||
},
|
||
{
|
||
"name": "ai_agent",
|
||
"type_hint": "AIAgent"
|
||
}
|
||
],
|
||
"return_type": null,
|
||
"docstring": "初始化内容生成器。\n\nArgs:\n ai_agent (AIAgent): 用于与AI模型交互的代理。",
|
||
"is_async": false,
|
||
"decorators": [],
|
||
"code": " def __init__(self, ai_agent: AIAgent):\n \"\"\"\n 初始化内容生成器。\n\n Args:\n ai_agent (AIAgent): 用于与AI模型交互的代理。\n \"\"\"\n self.ai_agent = ai_agent\n self.logger = logging.getLogger(__name__)",
|
||
"code_hash": "d4242ab8f31b36684a6b1ccb6f5136da"
|
||
}
|
||
],
|
||
"classes": [
|
||
{
|
||
"name": "PosterContentGenerator",
|
||
"line_start": 15,
|
||
"line_end": 81,
|
||
"bases": [],
|
||
"methods": [
|
||
{
|
||
"name": "__init__",
|
||
"line_start": 19,
|
||
"line_end": 27,
|
||
"args": [
|
||
{
|
||
"name": "self"
|
||
},
|
||
{
|
||
"name": "ai_agent",
|
||
"type_hint": "AIAgent"
|
||
}
|
||
],
|
||
"return_type": null,
|
||
"docstring": "初始化内容生成器。\n\nArgs:\n ai_agent (AIAgent): 用于与AI模型交互的代理。",
|
||
"is_async": false,
|
||
"decorators": [],
|
||
"code": " def __init__(self, ai_agent: AIAgent):\n \"\"\"\n 初始化内容生成器。\n\n Args:\n ai_agent (AIAgent): 用于与AI模型交互的代理。\n \"\"\"\n self.ai_agent = ai_agent\n self.logger = logging.getLogger(__name__)",
|
||
"code_hash": "d4242ab8f31b36684a6b1ccb6f5136da"
|
||
},
|
||
{
|
||
"name": "generate_text_for_poster",
|
||
"line_start": 29,
|
||
"line_end": 81,
|
||
"args": [
|
||
{
|
||
"name": "self"
|
||
},
|
||
{
|
||
"name": "system_prompt",
|
||
"type_hint": "str"
|
||
},
|
||
{
|
||
"name": "user_prompt",
|
||
"type_hint": "str"
|
||
},
|
||
{
|
||
"name": "context_data",
|
||
"type_hint": "Optional[Dict[str, Any]]"
|
||
},
|
||
{
|
||
"name": "temperature",
|
||
"type_hint": "Optional[float]"
|
||
},
|
||
{
|
||
"name": "top_p",
|
||
"type_hint": "Optional[float]"
|
||
}
|
||
],
|
||
"return_type": "Optional[Dict[str, Any]]",
|
||
"docstring": "为单个海报任务生成文本内容。\n\nArgs:\n system_prompt (str): 提供给AI的系统级指令。\n user_prompt (str): 提供给AI的用户级指令,可包含占位符。\n context_data (Optional[Dict[str, Any]]): 用于填充用户指令占位符的数据。\n temperature (Optional[float]): AI模型温度参数。\n top_p (Optional[float]): AI模型top_p参数。\n\nReturns:\n Optional[Dict[str, Any]]: 解析后的JSON对象,包含生成的文本;如果失败则返回None。",
|
||
"is_async": true,
|
||
"decorators": [],
|
||
"code": " async def generate_text_for_poster(\n self,\n system_prompt: str,\n user_prompt: str,\n context_data: Optional[Dict[str, Any]] = None,\n temperature: Optional[float] = None,\n top_p: Optional[float] = None,\n ) -> Optional[Dict[str, Any]]:\n \"\"\"\n 为单个海报任务生成文本内容。\n\n Args:\n system_prompt (str): 提供给AI的系统级指令。\n user_prompt (str): 提供给AI的用户级指令,可包含占位符。\n context_data (Optional[Dict[str, Any]]): 用于填充用户指令占位符的数据。\n temperature (Optional[float]): AI模型温度参数。\n top_p (Optional[float]): AI模型top_p参数。\n\n Returns:\n Optional[Dict[str, Any]]: 解析后的JSON对象,包含生成的文本;如果失败则返回None。\n \"\"\"\n if context_data:\n try:\n # 使用上下文数据格式化用户提示\n final_user_prompt = user_prompt.format(**context_data)\n except KeyError as e:\n self.logger.error(f\"格式化用户提示失败,缺少键: {e}\")\n return None\n else:\n final_user_prompt = user_prompt\n\n self.logger.info(\"正在调用AI生成海报文案...\")\n self.logger.debug(f\"System Prompt: {system_prompt[:200]}...\")\n self.logger.debug(f\"User Prompt: {final_user_prompt[:200]}...\")\n\n try:\n raw_response, _, _, _ = await self.ai_agent.generate_text(\n system_prompt=system_prompt,\n user_prompt=final_user_prompt,\n temperature=temperature,\n top_p=top_p\n )\n\n if not raw_response:\n self.logger.error(\"AI未能返回任何内容。\")\n return None\n\n # 使用通用JSON解析函数处理响应\n return process_llm_json_text(raw_response)\n\n except Exception as e:\n self.logger.error(f\"调用AI生成文案时发生严重错误: {e}\", exc_info=True)\n return None ",
|
||
"code_hash": "eb82547f3fe0aefb95850fa0b9eeddfe"
|
||
}
|
||
],
|
||
"docstring": "使用AI模型为海报生成文本内容。",
|
||
"decorators": [],
|
||
"code": "class PosterContentGenerator:\n \"\"\"\n 使用AI模型为海报生成文本内容。\n \"\"\"\n def __init__(self, ai_agent: AIAgent):\n \"\"\"\n 初始化内容生成器。\n\n Args:\n ai_agent (AIAgent): 用于与AI模型交互的代理。\n \"\"\"\n self.ai_agent = ai_agent\n self.logger = logging.getLogger(__name__)\n\n async def generate_text_for_poster(\n self,\n system_prompt: str,\n user_prompt: str,\n context_data: Optional[Dict[str, Any]] = None,\n temperature: Optional[float] = None,\n top_p: Optional[float] = None,\n ) -> Optional[Dict[str, Any]]:\n \"\"\"\n 为单个海报任务生成文本内容。\n\n Args:\n system_prompt (str): 提供给AI的系统级指令。\n user_prompt (str): 提供给AI的用户级指令,可包含占位符。\n context_data (Optional[Dict[str, Any]]): 用于填充用户指令占位符的数据。\n temperature (Optional[float]): AI模型温度参数。\n top_p (Optional[float]): AI模型top_p参数。\n\n Returns:\n Optional[Dict[str, Any]]: 解析后的JSON对象,包含生成的文本;如果失败则返回None。\n \"\"\"\n if context_data:\n try:\n # 使用上下文数据格式化用户提示\n final_user_prompt = user_prompt.format(**context_data)\n except KeyError as e:\n self.logger.error(f\"格式化用户提示失败,缺少键: {e}\")\n return None\n else:\n final_user_prompt = user_prompt\n\n self.logger.info(\"正在调用AI生成海报文案...\")\n self.logger.debug(f\"System Prompt: {system_prompt[:200]}...\")\n self.logger.debug(f\"User Prompt: {final_user_prompt[:200]}...\")\n\n try:\n raw_response, _, _, _ = await self.ai_agent.generate_text(\n system_prompt=system_prompt,\n user_prompt=final_user_prompt,\n temperature=temperature,\n top_p=top_p\n )\n\n if not raw_response:\n self.logger.error(\"AI未能返回任何内容。\")\n return None\n\n # 使用通用JSON解析函数处理响应\n return process_llm_json_text(raw_response)\n\n except Exception as e:\n self.logger.error(f\"调用AI生成文案时发生严重错误: {e}\", exc_info=True)\n return None ",
|
||
"code_hash": "7cbdd2b9ce079ad3bd1e3cd408023334"
|
||
}
|
||
],
|
||
"imports": [
|
||
{
|
||
"type": "import",
|
||
"modules": [
|
||
"logging"
|
||
],
|
||
"aliases": []
|
||
},
|
||
{
|
||
"type": "from_import",
|
||
"module": "typing",
|
||
"names": [
|
||
"Dict",
|
||
"Any",
|
||
"Optional",
|
||
"List"
|
||
],
|
||
"aliases": [],
|
||
"level": 0
|
||
},
|
||
{
|
||
"type": "from_import",
|
||
"module": "core.ai",
|
||
"names": [
|
||
"AIAgent"
|
||
],
|
||
"aliases": [],
|
||
"level": 0
|
||
},
|
||
{
|
||
"type": "from_import",
|
||
"module": "utils.file_io",
|
||
"names": [
|
||
"ResourceLoader",
|
||
"process_llm_json_text"
|
||
],
|
||
"aliases": [],
|
||
"level": 0
|
||
}
|
||
],
|
||
"constants": [],
|
||
"docstring": "海报文案内容生成器",
|
||
"content_hash": "56eef0aeda44b5fe49e0305a0267651a"
|
||
} |