MENU

使用Go语言调用OpenAI的图片生成接口

March 22, 2023 • GoLang

要使用Go语言调用OpenAI的图片生成接口,请遵循以下步骤:

1安装一个HTTP客户端库,例如net/http(Go标准库中的库)或第三方库(例如github.com/go-resty/resty)。这将帮助您与OpenAI API进行通信。

2获取API密钥:要调用OpenAI的API,您需要获得API密钥。通常,您可以在OpenAI网站上注册并创建一个API密钥。

3编写一个函数,使用HTTP客户端库向OpenAI API发起请求。确保使用API密钥进行身份验证。

以下是一个使用Go标准库net/http和encoding/json的示例,该示例使用DALL-E(一个由OpenAI开发的用于生成图像的AI模型)生成图像。请注意,您需要根据实际的API端点和参数修改示例。

package main

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

const openAIURL = "https://api.openai.com/v1/images/generations"

type ImagePrompt struct {
    Prompt string `json:"prompt"`
    NumImages int `json:"num_images"`
    Size []int `json:"size"`
}

func generateImageWithOpenAI(apiKey, prompt string) ([]string, error) {
    client := &http.Client{}

    // 创建请求体
    requestBody := ImagePrompt{
        Prompt:    prompt,
        NumImages: 1,
        Size:      []int{256, 256},
    }

    jsonBody, err := json.Marshal(requestBody)
    if err != nil {
        return nil, err
    }

    // 创建请求
    req, err := http.NewRequest("POST", openAIURL, bytes.NewBuffer(jsonBody))
    if err != nil {
        return nil, err
    }

    // 设置头信息
    req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
    req.Header.Set("Content-Type", "application/json")

    // 发送请求
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    // 读取响应
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }

    var result map[string]interface{}
    err = json.Unmarshal(body, &result)
    if err != nil {
        return nil, err
    }

    data := result["data"].([]interface{})
    var imageURLs []string
    for _, item := range data {
        imageURLs = append(imageURLs, item.(map[string]interface{})["url"].(string))
    }

    return imageURLs, nil
}

func main() {
    apiKey := "your_api_key_here"
    prompt := "A beautiful sunset over the ocean."

    imageURLs, err := generateImageWithOpenAI(apiKey, prompt)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Image URLs:", imageURLs)
}

请注意,您需要用您的API密钥替换your_api_key_here。

这个示例程序将创建一个与OpenAI API的HTTP POST请求,并将结果解析为JSON格式。根据实际情况对示例代码进行修改。注意,由于API限制,生成的图像可能不会一直完美符合预期。请始终参考OpenAI官方文档,以确保您使用正确的API端点和参数设置。

这个示例代码将请求OpenAI API生成一幅与描述相符的图像,并返回一个包含图像URL的切片。您可以使用这些URL下载图像或将其嵌入到网页中。请注意,根据您的API访问级别和使用限制,生成的图像URL可能会在一段时间后失效。

确保阅读和遵守OpenAI的使用条款和政策。在实际使用中,您可能需要根据API的变化和更新对代码进行相应的调整。

Archives QR Code
QR Code for this page
Tipping QR Code