sashabaranov/go-openai
OpenAI, GPT 6.1, GPT-Image-2, Whisper API clients for Go. Zero-dependency.
这是什么
go‑openai 是 OpenAI API 的非官方 Go 客户端库。它让 Go 程序可以调用开发者在 OpenAI 平台上使用的相同端点——文本生成、聊天、嵌入、图像创建、音频转录、内容审核、文件处理、微调、批处理作业、向量存储辅助工具,以及旧版的 Assistants API。
适合谁使用
- 想要将 OpenAI 模型集成到服务、CLI 工具或代理中,而不想编写原始 HTTP 请求的 Go 开发者。
- 正在构建 AI 增强应用(例如聊天机器人、代码助手、RAG 管道)的团队,需要一个类型化、惯用的 Go 包装器。
- 偏好较新的 Responses API(工具调用、多轮状态),但仍需要向后兼容的 Chat Completion 支持的人。
核心功能(根据 README 所述)
| 领域 | 库提供的功能 |
|---|---|
| Responses API | CreateResponse、CreateResponseStream;通过 PreviousResponseID 支持多轮对话、流式增量,以及便捷的 GetOutputText 辅助函数。 |
| Chat Completions | CreateChatCompletion 用于现有集成;返回与官方 OpenAI 端点相同的形状。 |
| 模型选择 | 最新 GPT‑6 系列的常量(GPT6Dot1Sol、GPT6Astra、GPT6Sol、GPT6Luna)以及所有较早的模型。 |
| 嵌入 / 图像 / 音频 | 调用对应 OpenAI 端点的辅助方法(例如图像生成、语音转文本)。 |
| 微调、批处理、向量存储 | 这些 API 表面的轻量包装器,方便启动训练作业或管理向量数据。 |
| Azure OpenAI 支持 | DefaultAzureConfig 让您可以将客户端指向 Azure 托管的 OpenAI 端点,并包含所需的部署映射。 |
| 自定义 HTTP 配置 | DefaultConfig 让您可以更改基础 URL、标头,或替换底层 HTTP 客户端(适用于代理、测试或自托管兼容服务器)。 |
| 错误处理 | 错误被类型化为 *openai.APIError;您可以通过 errors.As 检查 HTTP 状态、错误代码和消息。 |
| 示例 | 一组可运行的示例,涵盖响应、聊天、函数工具、图像生成和语音转文本。 |
如何开始(README 中的快速步骤)
- 安装:
go get github.com/sashabaranov/go-openai(需要 Go 1.18+)。 - 在环境中设置 API 密钥:
export OPENAI_API_KEY="..."。 - 创建客户端:
client := openai.NewClient(os.Getenv("OPENAI_API_KEY")) - 发出请求——例如,使用新的 Responses API 的简单响应:
resp, err := client.CreateResponse(context.Background(), openai.CreateResponseRequest{ Model: openai.GPT5Dot6Sol, Instructions: "You are a concise technical explainer.", Input: "Why is the sky blue?", }) if err != nil { log.Fatal(err) } fmt.Println(resp.GetOutputText()) - 探索
examples/文件夹,以了解更复杂的用例,例如流式、多轮对话或图像生成。
何时可能选择其他方案
- 如果您需要官方、由 OpenAI 维护的 SDK(官方 Go SDK 仍在测试阶段),您可能偏好该 SDK 以保证版本一致性。
- 对于非常轻量的脚本,引入完整客户端可能过于沉重,简单的
net/http调用可能就足够了。
社区与维护
- 该项目是开源的,带有 Go 参考和代码覆盖率的 CI 徽章。
- 欢迎贡献;请参阅
CONTRIBUTING.md以了解指南。 - 赞助者和贡献者列在 README 中,显示活跃的社区支持。
以上所有信息直接取自存储库的 README;未添加任何外部假设。
相关
- 项目
- 项目
- 项目
- 项目
- 项目