🎨 个人学习 / 开源展示项目 —— 用 Go + OpenAI Image API 快速生成、编辑与管理图片
go-openai-img 是一个使用 Go 编写、封装了 OpenAI Image API 的轻量级示例项目,旨在帮助开发者:
- 🛠️ 实践:学习如何在 Go 中优雅地调用 DALL·E 3 / GPT‑Image‑1 等图像模型;
- 🚀 演示:快速部署到 GitHub Pages / Vercel / Render,作为公开作品展示;
- 🏷️ 二次开发:提供清晰的目录结构与接口封装,方便扩展到生产环境。
声明:本仓库主要用于个人技术学习与分享,代码质量与文档持续改进中,欢迎 Issue / PR ✨
go-openai-img/
├── cmd/ # 可执行入口(CLI / HTTP)
├── internal/ # 业务逻辑(不可被外部 import)
│ ├── ai/ # OpenAI SDK 封装
│ ├── server/ # Gin 路由 / Handler
│ └── ...
├── web/ # (可选) 前端 Next.js 或 SvelteKit
├── scripts/ # CI / 本地脚本
├── .env.example # 环境变量模板
└── ...
详细说明见 docs/architecture.md。
环境要求:Go 1.22+、Node 20+ (如需前端)。
# 克隆仓库
$ git clone https://github.com/ShaoHui-G/go-openai-img.git && cd go-openai-img
# 安装依赖
$ go mod download
# 设置环境变量
$ cp .env.example .env # 并填入 OPENAI_API_KEY=
# 运行 CLI Demo(生成一张图)
$ go run ./cmd/go-openai-img --prompt "cyberpunk Tokyo skyline at dusk"
# 或运行本地 HTTP API
$ go run ./cmd/api-server --port 8080
👇 点击图片可查看完整尺寸
| Prompt | 输出示例 |
|---|---|
a golden retriever astronaut, oil painting |
![]() |
retro cyberpunk cityscape at night |
![]() |
- Gin + Fiber 双路由支持:可自由切换高性能 / 经典生态;
- 多模型兼容:DALL·E 3、GPT‑Image‑1 & 未来模型;
- WebSocket / SSE:实时推送生成进度;
- 可插拔存储:默认返回 URL;可扩展到 S3 / OSS / Cloudflare R2;
- Docker 一键部署:
docker compose up -d即可跑通; - 内置代理工具:
cmd/proxy-server一键启动本地 HTTP(S) 代理,解决无法直连 OpenAI 问题; - CI / CD:GitHub Actions 自动测试、构建 & 发布。
# 在 shell / .env 中设置
PROXY_URL=http://127.0.0.1:7890
internal/ai/client.go会自动读取PROXY_URL并写入http.Transport,无需修改业务代码。
go run ./cmd/proxy-server --listen :7890 --upstream socks5://127.0.0.1:1080
--listen监听本地端口--upstream指向你的真实网络出口(HTTP 或 SOCKS5)
配置完成后,再运行主程序时仅需:
PROXY_URL=http://127.0.0.1:7890 go run ./cmd/go-openai-img --prompt "a futuristic city skyline"
- 阅读
internal/ai:了解 OpenAI SDK 调用流程; - 跑通 CLI:感受最小可行代码;
- 上手 HTTP API:熟悉路由、中间件、错误处理;
- 加入前端:在
web/用 Next.js / SvelteKit 做简单界面; - 性能与成本优化:并发控制、缓存、Prometheus 监控。
- 前端 Demo 页面:拖拽上传图像、实时进度条;
- 多语言支持:i18n 自动翻译 prompt;
- 数据库持久化:记录生成历史与 Token 消耗;
- 插件化存储层:本地 / 云端任意切换;
- 单元 & 集成测试:覆盖率 ≥ 80%。
欢迎在 Discussions 提需求或投票 🙌
# Fork & Clone
$ git clone https://github.com/ShaoHui-G/go-openai-img.git
$ git checkout -b feat/your-feature
# 提交前检查
$ go vet ./...
$ go test ./... -cover
# 提交 PR
请遵守 Commitizen 风格,详细规则见 CONTRIBUTING.md。
Star 本仓库 ✨ 支持作者持续迭代! 如果对你有帮助,欢迎关注、分享。

