Golang OpenAI库使用教程

最近在学习Golang对接OpenAI的API,看到有个Golang的OpenAI库但不太清楚具体怎么使用。想问下:

  1. 这个库支持OpenAI的哪些功能?比如文本生成、图片生成都支持吗?
  2. 有没有完整的代码示例可以参考?特别是认证和请求部分该怎么写
  3. 在实际项目中使用需要注意哪些问题?比如并发控制、错误处理之类的
  4. 这个库和直接调用OpenAI的REST API相比有什么优势吗?
2 回复

以下是Golang调用OpenAI API的简单教程:

  1. 安装库 使用官方推荐的github.com/sashabaranov/go-openai
go get github.com/sashabaranov/go-openai
  1. 基础使用
package main

import (
	"context"
	"fmt"
	openai "github.com/sashabaranov/go-openai"
)

func main() {
	client := openai.NewClient("你的API密钥")
	resp, err := client.CreateChatCompletion(
		context.Background(),
		openai.ChatCompletionRequest{
			Model: openai.GPT3Dot5Turbo,
			Messages: []openai.ChatCompletionMessage{
				{
					Role:    openai.ChatMessageRoleUser,
					Content: "Hello!",
				},
			},
		},
	)

	if err != nil {
		fmt.Printf("错误: %v\n", err)
		return
	}

	fmt.Println(resp.Choices[0].Message.Content)
}
  1. 关键参数
  • MaxTokens: 控制回复长度
  • Temperature: 控制随机性(0-2)
  • Stream: 启用流式传输
  1. 注意事项
  • API密钥从OpenAI官网获取
  • 注意费用控制,测试时设置使用量限制
  • 处理错误和超时

完整文档参考:https://github.com/sashabaranov/go-openai

更多关于Golang OpenAI库使用教程的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang OpenAI库使用教程

OpenAI官方没有提供Go语言的SDK,但社区有几个优秀的第三方库。以下是使用最广泛的go-openai库的教程:

安装

go get github.com/sashabaranov/go-openai

基本使用

1. 初始化客户端

package main

import (
    "context"
    "fmt"
    "log"
    openai "github.com/sashabaranov/go-openai"
)

func main() {
    client := openai.NewClient("your-api-key")
    
    // 使用示例
    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: openai.GPT3Dot5Turbo,
            Messages: []openai.ChatCompletionMessage{
                {
                    Role:    openai.ChatMessageRoleUser,
                    Content: "Hello, how are you?",
                },
            },
        },
    )
    
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println(resp.Choices[0].Message.Content)
}

2. 聊天补全示例

func chatExample(client *openai.Client) {
    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: openai.GPT3Dot5Turbo,
            Messages: []openai.ChatCompletionMessage{
                {
                    Role:    openai.ChatMessageRoleSystem,
                    Content: "You are a helpful assistant.",
                },
                {
                    Role:    openai.ChatMessageRoleUser,
                    Content: "What's the weather like today?",
                },
            },
            MaxTokens:   100,
            Temperature: 0.7,
        },
    )
    
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("Response:", resp.Choices[0].Message.Content)
}

3. 流式响应

func streamExample(client *openai.Client) {
    req := openai.ChatCompletionRequest{
        Model: openai.GPT3Dot5Turbo,
        Messages: []openai.ChatCompletionMessage{
            {
                Role:    openai.ChatMessageRoleUser,
                Content: "Tell me a story about AI",
            },
        },
        Stream: true,
    }
    
    stream, err := client.CreateChatCompletionStream(context.Background(), req)
    if err != nil {
        log.Fatal(err)
    }
    defer stream.Close()
    
    for {
        response, err := stream.Recv()
        if err != nil {
            break
        }
        
        if len(response.Choices) > 0 {
            fmt.Print(response.Choices[0].Delta.Content)
        }
    }
    fmt.Println()
}

主要功能

  1. 聊天补全 - CreateChatCompletion
  2. 文本补全 - CreateCompletion
  3. 图像生成 - CreateImage
  4. 嵌入向量 - CreateEmbeddings
  5. 音频转录 - CreateTranscription

配置选项

config := openai.DefaultConfig("your-api-key")
config.BaseURL = "https://api.openai.com/v1" // 可自定义端点
client := openai.NewClientWithConfig(config)

错误处理

resp, err := client.CreateChatCompletion(ctx, req)
if err != nil {
    var apiErr *openai.APIError
    if errors.As(err, &apiErr) {
        fmt.Printf("OpenAI error: %s\n", apiErr.Message)
    } else {
        fmt.Printf("Other error: %v\n", err)
    }
    return
}

注意事项

  1. 妥善保管API密钥
  2. 注意API调用频率限制
  3. 合理设置超时时间
  4. 处理网络错误和API错误

这个库功能完整,文档详细,是Go语言中使用OpenAI API的首选方案。

回到顶部