English | 中文
OpenAI Docs API Reference: https://platform.openai.com/docs/api-reference/introduction
Note: Already support GPT-4 API, please use Chat Completions API.
# clone the project
git clone https://github.com/hanyuancheung/gpt-go.git
# go to the project directory
cd gpt-go
# set API_KEY as environment variable
export API_KEY={YOUR_API_KEY} chatgpt
# go build example binary
make chatgpt-example
# run example
./chatgpt
https://platform.openai.com/account/api-keys
Check out the go docs for more detailed documentation on the types and methods provided: https://pkg.go.dev/github.com/hanyuancheung/gpt-go
- List Engines API
- Get Engine API
- Completion API (this is the main gpt-3 API)
- Streaming support for the Completion API
- Document Search API
- Image generation API
- Overriding default url, user-agent, timeout, and other options
ChatGPT streaming completion
func main() {
client := gpt.NewClient("API_KEY")
err := client.ChatCompletionStream(context.Background(), &gpt.ChatCompletionRequest{
Model: gpt.GPT3Dot5Turbo,
Messages: []gpt.ChatCompletionRequestMessage{
{
Role: "user",
Content: "Hello!",
},
},
}, func(response *gpt.ChatCompletionStreamResponse) {
fmt.Print(response.Choices[0].Delta.Content)
})
if err != nil {
fmt.Printf("ChatCompletionStream error: %v\n", err)
return
}
}
GPT-3 completion
func main() {
client := gpt.NewClient("API_KEY")
rsp, err := client.CompletionWithEngine(context.Background(), &gpt.CompletionRequest{
Model: gpt.TextDavinci003Engine,
Prompt: []string{"Hello!"},
})
if err != nil {
fmt.Printf("ChatCompletionStream error: %v\n", err)
return
}
fmt.Print(rsp.Choices[0].Text)
}
DALL-E 2 image generation
func main() {
client := gpt.NewClient("API_KEY")
rsp, err := client.Image(context.Background(), &gpt.ImageRequest{
Prompt: "Chicken",
})
if err != nil {
fmt.Printf("ChatCompletionStream error: %v\n", err)
return
}
fmt.Print(rsp.Data[0].URL)
}
Please open up an issue on GitHub before you put a lot of efforts on pull request.
The code submitting to PR must be filtered with gofmt
.
This package is licensed under MIT license. See LICENSE for details.
Give a ⭐️ if this project helped you!