这次我们看一个非常实用的组合:DeepSeek 提供大模型推理能力,Codex CLI 负责命令行智能体执行,最后用一句自然语言指令把 LaTeX Beamer 幻灯片直接生成出来。以前做 PPT,要么手动排版,要么套模板找版式,要么先写 Markdown 再转 HTML 幻灯片。现在多了一条效率很高的路径:你描述需求和结构,Codex CLI 调用 DeepSeek API 自动写出 LaTeX Beamer 源码,然后本地编译成 PDF 演示文稿。
这个方案的核心逻辑是:PPT 不是“画”出来的,而是“写”出来的。尤其适合技术分享、论文答辩、课程讲义这类内容密度高、公式多的场景。Beamer 和 LaTeX 本身擅长排版公式和代码块,DeepSeek 负责理解你的需求并生成结构化文本,Codex CLI 则把“生成代码 -> 写文件 -> 调用外部命令”这一整套执行流程串起来。
这篇文章会完整演示:Codex CLI 怎么安装,DeepSeek API 怎么接入,一句话生成 Beamer 的提示词怎么组织,生成的 LaTeX 怎么编译成 PDF,以及怎么用脚本批量生成多份 PPT 草稿。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | AI 命令行智能体 + API 模型服务组合方案 |
| 模型服务 | DeepSeek API,在线接口调用 |
| 执行外壳 | Codex CLI,本地命令行工具 |
| 主要功能 | 根据自然语言提示生成、修改、优化 LaTeX Beamer 演示文稿 |
| 硬件门槛 | 无显卡要求,推理全部在 API 侧完成 |
| 启动方式 | 命令行交互模式 / 非交互批处理模式 |
| 接口能力 | OpenAI 兼容 API 格式,适合低成本接入现有工具链 |
| 批量任务 | 支持脚本循环批量生成多份幻灯片草稿 |
| 输出格式 | LaTeX 源码 + PDF,通过本地 TeX 发行版编译 |
| 适合场景 | 技术教程、论文汇报、公式密集型课件、多章节 PPT 初稿 |
从材料看,这个组合最大的优势是“不挑硬件”。模型推理在 DeepSeek API 端完成,本地只跑 Codex CLI 和 TeX 编译器,所以一台普通办公笔记本就够用,不需要考虑 CUDA、显卡驱动和显存占用。相比本地部署大模型,这个方案几乎把部署门槛降到了零。
需要明确:这并不是一个能“一键生成精美设计模板”的工具。Beamer 的输出更偏学术和技术风格,默认主题比较朴素。如果你要的是复杂动画、形状拼接、渐变背景的营销 PPT,这个方案不是最优选择。
2. 适用场景与使用边界
2.1 适合谁
Beamer 生成 PPT 的典型使用场景有几类:
- 研究生和高校教师:论文答辩、组会汇报、课程讲义,公式和算法伪代码是刚需。
- 技术会议分享者:需要把技术方案、架构图、性能对比做成结构化幻灯片。
- 经常做多版本 PPT 的内容团队:同一份大纲生成多个风格草稿,再人工精修。
- 开发和运维人员:希望把 PPT 生成纳入自动化脚本,比如根据文档自动生成汇报材料。
2.2 不适合什么
- 需要复杂视觉设计的商业提案:Beamer 默认主题视觉表达有限。
- 对图片排版有强需求的场景:Beamer 插入图片后需要手工调整尺寸和位置。
- 一键出成品的工作流:AI 生成的 LaTeX 大概率会有编译错误,必须有人工修正环节。
2.3 使用边界与合规提醒
使用 DeepSeek API 生成内容时,要注意几个边界:
- 输入材料和输出内容不得违反法律法规,不能生成误导性、侵权性内容。
- 图片、字体、模板素材如果来自第三方,要确认授权范围。
- Beamer 生成的 PDF,若用于商业发布或对外传播,建议人工复核内容质量和版权合规。
- API Key 属于敏感凭据,不要提交到公共仓库,不要在博客和截图中明文展示完整 Key。
这个方案涉及在线 API 调用,建议只在可信网络环境下运行,并通过环境变量或本地配置文件管理密钥。
3. 环境准备与前置条件
这不是一个需要重型依赖的方案,但仍有几个前置条件需要确认。
3.1 操作系统
Codex CLI 和 TeX 发行版在 Windows、macOS、Linux 上都可以运行。下面的操作以 Linux 和 macOS 为主,Windows 用户建议优先用 WSL 2 或 Git Bash 执行命令。
3.2 软件依赖清单
| 依赖项 | 作用 | 建议 |
|---|---|---|
| Node.js 或 npm | 安装 Codex CLI 的常见方式 | 建议 Node.js 18 以上 |
| Codex CLI | 命令行智能体执行框架 | 按官方文档安装 |
| DeepSeek API Key | 调用大模型接口 | 在 DeepSeek 开放平台创建 |
| TeX 发行版 | 编译 LaTeX 源码 | TeX Live 或 MiKTeX |
| latexmk | 自动化编译工具 | TeX Live 自带 |
3.3 磁盘与网络要求
- 磁盘空间:TeX Live 全量安装约 5GB 到 8GB,如果只装常用宏包可以更小。
- 网络:需要能访问 DeepSeek API 服务。如果本地存在代理环境变量,要确认代理配置不会干扰 API 请求。
- 端口:整个流程默认不开放本地端口,不涉及端口冲突问题,相比 WebUI 类工具有天然优势。
3.4 确认基础环境
启动终端后,先确认 Node.js 和 npm 是否可用:
node -v npm -v如果 npm 不可用,也可以通过其他方式安装 Codex CLI,具体以官方发布为准。这一步只做环境检查,不涉及网络代理和安全绕过。
4. 安装 Codex CLI 并接入 DeepSeek API
4.1 安装 Codex CLI
Codex CLI 的安装方式在官方仓库和文档中都有说明。以 npm 方式为例:
npm install -g @openai/codex安装完成后检查版本:
codex --version如果命令行找不到codex,说明安装目录没有加入 PATH。此时需要将 npm 全局安装路径加入 PATH,或者把 codex 所在目录放进PATH环境变量。
在部分环境中,报错信息会提示:
unable to locate the codex cli binary. set codex cli path or ensure the executable is in your PATH.这个错误就是 PATH 或CODEX_CLI_PATH配置不正确导致的。排查时先确认codex --version能否直接运行,如果直接在终端里可以,但某个 IDE 插件或自动化脚本报错,就需要显式设置CODEX_CLI_PATH指向 codex 可执行文件。
4.2 配置 DeepSeek 作为模型后端
Codex CLI 支持配置自定义模型提供方。DeepSeek API 兼容 OpenAI 的消息格式,因此可以按 OpenAI 兼容接口的方式接入。不同版本 Codex CLI 的配置位置可能有差异,一般会读取用户目录下的~/.codex/config.toml或类似配置文件。
下面给出一份通用配置示例,实际字段需要按照你使用的 Codex CLI 版本和官方文档调整:
model = "deepseek-chat" model_provider = "deepseek" [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" env_key = "DEEPSEEK_API_KEY"这里的关键参数是base_url和env_key。base_url指向 DeepSeek API 的 OpenAI 兼容地址,env_key指定读取哪个环境变量来获取 API Key。
4.3 设置 API Key
在终端中设置环境变量:
export DEEPSEEK_API_KEY="你的 DeepSeek API Key"建议把这句话写入 shell 配置文件,例如~/.bashrc或~/.zshrc,避免每次重启终端都重新设置。
4.4 验证 API 连通性
先做一次最简单的非交互调用,确认 Codex CLI 能正常访问 DeepSeek API。不同版本 Codex CLI 的非交互命令不一样,常见的是codex exec或codex run。
codex exec "用一句话介绍 Beamer"如果配置正常,终端会返回一段自然语言回答或 Markdown 文本。如果返回 401 错误,说明 API Key 不正确;如果返回连接超时,说明网络无法访问 API 或存在代理干扰。
5. 实测流程:一句话生成 Beamer 演示文稿
下面进入正题。以下是一套完整的功能测试流程,建议按顺序执行。
5.1 设计测试提示词
生成 PPT 的关键不是“让 AI 直接做 PPT”,而是把页面结构、内容大纲、公式需求和输出要求一次性讲清楚。提示词越具体,生成的 LaTeX 越接近可用状态。
下面是一条测试提示词:
请用 LaTeX Beamer 生成一份 8 页演示文稿,主题是“Transformer 架构入门”。 要求: 1. 第 1 页是标题页,标题为“Transformer 架构入门”,副标题为“从 Attention 到模型训练”。 2. 第 2 页介绍 Transformer 的整体结构,包含 Encoder-Decoder 架构说明。 3. 第 3 页解释 Self-Attention 的核心公式,必须包含公式: Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V 4. 第 4 页介绍 Multi-Head Attention。 5. 第 5 页介绍 Positional Encoding。 6. 第 6 页对比 RNN 和 Transformer。 7. 第 7 页总结 Transformer 的优缺点。 8. 第 8 页为 Thanks 页。 使用 Madrid 主题,主题色为深蓝色。 请直接输出完整 Beamer 代码,不要输出额外解释。这条提示词包含了:
- 明确的页数和页面顺序
- 每个页面的内容主题
- 必须出现的数学公式
- 主题风格要求
- 输出格式要求
5.2 执行生成命令
把提示词写入文件,然后通过 Codex CLI 执行:
codex exec "$(cat prompt_transformer.txt)" > transformer_presentation.tex如果 Codex CLI 支持管道输入,也可以直接:
cat prompt_transformer.txt | codex exec这一步会调用 DeepSeek API,等待时间取决于 API 响应速度和提示词复杂度。一般来说,生成一份 8 页左右的 Beamer 源码需要几十秒到几分钟不等,具体以实际 API 状态为准。
5.3 检查生成结果
用编辑器打开生成的transformer_presentation.tex,重点检查以下几点:
- 是否存在
\documentclass{beamer}。 - 是否包含
\begin{document}和\end{document}。 - 每页是否以
\begin{frame}开始,并以\end{frame}结束。 - 公式是否以
\[ ... \]或\begin{align} ... \end{align}包裹。 - 是否有缺失的
\end标签或不匹配的大括号。
常见的情况是:整体结构接近可用,但个别 frame 可能存在编译语法问题。这一步的判断标准是“结构是否完整”,而不是“能不能直接编译通过”。
5.4 保存到项目目录
建议按下面目录结构管理生成产物:
slides/ ├── prompts/ │ └── transformer.txt ├── tex/ │ └── transformer_presentation.tex └── output/ └── transformer_presentation.pdf这样后续做批处理时,输入、中间产物、最终产物分工明确。
6. 编译 Beamer 源码并验证 PDF
6.1 使用 latexmk 编译
生成 LaTeX 源码后,进入 tex 目录执行编译:
cd tex latexmk -xelatex -synctex=1 transformer_presentation.tex使用-xelatex是为了更好地支持中文,如果你的文档包含中文,需要确认 TeX 发行版中已经安装了ctex宏包。如果不包含中文,使用默认的pdflatex即可。
编译完成后,在tex目录下会生成同名 PDF 文件:
ls -lh transformer_presentation.pdf6.2 判断编译是否成功
判断标准:
- 编译命令最终以
Output written on transformer_presentation.pdf等成功提示结束。 - PDF 文件存在且文件大小大于 0。
- 打开 PDF 后能正常显示每一页内容。
如果编译过程中出现红色或!开头的错误提示,说明 LaTeX 源码有问题。
6.3 常见编译错误处理
| 错误特征 | 可能原因 | 处理方式 |
|---|---|---|
Undefined control sequence | 某个 LaTeX 命令拼写错误 | 将错误文本回传给 Codex CLI,让它修复 |
Environment frame undefined | 缺少beamer文档类型 | 检查\documentclass{beamer} |
Cannot find package ctex | 未安装中文宏包 | 安装texlive-lang-chinese或完整texlive-full |
Missing $ inserted | 公式中混入普通文本 | 重新生成或手工补齐数学模式符号 |
File not found | 引用了不存在的图片或文件 | 删除该引用或替换为真实图片 |
遇到编译错误时,最省事的办法是:把错误信息连同当前 tex 文件一起贴回终端,用 Codex CLI 执行:
codex exec "编译报错,错误信息如下:$(cat error.log),请修复 LaTeX 源码并重新生成完整文件"当然,这个过程仍然依赖 DeepSeek API 的上下文理解和修复能力,可能需要迭代几轮才能通过编译。
7. 批量生成多份 PPT 草稿
这个组合很适合批量任务。只要提示词模板固定,更换不同主题文本,就能在脚本里循环生成多份 Beamer 草稿。
7.1 批量提示词准备
在prompts/目录下准备多个提示词文件:
prompts/ ├── transformer.txt ├── yolo.txt ├── mlp.txt └── rnn.txt每个文件的内容结构保持一致,只是主题不同。
7.2 批量执行脚本
下面给出一个 Bash 循环示例:
mkdir -p tex output for prompt_file in prompts/*.txt; do base_name=$(basename "$prompt_file" .txt) echo "开始生成:$base_name" codex exec "$(cat "$prompt_file")" > "tex/${base_name}.tex" if [ -s "tex/${base_name}.tex" ]; then cd tex latexmk -xelatex -interaction=nonstopmode "${base_name}.tex" cp "${base_name}.pdf" "../output/" cd .. else echo "生成失败:${base_name}.tex 为空" fi sleep 2 done脚本逻辑:
- 遍历 prompts 目录下所有
.txt文件。 - 用 Codex CLI 生成对应的
.tex文件。 - 如果
.tex文件非空,则进入 tex 目录编译 PDF。 - 编译成功后把 PDF 复制到 output 目录。
- 每次调用后 sleep 2 秒,避免高频请求触发 API 限流。
7.3 批量任务注意事项
批量执行时,建议增加三层保护:
- 输出日志:每次调用写入日志文件,方便失败回溯。
- 失败重试:编译失败时自动把错误信息传给 Codex CLI 再修复一次。
- 人工复核:AI 生成的 PPT 内容可能存在事实错误或结构混乱,批量产物要人工审核后使用。
8. 接口能力与工程化扩展
除了直接在终端交互,这个组合还可以被封装成更工程化的服务。
8.1 把生成逻辑封装成 Python 脚本
如果你的工具链在 Python 生态,可以直接调用 DeepSeek API,无需经过 Codex CLI。下面是一个通用 API 调用示例,实际接口路径和参数以 DeepSeek 官方文档为准:
import requests API_URL = "https://api.deepseek.com/v1/chat/completions" API_KEY = "你的 DeepSeek API Key" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } prompt = """ 请用 LaTeX Beamer 生成一份 5 页演示文稿,主题是“YOLO 算法讲解”。 第 3 页必须包含 YOLO 的检测流程说明。 直接输出完整 Beamer 代码。 """ payload = { "model": "deepseek-chat", "messages": [ {"role": "system", "content": "你是 LaTeX Beamer 专家。"}, {"role": "user", "content": prompt} ], "stream": False } response = requests.post(API_URL, json=payload, headers=headers, timeout=300) result = response.json() content = result["choices"][0]["message"]["content"] with open("yolo_presentation.tex", "w", encoding="utf-8") as f: f.write(content) print("生成完成")这种方式的好处是脱离 Codex CLI 的交互限制,可以直接嵌入 Django、FastAPI 等 Web 服务,做一个“输入主题 -> 生成 PPT 草稿”的内部工具。
8.2 接入 Web 服务
如果团队需要一个内部网页来生成 PPT,可以把上述函数封装成 FastAPI 接口:
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class SlideRequest(BaseModel): topic: str pages: int = 8 @app.post("/generate_slides") async def generate_slides(req: SlideRequest): prompt = f"请用 Beamer 生成 {req.pages} 页幻灯片,主题是:{req.topic}" # 这里调用 DeepSeek API 并返回生成的 .tex 内容 return {"status": "ok", "tex": "latex content here"}接口服务在生产环境部署时要注意:
- 设置访问鉴权,避免开放 API Key。
- 限制单次请求的 pages 数量,防止提示词过长。
- 对输入内容做长度校验,避免异常请求消耗 token。
8.3 长文档和多章节扩展
如果你要生成一份超过 20 页的完整讲义,建议不要把整个需求一次塞给模型。更稳妥的做法是:
- 先生成目录和章节大纲。
- 再逐章节调用 API 生成每个 frame。
- 最后把多个
.tex文件用\input{}合入主文件。
这样可以降低单次生成的随机性和上下文丢失风险。
9. 资源占用与性能观察
9.1 本地资源占用
这个方案本地不跑大模型,因此显存占用不是核心指标。主要资源消耗来自:
- Codex CLI 本体:Node.js 进程,内存占用一般在几百 MB 以内,具体看版本。
- TeX 编译器:编译大型 Beamer 文档时 CPU 占用会升高,编译几页的文档通常十几秒内完成。
- 磁盘占用:Codex CLI 安装占空间不大,主要空间在 TeX 发行版。
9.2 影响生成速度的因素
影响整个流程速度的关键点有两个:
- API 响应时间:提示词越长、生成页数越多,DeepSeek API 返回需要的时间越长。
- 编译迭代次数:LaTeX 源码如果错误多,可能需要多轮修复,每一轮都是完整的 API 往返。
9.3 如何降低生成成本和时间
- 控制单次页数:一次 8 页以内,避免长上下文导致生成质量下降。
- 使用精简提示词:把页面内容用短句列出,不要写长篇描述。
- 固定模板:把主题色、字体、宏包等固定内容写入提示词模板,减少模型自由发挥空间。
- 高优先级任务单独跑:批量任务里,小文档优先,大文档最后跑,避免阻塞队列。
10. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
codex命令找不到 | PATH 未配置或安装未完成 | 执行codex --version | 将安装目录加入 PATH,或设置CODEX_CLI_PATH |
| API 返回 401 | API Key 无效或缺失 | 检查环境变量DEEPSEEK_API_KEY | 重新创建 API Key 并更新配置 |
| API 返回 429 | 请求频率过高 | 查看响应头中的限流信息 | 降低并发,增加 sleep 间隔 |
| 请求超时 | 网络不稳定或代理干扰 | 检查本地代理设置 | 关闭非必要代理,或调整网络环境 |
| Codex 端点报错 | 接口协议不匹配或模型不支持 | 查看完整错误信息 | 切换为 chat completions 格式或更换支持的模型 |
| 生成的 tex 文件为空 | Codex CLI 非交互模式输出异常 | 查看 CLI 日志 | 改用交互模式,或直接把输出写入日志文件检查 |
| 编译时中文乱码 | 编译器编码设置不对 | 确认文档使用 UTF-8 | 改用xelatex编译并引入ctex宏包 |
| 编译缺少宏包 | TeX Live 安装不完整 | 查看.log文件中的宏包名 | 安装对应宏包或升级 TeX Live |
在上述常见问题里,最容易踩的坑是“Codex CLI 能运行,但 DeepSeek API 调用报错”。这类问题通常和网络代理、接口地址配置、模型名称参数有关。排查时优先看错误信息里的状态码,400 是参数或格式问题,401 是鉴权问题,429 是限流,5xx 一般是服务端问题。
11. 最佳实践与使用建议
11.1 先说结论:这个方案值不值得用
如果你的核心诉求是“快速得到一份结构完整、公式正确、能编译通过的 Beamer 初稿”,那么 DeepSeek × Codex 这个组合非常合适。它把 PPT 制作从“排版劳动”变成了“需求描述 + 代码生成 + 编译验证”,对技术型用户来说效率提升非常明显。
如果只是偶尔做一次商务汇报,对视觉设计要求高,那这个方案帮助有限,不如直接用传统 PPT 工具。
11.2 工程化建议
- 第一次使用先做小参数测试。不要一上来就生成 30 页大文档,先跑 3 页验证链路。
- 保留一套最小可运行配置。把 Codex CLI 配置、DeepSeek API 环境变量、LaTeX 编译命令写成 README 保存到项目里。
- 模型文件、输入素材、输出结果分目录管理。提示词放 prompts,中间代码放 tex,最终 PDF 放 output。
- 批量任务要加日志和失败重试。建议在脚本里记录每次调用的文件路径、状态码、耗时。
- 接口服务要限制访问范围。不要在公网开放无鉴权的生成接口,避免资源被滥用。
- 涉及人脸、声音、版权素材时必须确认授权。Beamer 使用图片时注意图片来源是否合规。
- 发布或商用前要做效果复核。AI 生成的讲稿内容有可能出现事实偏差或逻辑问题,直接用前必须人工审核。
11.3 后续可以扩展的方向
这个组合只是起点,后面还可以继续扩展:
- 把“文本大纲生成 Beamer”封装成团队内部 Web 工具。
- 结合 Git 管理提示词版本和生成结果的变更记录。
- 接入 CI/CD,让每次文档更新后自动重新生成幻灯片。
- 尝试不同模型和不同温度参数,找到最适合生成 LaTeX 的参数组合。
整体来看,DeepSeek 负责“理解和生成”,Codex CLI 负责“执行和迭代”,Beamer 负责“排版和输出”,三者组合之后,一句话生成 PPT 已经不是一个 demo 级别的演示,而是一条可以日常使用的自动化工作流。建议第一次尝试时,先从一份 5 到 8 页的技术分享幻灯片开始,把整个链路跑通,再逐步加大文档规模。