
openai-go
官方 Go SDK,类型安全调用 OpenAI 接口
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-10-26 · 当前星标 ★ 3505
使用教程
环境要求
- Go 1.26 或更高版本,建议使用 1.26.9 / 1.27.2 及以上的补丁版本
- 需要能够调用 OpenAI API 的网络环境
- 准备一个 OpenAI API Key,SDK 默认读取环境变量 OPENAI_API_KEY
安装与启动步骤
-
1确认 Go 版本
先确认本机 Go 版本,低于 1.26 需先升级工具链,否则无法使用最新 SDK。
go version -
2安装 SDK 依赖
在项目模块中拉取 v3.86.0,README 建议固定版本以免自动升级引入变更。
go get -u 'github.com/openai/openai-go/v3@v3.86.0' -
3设置 API Key
把密钥写入环境变量,代码未显式传参时客户端会读取该变量。
export OPENAI_API_KEY="sk-xxxxxxxx" -
4编写示例程序
新建 main.go,导入 /v3 包,用 Responses.New 发送一句话并打印返回文本。
package main import ( "context" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/option" "github.com/openai/openai-go/v3/responses" ) func main() { ctx := context.Background() client := openai.NewClient( option.WithAPIKey("sk-xxxxxxxx"), // defaults to os.LookupEnv("OPENAI_API_KEY") ) question := "Write me a haiku about computers" resp, err := client.Responses.New(ctx, responses.ResponseNewParams{ Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(question)}, Model: openai.ChatModelGPT5_2, }) if err != nil { panic(err) } println(resp.OutputText()) } -
5运行示例
在包含 main.go 的模块目录执行,首次运行会自动下载依赖并编译。
go run main.go
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
OPENAI_API_KEY | 是 | OpenAI API 密钥,客户端默认从该环境变量读取 | sk-xxxxxxxx |
Model | 是 | 请求参数中的模型常量,示例使用 GPT-5.2 对应常量 | openai.ChatModelGPT5_2 |
如何确认成功
运行后没有触发 panic,并打印出模型返回的俳句文本,即表示调用成功。
常见问题
Q:Go 版本低于 1.26 怎么办?
A:Go 1.25 可固定 SDK v3.74.0,Go 1.22–1.24 可固定 v3.44.0,但这些版本不再保证修复与安全回补,建议升级 Go 工具链。
Q:必须手动传入 API Key 吗?
A:不是。不传 option.WithAPIKey 时,客户端默认读取环境变量 OPENAI_API_KEY。
Q:如何实现多轮对话?
A:把上一轮响应的 ID 作为 PreviousResponseID 传入;也可先创建 Conversation,再在请求中引用该 ID 持续对话。
Q:如何获得流式输出?
A:使用 client.Responses.NewStreaming,循环调用 stream.Next() 读取增量,结束后检查 stream.Err() 并关闭流。
Q:升级到最新版要注意什么?
A:最新版存在少量破坏性变更,升级前请阅读仓库 CHANGELOG.md 对照修改。
注意事项
- 示例固定使用 v3.86.0,生产项目建议显式锁定 SDK 版本。
- HTTP/2 安全修复需要 Go 1.26.9、1.27.2 或更高补丁版本。
- 旧版 SDK 不再获得保证修复与安全回补,长期使用应升级工具链。
核心亮点
- 官方维护,接口随平台版本同步更新,兼容性有保障
- 请求与响应均为强类型结构体,编译期即可发现字段错误
- 内置流式响应、重试、超时和统一错误类型,减少样板代码
不足之处
- 仅覆盖 OpenAI 平台,切换其他模型服务商需另做适配
- 高级用法与自定义中间件文档相对简略,示例偏基础
适用场景
- Go 后端服务集成对话与文本生成能力
- 构建语义检索与向量化流水线
- 批量任务与文件上传等平台能力调用
替代项目
go-openai、langchaingo
上一篇:openai-dotnet
下一篇:openai-java
同类项目推荐
TorchUMM
开源
一套工具包搞定多模态模型训练与评测
A unified multimodal model toolkit (NeurIPS'26)
codebase-context
开源
给 AI 装上代码库记忆,少烧 token 多写对码
Codebase Context gives AI agents understanding of your codebase through semantic cod···
ai-microcore
开源
轻松调用大模型,快速搭建 AI 应用
A handy lib for smooth interaction with large language models (LLMs) and crafting AI···
code-context-engine
开源
索引代码库,让 AI 搜索而非读文件,省 94% token。
Save 94% on AI coding tokens. Index your codebase, agents search instead of reading ···
PromptingTools.jl
开源
Julia 里几行代码调用大模型,提示词管理一步到位
Streamline your life using PromptingTools.jl, the Julia package that simplifies inte···
PocketFlow
开源
百行代码搭出 AI 骨架,小白也能看懂
Pocket Flow: 100-line LLM framework. Let Agents build Agents!
reverse-check
开源
浏览器里直接测 LLM 接口,免装后端秒出结果
Pure Front-End LLM API Testing Tool
guild
开源
让多个 AI 编码代理共享记忆和任务,不再各干各的
Shared context, memory, and task coordination across AI coding agents. Single Go bin···
llm-extension-for-cmd-pal
开源
在 PowerToys 命令面板里直接召唤 AI,键盘党秒变效率大师
An LLM extension for PowerToys Command Palette