# 智能多幅四格漫画生成系统 - 完整介绍



# 智能多幅四格漫画生成系统 - 完整介绍

## 一、系统架构概览

这个工作流是一个**基于LangGraph的多智能体协作系统**,通过将长文案智能拆分,为每个情节部分独立生成四格漫画,从而实现更全面的主题表达。

### 核心架构图
```
输入文案
    ↓
【文案拆分智能体】→ 拆分成多个自然情节部分
    ↓
【漫画生成循环】→ 为每个部分生成四格漫画
    ├── 编剧智能体(LLM)
    ├── 人物设计(简化)
    ├── 分镜设计(从剧本提取)
    ├── 插画师智能体(Image Generation)
    └── 图片拼接(PIL)
    ↓
【输出格式化】→ 显示多幅漫画结果
    ↓
输出多幅四格漫画
```

---

## 二、使用的配置文件详解

### 1. 文案拆分配置文件
**文件路径**: `config/content_splitter_cfg.json`

#### 模型配置
```json
{
  "model": "doubao-seed-1-8-251228",  // 豆包大模型
  "temperature": 0.5,                 // 较低温度,确保拆分准确
  "top_p": 0.95,
  "max_completion_tokens": 2000,
  "thinking": "disabled"
}
```

#### 系统提示词(System Prompt)
核心职责:
- 将长文案拆分成自然的、独立的情节部分
- 每个部分是一个完整的小故事
- 每个部分能独立生成一幅四格漫画

拆分规则:
- **短文案**(50字以内):1-2个部分
- **中等长度**(50-150字):2-4个部分
- **长文案**(150字以上):4-6个部分

拆分原则:
1. 每个部分是一个完整的情节片段
2. 有明确的时间、地点、人物、事件
3. 避免将连续动作拆分
4. 按照自然时间顺序

#### 用户提示词(User Prompt)
```jinja2
请将以下文案拆分成几个自然的情节部分:

原文案:{{ original_content }}

请输出JSON格式:
{
  "parts": ["部分1", "部分2", "部分3"]
}
```

---

### 2. 编剧智能体配置(硬编码在子图中)

**文件位置**: `src/graphs/loop_graph.py`

#### 模型配置
```python
model="doubao-seed-1-8-251228",  // 豆包大模型
temperature=0.7,                  // 中等温度,平衡创意和准确性
max_completion_tokens=3000
```

#### 系统提示词
```
你是一位专业的四格漫画编剧。你的任务是分析用户提供的文案,
创作一个完整的四格漫画剧本。

编剧职责:
1. 分析文案的核心主题和情感基调
2. 提取关键词和关键信息
3. 创作一个4格漫画的完整故事
4. 每个格子包含:场景、人物、情节、对话、旁白
5. 故事要有:开场→发展→高潮→结局的完整结构
6. 对话要简洁有力,旁白要点题
```

#### 输出格式
```json
{
  "script_content": {
    "title": "漫画标题",
    "theme": "核心主题",
    "panels": [
      {
        "panel": 1,
        "scene": "场景描述",
        "characters": "人物描述",
        "plot": "情节描述",
        "dialogue": "对话内容",
        "narration": "旁白内容"
      },
      ... (共4格)
    ]
  },
  "theme_analysis": {
    "core_theme": "核心主题",
    "emotion": "情感基调",
    "keywords": ["关键词1", "关键词2", "关键词3"]
  }
}
```

---

### 3. 插画师智能体配置(硬编码在子图中)

**文件位置**: `src/graphs/loop_graph.py`

#### 图片生成配置
```python
img_client.generate(
    prompt=prompt,
    size="2048x1536",              // 4:3 比例
    watermark=False,               // 无水印
    response_format="url"          // 返回URL
)
```

#### 提示词构建
```python
prompt = f"""
Anime manga style panel. {scene}. {description}. 
Japanese manga style, anime characters, clean black outlines, 
cel-shaded coloring. 
NO photorealistic humans, only anime/manga characters. 
Professional manga art style. 
Add speech bubbles and text boxes for dialogue and narration.
"""
```

**关键要求**:
- 日系动漫风格
- 黑色轮廓线
- 平涂着色
- **禁止真人照片**
- 专业漫画艺术风格
- 包含对话气泡和文字框

---

## 三、核心技术配置

### 1. 图片生成比例
- **独立图片**: `2048x1536`(4:3 比例)
- **最终合成**: 精确3:4比例(宽度:高度 = 3:4)

### 2. 标题区域配置
```python
title_height = 250                # 标题区域高度 250px
font_title_size = 56              # 标题字体 56号
font_theme_size = 36              # 主题字体 36号
title_background = (240, 240, 240) # 灰色背景
```

### 3. 对话气泡配置
```python
bubble_background = (255, 255, 255)  # 白色背景
bubble_border = (0, 0, 0)            # 黑色边框
bubble_border_width = 3              # 边框宽度 3px
dialogue_font_size = 28              # 对话字体 28号
```

