openai

package module
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 12, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

README

go-openai

Go Report Card

OpenAI-GPT3 Unofficial OpenAI API wrapper for Go

Checkout go-gpt3 API wrapper, If this one does not fit your needs

Currently this wrapper supports the following API's:

  • Images
  • Models

Installation:

go get github.com/EthanCampana/go-openai 

Example Usage

package main

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

func main() {
	c := openai.GetClient("your token")
	ctx := context.Background()
    rb := openai.GetRequestBuilder("image").(openai.ImageRequestBuilder)
    res := c.CreateImage(
        ctx ,
        rb.SetPrompt("A Chicken With Glasses, Digtal Art").
            SetNumberOfPictures(3).
            SetSize(oa.LARGE).
            ReturnRequest()
    )
    fmt.Println(res.data[0].url)
}

or

package main

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

func main() {
	c := openai.GetClient("your token")
	ctx := context.Background()
    req := &openai.ImageRequest{
        Num:            3,
        Prompt:         "A Chicken With Glasses, Digtal Art",
        Size:           oa.LARGE,
        ResponseFormat: "url",
        User:           "",
        
    }
    res := c.CreateImage(ctx,req)
    fmt.Println(res.data[0].url)
}

Both would get the same result. The RequestBuilder struct builds out the requests for you with safeguards in place so that you don't send out a bad requests!

Request Builders
  • image
  • image-variation
  • image-edit

example usage

    openai.GetRequestBuilder("image").(openai.ImageRequestBuilder)
    openai.GetRequestBuilder("image-variation").(openai.ImageVariationRequestBuilder)
    openai.GetRequestBuilder("image-edit").(openai.ImageEditRequestBuilder)

Documentation

Index

Constants

View Source
const (
	SMALL  string = "256x256"
	MEDIUM string = "512x512"
	LARGE  string = "1024x1024"
)
View Source
const (
	MaxImageRequest = 10
)

Variables

This section is empty.

Functions

This section is empty.

Types

type APIErrorResponse

