Skip to content

qingni/ChatPPT

Repository files navigation

🎨 ChatPPT

ChatPPT 是一个基于大模型的 PPT 生成工具,支持文本、图片、音频、DOCX 文档等多模态输入,并可在生成大纲后自动为部分页面智能配图,最终导出为 PPTX 文件。

✨ 最新功能

  • 多模态内容输入
    • 文本主题或需求描述
    • 图片理解:支持 PNGJPGJPEGGIFBMPWebP
    • 音频转文字:支持 WAVFLACMP3
    • Word 文档解析:支持 DOCX
  • 对话式生成流程
    • 基于 LLM 生成结构化 PPT 内容
    • 支持在聊天历史中继续追问、补充和优化
    • 兼容新版 Gradio 消息格式与历史记录提取
  • 智能配图
    • 自动挑选最适合插图的 3 页幻灯片
    • 为每页生成文生图提示词并调用图像模型出图
    • 自动将图片插入到对应页面内容中
    • 支持主图像模型 + 候选回退模型
  • 模板与布局
    • 基于 python-pptx 输出标准 PPTX
    • 支持切换 PPT 模板
    • 支持布局策略配置,当前默认使用 v2
  • 工程化能力
    • 提供 Gradio Web UI
    • 提供命令行入口,可直接把 Markdown 内容渲染成 PPT
    • 自动清理非法文件名,避免导出失败

🔄 处理流程

文本 / 图片 / 音频 / DOCX
        ↓
输入解析与内容提取
        ↓
LLM 生成 PPT 结构化文本
        ↓
可选:智能配图
        ↓
解析幻灯片结构与布局
        ↓
导出 PPTX 文件

🚀 快速开始

1. 安装依赖

git clone https://github.com/your-repo/ChatPPT.git
cd ChatPPT_github
pip install -r requirements.txt

如果你需要处理音频,请确保本机可用 ffmpeg

2. 配置环境变量

复制 .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-image

3. 启动 Web 应用

python app.py

默认启动后可在 http://localhost:7860 访问。

📖 Web 使用说明

基础流程

  1. 在输入框中输入主题、业务需求或页面草稿。
  2. 如有需要,可同时上传图片、音频或 DOCX 文件。
  3. 点击发送,等待模型生成 PPT 结构化内容。
  4. 可以继续在对话中要求补充、删减、重写某几页内容。
  5. 点击 智能配图,为适合的页面自动生成插图。
  6. 点击 生成 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 需先转换后再使用。
  • 智能配图依赖可用的文生图模型接口。
  • 模型、模板和提示词均可按项目需求替换。

📄 License

MIT License

About

AI agent for generating PowerPoint presentations from text, images, audio, and DOCX files.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors