ChatPPT 是一个基于大模型的 PPT 生成工具,支持文本、图片、音频、DOCX 文档等多模态输入,并可在生成大纲后自动为部分页面智能配图,最终导出为 PPTX 文件。
- 多模态内容输入
- 文本主题或需求描述
- 图片理解:支持
PNG、JPG、JPEG、GIF、BMP、WebP - 音频转文字:支持
WAV、FLAC、MP3 - Word 文档解析:支持
DOCX
- 对话式生成流程
- 基于 LLM 生成结构化 PPT 内容
- 支持在聊天历史中继续追问、补充和优化
- 兼容新版 Gradio 消息格式与历史记录提取
- 智能配图
- 自动挑选最适合插图的 3 页幻灯片
- 为每页生成文生图提示词并调用图像模型出图
- 自动将图片插入到对应页面内容中
- 支持主图像模型 + 候选回退模型
- 模板与布局
- 基于
python-pptx输出标准PPTX - 支持切换 PPT 模板
- 支持布局策略配置,当前默认使用
v2
- 基于
- 工程化能力
- 提供 Gradio Web UI
- 提供命令行入口,可直接把 Markdown 内容渲染成 PPT
- 自动清理非法文件名,避免导出失败
文本 / 图片 / 音频 / DOCX
↓
输入解析与内容提取
↓
LLM 生成 PPT 结构化文本
↓
可选:智能配图
↓
解析幻灯片结构与布局
↓
导出 PPTX 文件
git clone https://github.com/your-repo/ChatPPT.git
cd ChatPPT_github
pip install -r requirements.txt如果你需要处理音频,请确保本机可用 ffmpeg。
复制 .env.example 为 .env:
cp .env.example .env当前使用到的配置项如下:
| 变量名 | 说明 | 必填 |
|---|---|---|
LLM_API_TOKEN |
OpenAI 兼容接口的 API Token | ✅ |
LLM_BASE_URL |
OpenAI 兼容接口 Base URL | ✅ |
LLM_TEXT_MODEL |
文本生成模型 | ✅ |
LLM_VISION_MODEL |
图片理解模型 | ✅ |
LLM_IMAGE_MODEL |
文生图主模型 | ❌ |
LLM_IMAGE_FALLBACK_MODELS |
文生图回退模型列表,逗号分隔 | ❌ |
示例:
LLM_API_TOKEN=your_token_here
LLM_BASE_URL=your_base_url_here
LLM_TEXT_MODEL=gpt-5.4
LLM_VISION_MODEL=gemini-3.1-pro
LLM_IMAGE_MODEL=gemini-3-pro-image
LLM_IMAGE_FALLBACK_MODELS=gemini-3.1-flash-imagepython app.py默认启动后可在 http://localhost:7860 访问。
- 在输入框中输入主题、业务需求或页面草稿。
- 如有需要,可同时上传图片、音频或
DOCX文件。 - 点击发送,等待模型生成 PPT 结构化内容。
- 可以继续在对话中要求补充、删减、重写某几页内容。
- 点击
智能配图,为适合的页面自动生成插图。 - 点击
生成 PPT,导出PPTX文件。
- 文本输入会直接作为需求发送给聊天模型。
- 音频文件会先转写为文本,再进入生成流程。
- 图片文件会先做内容理解,再交给聊天模型整理为 PPT 内容。
DOCX文件会先解析为 Markdown,再通过内容处理器转换为 PPT 格式文本。
- 生成的 PPT 文件默认保存在
outputs/ - 智能配图生成的图片默认保存在
images/generated/
项目也支持直接将 Markdown 内容转换为 PPT:
python -m src.main inputs/test_input.md如果未传入参数,默认读取 inputs/test_input.md。
config.json 当前包含以下关键配置:
| 字段 | 说明 |
|---|---|
input_mode |
输入模式,默认 text |
ppt_template |
使用的 PPT 模板路径 |
chatbot_prompt |
聊天生成提示词文件 |
layout_policy |
布局策略,当前默认 v2 |
默认配置示例:
{
"input_mode": "text",
"ppt_template": "templates/SimpleTemplate.pptx",
"chatbot_prompt": "prompts/chatbot.txt",
"layout_policy": "v2"
}ChatPPT_github/
├── app.py # Gradio Web 应用入口
├── config.json # 项目配置
├── requirements.txt # Python 依赖
├── prompts/ # 提示词模板
│ ├── chatbot.txt
│ ├── content_processor.txt
│ └── image_agent.txt
├── src/
│ ├── main.py # CLI 入口
│ ├── gradio_server.py # 备用/模块化 Gradio 入口
│ ├── chatbot.py # 对话生成逻辑
│ ├── llm_client.py # 统一 LLM 客户端
│ ├── multi_modal.py # 图片理解能力
│ ├── image_agent.py # 智能配图与内容处理
│ ├── docx_parser.py # DOCX 解析
│ ├── openai_whisper.py # 音频转写
│ ├── input_parser.py # PPT 文本解析
│ ├── layout_manager.py # 布局策略管理
│ ├── template_manager.py # 模板与布局映射
│ ├── ppt_generator.py # PPTX 生成
│ ├── slide_builder.py # 单页构建逻辑
│ └── ...
├── templates/ # PPT 模板
│ ├── MasterTemplate.pptx
│ └── SimpleTemplate.pptx
├── inputs/ # 示例输入
├── outputs/ # 导出的 PPT 文件
└── images/ # 图片素材与自动生成图片
- Web UI:
Gradio - LLM 接入: OpenAI 兼容接口 +
langchain_openai - PPT 生成:
python-pptx - 图片加载与格式转换:
Pillow - 文生图调用: 自定义
LLMClient - 音频转写: Whisper 流程 +
librosa/soundfile - Word 解析:
python-docx - 日志:
loguru
DOCX是当前代码中明确支持的 Word 格式,DOC需先转换后再使用。- 智能配图依赖可用的文生图模型接口。
- 模型、模板和提示词均可按项目需求替换。
MIT License