openai/completions-responses-migration-pack

GitHub: openai/completions-responses-migration-pack

OpenAI 官方的自动化迁移工具包,借助 Codex CLI 将应用程序从旧版 Completions API 升级到统一的 Responses API。

Stars: 105 | Forks: 14

### OpenAI Completions → Responses 迁移包 ![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![Shell](https://img.shields.io/badge/language-bash-121011.svg) 开发者工具包,用于在 Codex CLI(本地编码 agent)的指导下,将应用程序从旧版的 OpenAI Completions/Chat Completions API 迁移到统一的 Responses API。 ### 功能简介 - 检测代码库中旧版 Completions 的使用情况 - 提出并应用修改以适配 Responses API - 更新 import/初始化方式以及请求/响应数据结构 - 运行测试/lint(如果存在)并总结结果 - 创建干净的 git 分支和可选的 PR ### 为什么现在迁移 - Responses 是用于文本、工具和流式传输的统一发展路径。Completions/Chat Completions 已成为旧版。请参阅官方指南:[迁移至 Responses](https://platform.openai.com/docs/guides/migrate-to-responses#page-top)。 - GPT‑5 在 Responses 上运行效果最佳。迁移可解锁更强大的推理能力和现代功能(工具调用、可控性、metaprompting),同时降低延迟和成本。GPT‑5 将编排工具作为其推理过程的一部分;旧版 endpoint 无法保留此结构,可能导致重复的工具调用和性能下降。 Responses 相较于 Chat Completions 的主要优势: - 有状态对话:可选择使用 `store: true` 和 `previous_response_id` 来维持上下文,无需重新发送完整历史记录。 - 加密推理:在享受推理项优势的同时,保持应用无状态。 - 内置工具:直接添加 `web_search_preview`、`file_search` 或自定义函数。 - 灵活的输入:发送单个字符串 `input` 或项数组;使用 `instructions` 进行系统级引导。 - 更强的推理和更低的成本:与 Chat Completions 相比,提升了推理质量并优化了缓存利用率。 - 事件驱动模型:Responses 发出语义事件(例如,特定的文本增量),而不是修改单个 `content` 字符串——从而简化了多步骤逻辑并提高了类型安全性。 ### 环境要求 - macOS 或 Linux(Windows 需通过 WSL2) - OpenAI API 访问权限(或 `codex login` 交互式流程) ### 演示视频 https://github.com/user-attachments/assets/6ca30b20-4be5-4ef0-9de6-0907eab2569a ### 快速开始 仅限 GitHub 的一行命令 (main 分支): ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/openai/completions-responses-migration-pack/main/scripts/completions-to-responses-upgrade.sh)" ``` 交互式运行(提示输入 repo 和 model 策略): ``` bash scripts/completions-to-responses-upgrade.sh ``` 非交互式(默认为写入模式): ``` bash scripts/completions-to-responses-upgrade.sh --repo /path/to/repo --no-interactive ``` 试运行(不作任何修改,打印统一的 diff 计划): ``` bash scripts/completions-to-responses-upgrade.sh --repo /path/to/repo --no-interactive --dry-run ``` 全自动(无需审批,启用写入的沙盒): ``` bash scripts/completions-to-responses-upgrade.sh --repo /path/to/repo --no-interactive --full-auto ``` 审批策略示例: ``` # 启发式请求批准 bash scripts/completions-to-responses-upgrade.sh --repo /path/to/repo -a on-request # Headless CI 模式(仅在失败时询问) bash scripts/completions-to-responses-upgrade.sh --repo /path/to/repo --no-interactive -a on-failure ``` 模型选择(交互式提示;默认为 GPT‑5): - 如果选择 GPT‑5,该工具会强制执行运行时规则:省略 `temperature` 或将其设置为 `1`,以避免出错。 状态与保留策略: - 迁移过程始终在 Responses 请求中设置 `store: false`,避免使用先前的消息 ID 或服务器存储的上下文,并将对话状态保存在本地,仅保留最少的日志元数据。 ### 参数标志 - `-r, --repo `:目标 git repo - `-m, --model `:模型覆盖(默认:gpt‑5) - `--full-auto`:自动化快捷方式(工作区写入 + 失败时审批) - `-n, --dry-run`:仅计划;不写入 - `-a, --approval `:`untrusted | on-failure | on-request | never` - `--write`:禁用试运行的别名 - `--no-interactive`:无提示(需要指定 `--repo`) - `--open-pr`:如果可用,通过 GitHub CLI 打开 PR - `--dangerous`:绕过审批和沙盒(不推荐) ### 具体修改内容 - Endpoint `/v1/completions` → `/v1/responses` - `prompt` → `input`;`max_tokens` → `max_output_tokens` - Node/Python:切换到 `OpenAI` 客户端 + `client.responses.create(...)` - 仅在原先使用的地方保留流式传输 - 工具/函数调用迁移至带有 JSON Schema 和 `tool_choice` 的 `tools` - 多轮对话:更新调用方,以显式地将先前的对话轮次作为 `input` 项传递 ### 工作原理 1. 确保已安装并通过身份验证 Codex CLI 2. 创建分支 `migrate/openai-responses-` 3. 投放一个精简的文档包,并设置 `AGENTS.md` 指导 4. 以自动化模式运行 Codex 并附带结构化 prompt 5. 显示最终摘要;可选择打开 PR ### 故障排除 - “unexpected argument” 错误:确保 Codex CLI 已更新至最新版本 - 沙盒写入问题:使用 `--full-auto` 或以交互方式使用 `-a on-request` - 有 diff 但未写入:使用 `codex apply ` 应用(在运行结束时打印) - 来自其他生态系统(Go/Maven/Ruby)的测试运行器失败将被忽略,除非它们属于您的应用程序;agent 专注于您的 repo ### 安全与数据处理 - 不会将 API key 写入磁盘;遵循环境配置 - 统一策略:默认 `store:false`,无先前的消息 ID,仅限客户端管理的状态;始终包含加密的推理 token。 ### 许可证与版本 - MIT。请参阅 `LICENSE` - 当前版本:请参阅 `assets/VERSION` ``` # 更新版本 sed -i.bak 's/^v.*/v0.1.0/' assets/VERSION && rm -f assets/VERSION.bak # 提交并打 tag git add -A && git commit -m "chore: release v0.1.0" && git tag v0.1.0 && git push && git push --tags # (可选)创建包含 assets 的 GitHub Release gh release create v0.1.0 \ scripts/completions-to-responses-upgrade.sh \ assets/SHA256SUMS \ --title "v0.1.0" --notes "Initial release" ```
标签:AI迁移工具, Bash, Codex, Cutter, OpenAI, Petitpotam, SOC Prime, 代码迁移, 内存规避, 开发工具, 网络安全研究, 自动化重构