使用Go语言调用OpenAI API

2022-12-16 13:09:20 浏览数 (3)

前言

OpenAI差不多都写烂了,我这边就简单写个如何调用接口的吧,大家在自己玩玩

如何调用?两种方法

1 原生HTTP接口

直接上代码吧:

代码语言:javascript复制
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const ASAK = "sk-xxxxxxxxxxxxxxxxxxxxxxxxx"

type Payload struct {
	Prompt           string  `json:"prompt"`
	MaxTokens        int64   `json:"max_tokens"`
	Temperature      float64 `json:"temperature"`
	TopP             int64   `json:"top_p"`
	FrequencyPenalty int64   `json:"frequency_penalty"`
	PresencePenalty  int64   `json:"presence_penalty"`
	Model            string  `json:"model"`
}

func main() {

	data := Payload{
		Prompt:           "原神",
		MaxTokens:        2048,
		Temperature:      0.5,
		TopP:             0,
		FrequencyPenalty: 0,
		PresencePenalty:  0,
		Model:            "text-davinci-003",
	}
	payloadBytes, err := json.Marshal(data)
	if err != nil {
		// handle err
	}
	body := bytes.NewReader(payloadBytes)

	req, err := http.NewRequest("POST", "https://api.openai.com/v1/completions", body)
	if err != nil {
		// handle err
	}
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", fmt.Sprintf("%s %s", "Bearer", ASAK))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		// handle err
	}
	defer resp.Body.Close()
	all, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println(string(all))

}

2 OpenAI 提供的SDK(OpenAI教我的,你说难受不。。。。)

代码语言:javascript复制
OpenAI API是OpenAI提供的一组软件API,它可以让开发人员使用自然语言处理(NLP)、机器学习(ML)和机器人技术(Robotics)等技术来开发自然语言处理(NLP)应用程序。

要使用OpenAI API,首先需要在OpenAI官网上注册一个账号,然后登录,获取API key。

然后,可以使用Go语言的第三方库OpenAI SDK来调用OpenAI API。OpenAI SDK提供了一个简单的API,可以用来访问OpenAI API。

使用OpenAI SDK,可以使用Go语言来实现一个简单的调用OpenAI API的示例:

package main

import (
    "fmt"
    "log"
    "os"
    "github.com/openai/openai-sdk-go/openai"
)

func main() {
    // 获取OpenAI API key
    apiKey := os.Getenv("OPENAI_API_KEY")

    // 创建OpenAI客户端
    client := openai.NewClient(apiKey)

    // 调用OpenAI API
    resp, err := client.Completion.Create(
        "The quick brown fox jumps over the lazy dog",
        "The quick brown fox jumps over the",
        10,
    )
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(resp)
}

上面的代码使用OpenAI SDK来调用OpenAI API,并打印出调用结果。

博客

https://www.valarx.com

0 人点赞