type APIErrorResponse struct {
	Error *struct {
		Code    *int    `json:"code,omitempty"`
		Message string  `json:"message"`
		Param   *string `json:"param,omitempty"`
		Type    string  `json:"type"`
	} `json:"error,omitempty"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func GetClient

func GetClient(authToken string) *Client

func GetOrgClient

func GetOrgClient(authToken string, orgID string) *Client

func (*Client) CreateImage

func (c *Client) CreateImage(ctx context.Context, imgReq Request) (ImageResponse, error)

Utilizes the CreateImage OpenAI API to generate Art based on the Request parameters.

@Returns openai.ImageResponse.

func (*Client) CreateImageEidt

func (c *Client) CreateImageEidt(ctx context.Context, imgEditReq *ImageEditRequest) (ImageResponse, error)

Utilizes the CreateImageEdit OpenAI API to generate Art based on the Request parameters.

@Returns openai.ImageResponse.

func (*Client) CreateImageVariation

func (c *Client) CreateImageVariation(ctx context.Context, imgVarReq *ImageVariationRequest) (ImageResponse, error)

Utilizes the CreateImageVariation OpenAI API to generate Art based on the Request parameters.

@Returns openai.ImageResponse.

func (*Client) GetModel

func (c *Client) GetModel(ctx context.Context, model string) (Model, error)

Calls OpenAI GetModel API to gather Model information of the Model Id provided

@Returns openai.Model Struct.

func (*Client) GetRequestBuilder

func (c *Client) GetRequestBuilder(builder string) RequestBuilder

Creates A RequestBuilder and Returns it.

Params: builder -> Name of the builder you would like to Return

RequestBuilders:

- image

- image-variation

- image-edit .

func (*Client) ListModels

func (c *Client) ListModels(ctx context.Context) (Models, error)

Calls OpenAI ListModel API. Provides A list of Models currently supported by OpenAI

@Returns openai.Models Struct.

func (*Client) SendRequest

func (c *Client) SendRequest(req *http.Request, a interface{}) error

Sends an HttpRequest to the OpenAI API and Loads information into the buffer that is passed.

type ImageEditRequest

type ImageEditRequest struct {
	Num            uint8  `json:"n,omitempty"`
	Image          string `json:"image"`
	ImagePath      string `json:"-"`
	Mask           string `json:"mask"`
	MaskPath       string `json:"-"`
	Prompt         string `json:"prompt"`
	Size           string `json:"size,omitempty"`
	ResponseFormat string `json:"response_format,omitempty"`
	User           string `json:"user,omitempty"`
}

func (*ImageEditRequest) GenerateHTTPRequest

func (ier *ImageEditRequest) GenerateHTTPRequest(ctx context.Context) (response *http.Request, err error)

Generates the correct http.Request object for the given API Request Struct.

type ImageEditRequestBuilder

type ImageEditRequestBuilder struct {
	Irb       ImageRequestBuilder
	Image     string
	ImagePath string
	Mask      string
	MaskPath  string
}

func (ImageEditRequestBuilder) ReturnRequest

func (ierb ImageEditRequestBuilder) ReturnRequest() Request

func (*ImageEditRequestBuilder) SetImage

func (ierb *ImageEditRequestBuilder) SetImage(filepath string) *ImageEditRequestBuilder

Sets the image to upload to upload of the underlying Request.

func (*ImageEditRequestBuilder) SetMask

func (ierb *ImageEditRequestBuilder) SetMask(filepath string) *ImageEditRequestBuilder

Sets the mask image to upload of the underlying Request.

func (*ImageEditRequestBuilder) SetNumberOfPictures

func (ierb *ImageEditRequestBuilder) SetNumberOfPictures(num uint8) *ImageEditRequestBuilder

Sets the number of images to generate of the underlying Request.

min=1, max=10, default=1.

func (*ImageEditRequestBuilder) SetPrompt

func (ierb *ImageEditRequestBuilder) SetPrompt(prompt string) *ImageEditRequestBuilder

Sets the prompt of the underlying Request.

func (*ImageEditRequestBuilder) SetResponseFormat

func (ierb *ImageEditRequestBuilder) SetResponseFormat(rf string) *ImageEditRequestBuilder

Sets the ResponseFormat of the underlying Request.

func (*ImageEditRequestBuilder) SetSize

Sets the size of the underlying Request

SMALL = 256x256 MEDIUM = 512x512 LARGE = 1024x1024 Default = 256x265.

func (*ImageEditRequestBuilder) SetUser

Sets the user of the underlying Request.

type ImageRequest

type ImageRequest struct {
	Num            uint8  `json:"n,omitempty"`
	Prompt         string `json:"prompt"`
	Size           string `json:"size,omitempty"`
	ResponseFormat string `json:"response_format,omitempty"`
	User           string `json:"user,omitempty"`
}

func (*ImageRequest) GenerateHTTPRequest

func (ir *ImageRequest) GenerateHTTPRequest(ctx context.Context) (response *http.Request, err error)

Generates the correct http.Request object for the given API Request Struct.

type ImageRequestBuilder

type ImageRequestBuilder struct{ Req *ImageRequest }

func (ImageRequestBuilder) ReturnRequest

func (irb ImageRequestBuilder) ReturnRequest() Request

Returns the Underlying Request of the Given RequestBuilder.

func (*ImageRequestBuilder) SetNumberOfPictures

func (irb *ImageRequestBuilder) SetNumberOfPictures(num uint8) *ImageRequestBuilder

Sets the number of images to generate of the underlying Request.

min=1, max=10, default=1.

func (*ImageRequestBuilder) SetPrompt

func (irb *ImageRequestBuilder) SetPrompt(prompt string) *ImageRequestBuilder

Sets the prompt of the underlying Request.

func (*ImageRequestBuilder) SetResponseFormat

func (irb *ImageRequestBuilder) SetResponseFormat(rf string) *ImageRequestBuilder

Sets the ResponseFormat of the underlying Request.

func (*ImageRequestBuilder) SetSize

func (irb *ImageRequestBuilder) SetSize(size string) *ImageRequestBuilder

Sets the size of the underlying Request

SMALL = 256x256 MEDIUM = 512x512 LARGE = 1024x1024 Default = 256x265.

func (*ImageRequestBuilder) SetUser

func (irb *ImageRequestBuilder) SetUser(user string) *ImageRequestBuilder

Sets the user of the underlying Request.

type ImageResponse

type ImageResponse struct {
	Created int        `json:"created"`
	Data    []ImageURL `json:"data"`
}

type ImageURL

type ImageURL struct {
	URL string `json:"url"`
}

type ImageVariationRequest

type ImageVariationRequest struct {
	Num            uint8  `json:"n,omitempty"`
	Image          string `json:"image"`
	ImagePath      string `json:"-"`
	Prompt         string `json:"prompt"`
	Size           string `json:"size,omitempty"`
	ResponseFormat string `json:"response_format,omitempty"`
	User           string `json:"user,omitempty"`
}

func (*ImageVariationRequest) GenerateHTTPRequest

func (ivr *ImageVariationRequest) GenerateHTTPRequest(ctx context.Context) (response *http.Request, err error)

Generates the correct http.Request object for the given API Request Struct.

type ImageVariationRequestBuilder

type ImageVariationRequestBuilder struct {
	Irb       ImageRequestBuilder
	Image     string
	ImagePath string
}

func (ImageVariationRequestBuilder) ReturnRequest

func (ivrb ImageVariationRequestBuilder) ReturnRequest() Request

Returns the Underlying Request of the Given RequestBuilder.

func (*ImageVariationRequestBuilder) SetImage

Sets the image to upload to upload of the underlying Request.

func (*ImageVariationRequestBuilder) SetNumberOfPictures

func (ivrb *ImageVariationRequestBuilder) SetNumberOfPictures(num uint8) *ImageVariationRequestBuilder

Sets the number of images to generate of the underlying Request.

min=1, max=10, default=1.

func (*ImageVariationRequestBuilder) SetPrompt

Sets the prompt of the underlying Request.

func (*ImageVariationRequestBuilder) SetResponseFormat

Sets the ResponseFormat of the underlying Request.

func (*ImageVariationRequestBuilder) SetSize

Sets the size of the underlying Request

SMALL = 256x256 MEDIUM = 512x512 LARGE = 1024x1024 Default = 256x265.

func (*ImageVariationRequestBuilder) SetUser

Sets the user of the underlying Request.

type Model

type Model struct {
	ID      string `json:"id"`
	Object  string `json:"object"`
	OwnedBy string `json:"owned_by"`
}

type Models

type Models struct {
	Data []Model `json:"data"`
}

type Request

type Request interface {
	GenerateHTTPRequest(context.Context) (*http.Request, error)
}

type RequestBuilder

type RequestBuilder interface {
	ReturnRequest() Request
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL