Skip to content

ShaoHui-G/go-openai-img

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-openai-img

🎨 个人学习 / 开源展示项目 —— 用 Go + OpenAI Image API 快速生成、编辑与管理图片

Go Reference License Build


✨ 项目简介

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 dog-astro
retro cyberpunk cityscape at night city

⚙️ 主要特性

  • 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 自动测试、构建 & 发布。

🌐 代理支持 (Proxy Helper)

环境变量方式 (适合云部署)

# 在 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"

📚 学习路线

  1. 阅读 internal/ai:了解 OpenAI SDK 调用流程;
  2. 跑通 CLI:感受最小可行代码;
  3. 上手 HTTP API:熟悉路由、中间件、错误处理;
  4. 加入前端:在 web/ 用 Next.js / SvelteKit 做简单界面;
  5. 性能与成本优化:并发控制、缓存、Prometheus 监控。

🗺️ 未来规划 (Roadmap)

  • 前端 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


📝 License

MIT © 2025 ShaoHui-G


Star 本仓库 ✨ 支持作者持续迭代! 如果对你有帮助,欢迎关注、分享。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages