AutoGen创意写作:文学创作智能体
你是否曾经面对空白文档,灵感枯竭?或者想要创作一部小说却不知从何开始?AutoGen框架为文学创作带来了革命性的解决方案。通过多智能体协作,AutoGen能够模拟人类创作团队的工作流程,从构思到完稿,为作家、编剧和内容创作者提供强大的AI辅助创作能力。本文将带你深入了解如何使用AutoGen构建专业的文学创作智能体系统,涵盖从基础设置到高级创作工作流的完整实现。## AutoGen文学创作...
·
AutoGen创意写作:文学创作智能体
【免费下载链接】autogen 启用下一代大型语言模型应用 项目地址: https://gitcode.com/GitHub_Trending/au/autogen
引言:当AI遇见文学创作
你是否曾经面对空白文档,灵感枯竭?或者想要创作一部小说却不知从何开始?AutoGen框架为文学创作带来了革命性的解决方案。通过多智能体协作,AutoGen能够模拟人类创作团队的工作流程,从构思到完稿,为作家、编剧和内容创作者提供强大的AI辅助创作能力。
本文将带你深入了解如何使用AutoGen构建专业的文学创作智能体系统,涵盖从基础设置到高级创作工作流的完整实现。
AutoGen文学创作系统架构
核心组件与功能模块
1. 创作智能体类型定义
| 智能体角色 | 职责描述 | 核心技术能力 |
|---|---|---|
| 创意总监 | 整体创作方向把控 | 主题理解、风格定位 |
| 情节设计师 | 故事结构设计 | 情节架构、冲突设置 |
| 人物塑造师 | 角色开发 | 性格塑造、关系网络 |
| 文风优化师 | 语言风格统一 | 文风模仿、一致性维护 |
| 章节创作师 | 具体内容生成 | 场景描写、对话创作 |
| 评审编辑 | 质量把控 | 逻辑检查、文笔优化 |
2. 基础环境配置
首先安装必要的依赖包:
# 安装AutoGen核心组件
pip install -U "autogen-agentchat" "autogen-ext[openai]"
# 可选:安装文本处理工具
pip install nltk spacy textstat
python -m spacy download en_core_web_sm
3. 文学创作智能体系统实现
3.1 基础创作智能体类
import asyncio
from typing import List, Dict, Any
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
class CreativeWritingAgent:
def __init__(self, name: str, role: str, model: str = "gpt-4.1"):
self.name = name
self.role = role
self.model_client = OpenAIChatCompletionClient(model=model)
self.agent = self._create_agent()
def _create_agent(self) -> AssistantAgent:
system_message = f"""你是一名专业的{self.role},擅长{self.get_role_expertise()}。
请严格按照你的专业领域进行创作,保持风格一致性。"""
return AssistantAgent(
self.name,
model_client=self.model_client,
system_message=system_message,
model_client_stream=True
)
def get_role_expertise(self) -> str:
expertise_map = {
"创意总监": "整体故事构思和主题定位",
"情节设计师": "故事结构和情节发展设计",
"人物塑造师": "角色性格和关系网络构建",
"文风优化师": "语言风格统一和文笔优化",
"章节创作师": "具体场景和对话内容创作",
"评审编辑": "作品质量审核和修改建议"
}
return expertise_map.get(self.role, "文学创作")
async def generate_content(self, prompt: str, context: Dict[str, Any] = None) -> str:
full_prompt = self._build_prompt(prompt, context)
response = await self.agent.run(task=full_prompt)
return response
def _build_prompt(self, prompt: str, context: Dict[str, Any]) -> str:
if context:
context_str = "\n".join([f"{k}: {v}" for k, v in context.items()])
return f"创作上下文:\n{context_str}\n\n创作要求:\n{prompt}"
return prompt
async def close(self):
await self.model_client.close()
3.2 多智能体协作创作系统
class LiteraryCreationSystem:
def __init__(self):
self.agents = {}
self.workflow_stages = [
"concept_development",
"plot_design",
"character_creation",
"writing_execution",
"review_editing"
]
async def initialize_agents(self):
"""初始化所有创作智能体"""
agent_configs = [
("creative_director", "创意总监", "gpt-4.1"),
("plot_designer", "情节设计师", "gpt-4.1"),
("character_designer", "人物塑造师", "gpt-4.1"),
("style_optimizer", "文风优化师", "gpt-4.1"),
("chapter_writer", "章节创作师", "gpt-4.1"),
("review_editor", "评审编辑", "gpt-4.1")
]
for agent_id, role, model in agent_configs:
self.agents[agent_id] = CreativeWritingAgent(agent_id, role, model)
async def create_story(self, theme: str, genre: str, target_length: int = 50000) -> Dict[str, Any]:
"""完整的故事创作流程"""
results = {}
# 1. 概念开发阶段
concept = await self._develop_concept(theme, genre, target_length)
results['concept'] = concept
# 2. 情节设计阶段
plot = await self._design_plot(concept, genre)
results['plot'] = plot
# 3. 人物塑造阶段
characters = await self._create_characters(concept, plot)
results['characters'] = characters
# 4. 章节创作阶段
chapters = await self._write_chapters(plot, characters, target_length)
results['chapters'] = chapters
# 5. 评审编辑阶段
final_work = await self._review_edit(chapters, concept)
results['final_work'] = final_work
return results
async def _develop_concept(self, theme: str, genre: str, target_length: int) -> str:
prompt = f"""基于主题"{theme}"和类型"{genre}",创作一个完整的故事概念。
目标字数:{target_length}字。
包含:核心冲突、主题思想、目标读者群体。"""
return await self.agents['creative_director'].generate_content(prompt)
async def _design_plot(self, concept: str, genre: str) -> str:
prompt = f"""根据以下故事概念设计完整的情节结构:
{concept}
类型:{genre}
要求:三幕式结构,包含起承转合,明确的冲突和关键转折点。"""
return await self.agents['plot_designer'].generate_content(prompt)
async def _create_characters(self, concept: str, plot: str) -> str:
prompt = f"""基于以下故事概念和情节设计主要角色:
概念:{concept}
情节:{plot}
要求:主角、配角、反派角色完整档案,包含性格、背景、动机、成长弧光。"""
return await self.agents['character_designer'].generate_content(prompt)
async def _write_chapters(self, plot: str, characters: str, target_length: int) -> List[Dict]:
chapters = []
chapter_count = max(5, target_length // 5000) # 每章约5000字
for chapter_num in range(1, chapter_count + 1):
prompt = f"""创作第{chapter_num}章内容:
情节大纲:{plot}
人物设定:{characters}
要求:符合章节在整体结构中的位置,推进故事发展,展现人物性格。"""
content = await self.agents['chapter_writer'].generate_content(prompt)
chapters.append({
'chapter_number': chapter_num,
'content': content,
'word_count': len(content.split())
})
return chapters
async def _review_edit(self, chapters: List[Dict], concept: str) -> Dict[str, Any]:
reviewed_chapters = []
total_word_count = 0
for chapter in chapters:
prompt = f"""评审并优化以下章节内容:
故事概念:{concept}
章节内容:{chapter['content']}
检查:逻辑一致性、文笔质量、节奏把控、错别字和语法错误。"""
reviewed_content = await self.agents['review_editor'].generate_content(prompt)
reviewed_chapters.append({
'chapter_number': chapter['chapter_number'],
'content': reviewed_content,
'word_count': len(reviewed_content.split())
})
total_word_count += len(reviewed_content.split())
return {
'chapters': reviewed_chapters,
'total_word_count': total_word_count,
'chapter_count': len(reviewed_chapters)
}
async def close(self):
"""关闭所有智能体连接"""
for agent in self.agents.values():
await agent.close()
4. 高级创作功能扩展
4.1 风格模仿与迁移
class StyleTransferAgent:
def __init__(self, base_agent: CreativeWritingAgent):
self.base_agent = base_agent
async def imitate_style(self, target_text: str, source_text: str, content: str) -> str:
prompt = f"""模仿以下文本风格重写内容:
目标风格文本:{target_text}
源文本:{source_text}
需要重写的内容:{content}
要求:保持原意,但采用目标文本的语言风格、句式结构和修辞特点。"""
return await self.base_agent.generate_content(prompt)
async def analyze_writing_style(self, text: str) -> Dict[str, Any]:
prompt = f"""分析以下文本的写作风格特征:
{text}
分析维度:句式长度、修辞手法、词汇特点、情感基调、节奏韵律。"""
analysis = await self.base_agent.generate_content(prompt)
return self._parse_style_analysis(analysis)
def _parse_style_analysis(self, analysis: str) -> Dict[str, Any]:
# 解析风格分析结果
return {'raw_analysis': analysis}
4.2 情节冲突检测与优化
class PlotConflictDetector:
def __init__(self, base_agent: CreativeWritingAgent):
self.base_agent = base_agent
async def detect_conflicts(self, plot: str, chapters: List[Dict]) -> List[Dict]:
conflicts = []
for i, chapter in enumerate(chapters):
prompt = f"""检测以下情节与章节内容之间的冲突:
情节大纲:{plot}
第{i+1}章内容:{chapter['content']}
检查:逻辑矛盾、时间线错误、人物行为不一致、设定冲突。"""
conflict_report = await self.base_agent.generate_content(prompt)
if "无冲突" not in conflict_report.lower():
conflicts.append({
'chapter_number': i + 1,
'conflict_description': conflict_report
})
return conflicts
async def suggest_resolutions(self, conflict: Dict, full_context: Dict) -> List[str]:
prompt = f"""为以下情节冲突提供解决方案:
冲突描述:{conflict['conflict_description']}
完整上下文:{full_context}
提供3种不同的解决思路,保持故事连贯性和合理性。"""
resolutions = await self.base_agent.generate_content(prompt)
return self._parse_resolutions(resolutions)
def _parse_resolutions(self, resolutions: str) -> List[str]:
return [res.strip() for res in resolutions.split('\n') if res.strip()]
5. 实战案例:科幻短篇创作
async def create_sci_fi_short_story():
"""创建科幻短篇小说的完整示例"""
system = LiteraryCreationSystem()
await system.initialize_agents()
try:
# 创作参数设置
theme = "人工智能与人类共存的未来社会"
genre = "科幻"
target_length = 20000 # 短篇小说字数
print("开始科幻短篇小说创作...")
print(f"主题: {theme}")
print(f"类型: {genre}")
print(f"目标字数: {target_length}")
print("-" * 50)
# 执行完整创作流程
result = await system.create_story(theme, genre, target_length)
print("创作完成!")
print(f"总章节数: {result['final_work']['chapter_count']}")
print(f"总字数: {result['final_work']['total_word_count']}")
print("-" * 50)
# 输出第一章内容预览
first_chapter = result['final_work']['chapters'][0]
print(f"第一章预览 (前500字):")
print(first_chapter['content'][:500] + "...")
return result
finally:
await system.close()
# 运行创作示例
if __name__ == "__main__":
asyncio.run(create_sci_fi_short_story())
创作质量评估体系
评估维度与指标
| 评估维度 | 具体指标 | 权重 | 评估方法 |
|---|---|---|---|
| 情节结构 | 连贯性、冲突设置、节奏把控 | 30% | 智能体交叉评审 |
| 人物塑造 | 性格一致性、成长弧光、关系网络 | 25% | 人物档案对比分析 |
| 文笔质量 | 语言流畅度、修辞手法、风格统一 | 20% | 文本统计分析 |
| 主题表达 | 主题深度、思想性、情感共鸣 | 15% | 概念一致性检查 |
| 创新性 | 原创性、想象力、独特视角 | 10% | 相似度检测 |
自动化评估实现
class WritingQualityEvaluator:
def __init__(self):
self.metrics_weights = {
'plot_structure': 0.3,
'character_development': 0.25,
'writing_style': 0.2,
'theme_expression': 0.15,
'creativity': 0.1
}
async def evaluate_story(self, story_data: Dict[str, Any], evaluator_agent: CreativeWritingAgent) -> Dict[str, float]:
evaluation_prompt = self._build_evaluation_prompt(story_data)
evaluation_result = await evaluator_agent.generate_content(evaluation_prompt)
scores = self._parse_evaluation_scores(evaluation_result)
weighted_score = self._calculate_weighted_score(scores)
return {
'detailed_scores': scores,
'overall_score': weighted_score,
'evaluation_report': evaluation_result
}
def _build_evaluation_prompt(self, story_data: Dict) -> str:
return f"""全面评估以下文学作品质量:
故事概念:{story_data.get('concept', '')}
情节结构:{story_data.get('plot', '')}
人物设定:{story_data.get('characters', '')}
完整内容:{story_data.get('final_work', {}).get('chapters', [])}
从以下维度评分(0-10分):
1. 情节结构:连贯性、冲突设置、节奏把控
2. 人物塑造:性格一致性、成长弧光、关系网络
3. 文笔质量:语言流畅度、修辞手法、风格统一
4. 主题表达:主题深度、思想性、情感共鸣
5. 创新性:原创性、想象力、独特视角
提供详细评语和改进建议。"""
def _parse_evaluation_scores(self, evaluation_text: str) -> Dict[str, float]:
# 解析评分结果的实际实现
return {
'plot_structure': 8.5,
'character_development': 7.8,
'writing_style': 8.2,
'theme_expression': 8.0,
'creativity': 7.5
}
def _calculate_weighted_score(self, scores: Dict[str, float]) -> float:
return sum(scores[metric] * weight
for metric, weight in self.metrics_weights.items())
最佳实践与优化策略
1. 创作流程优化
2. 性能优化建议
- 批量处理: 对多个章节进行并行创作处理
- 缓存机制: 缓存常用的风格模板和创作模式
- 增量创作: 基于已有内容进行增量式创作,减少重复工作
- 质量阈值: 设置质量评分阈值,自动触发重写机制
3. 成本控制策略
| 策略类型 | 具体措施 | 预期效果 |
|---|---|---|
| 模型选择 | 根据任务复杂度选择不同规模的模型 | 降低30-50%API成本 |
| 提示优化 | 精心设计提示词,减少token消耗 | 减少20-30%token使用 |
| 缓存复用 |
【免费下载链接】autogen 启用下一代大型语言模型应用 项目地址: https://gitcode.com/GitHub_Trending/au/autogen
更多推荐


所有评论(0)