### 4. 旁白配置
```python
narration_bg = (0, 0, 255, 180)      # 蓝色半透明背景
narration_text_color = (255, 255, 255)  # 白色文字
narration_font_size = 28             # 旁白字体 28号
narration_height = 60                # 旁白区域高度
```

---

## 四、工作流程详解

### 阶段1:文案拆分
```
输入:长文案
  ↓
LLM分析文案结构和语义
  ↓
按自然情节拆分
  ↓
输出:文案部分列表
```

**示例**:
- **输入**: "小明起床上班迟到了,路上遇到大堵车,到了公司被老板训话,最后加班到深夜"
- **输出**: ["小明起床上班迟到了", "路上遇到大堵车", "到了公司被老板训话", "最后加班到深夜"]

### 阶段2:漫画生成循环
```
对于每个文案部分:
  ↓
编剧智能体创作剧本(标题、主题、4格分镜)
  ↓
人物设计(简化为日系动漫风格)
  ↓
分镜设计(从剧本提取)
  ↓
插画师生成4张图片(带对话气泡和旁白)
  ↓
图片拼接(2x2布局 + 标题区域)
  ↓
保存到 multiple_comics 列表
```

### 阶段3:输出格式化
```
对于每幅漫画:
  ↓
显示文案内容
  ↓
显示标题和主题
  ↓
显示文件路径
  ↓
输出最终结果
```

---

## 五、关键技术点

### 1. 循环处理机制
使用LangGraph的 **looparray** 节点类型:
```python
builder.add_node("comic_generator", comic_generator_wrapper, 
                 metadata={"type": "looparray"})
```

**工作原理**:
- 自动遍历 `content_parts` 列表
- 每次循环处理一个部分
- 将生成的漫画添加到 `multiple_comics` 列表
- 循环直到所有部分处理完成

### 2. 子图架构
创建独立的子图 `comic_subgraph`:
```python
comic_subgraph = StateGraph(GlobalState)
comic_subgraph.add_node("single_comic_generator", single_comic_generator)
comic_subgraph.set_entry_point("single_comic_generator")
comic_subgraph.add_edge("single_comic_generator", END)
subgraph = comic_subgraph.compile()
```

**优势**:
- 封装漫画生成逻辑
- 便于复用和维护
- 主图逻辑清晰简洁

### 3. 状态管理
使用 **GlobalState** 管理全局状态:
```python
class GlobalState(BaseModel):
    original_content: str = Field(..., description="原始文案")
    content_parts: List[str] = Field(default=[], description="文案部分列表")
    multiple_comics: List[dict] = Field(default=[], description="多幅漫画")
    # ... 其他字段
```

### 4. 字体加载策略
```python
font_paths = [
    "/usr/share/fonts/truetype/wqy/wqy-microhei.ttc",
    "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc",
    "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
]
```

支持中文字体优先,英文作为备选。

---

## 六、技能集成

### 1. 大语言模型技能
- **用途**: 文案拆分、剧本创作
- **集成方式**: `LLMClient`
- **模型**: `doubao-seed-1-8-251228`

### 2. 图片生成技能
- **用途**: 生成动漫风格插画
- **集成方式**: `ImageGenerationClient`
- **参数**: `size="2048x1536"`, `watermark=False`

---

## 七、输出示例

```
【第 1 幅四格漫画】
文案内容: 小明起床上班迟到了
标题: 迟到的清晨
主题: 展现起床迟到的紧迫感
File: [assets/四格漫画_第1幅.png]

【第 2 幅四格漫画】
文案内容: 路上遇到大堵车
标题: 堵车记
主题: 早高峰的无奈
File: [assets/四格漫画_第2幅.png]

【第 3 幅四格漫画】
文案内容: 到了公司被老板训话
标题: 老板的怒火
主题: 职场压力
File: [assets/四格漫画_第3幅.png]

【第 4 幅四格漫画】
文案内容: 最后加班到深夜
标题: 深夜加班
主题: 奋斗与坚持
File: [assets/四格漫画_第4幅.png]
```

---

## 八、系统优势

1. **智能拆分**: 使用LLM理解语义,按自然情节拆分
2. **循环处理**: 自动处理多个部分,无需手动迭代
3. **子图封装**: 漫画生成逻辑独立,便于维护
4. **完整工作流**: 从输入到输出全流程自动化
5. **多主题表达**: 每幅漫画聚焦一个情节,更全面表达主题

这个系统通过多智能体协作和循环处理,实现了长文案到多幅四格漫画的智能转换,让故事表达更加生动和完整!


收藏

扫描二维码,在手机上阅读
文章目录


    四格漫画

    2026年03月15日 热搜榜单,一览天下事

    评 论
    评论已关闭