91 lines
2.7 KiB
Go
91 lines
2.7 KiB
Go
package openai
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
// Model struct represents an OpenAPI model.
|
|
type Model struct {
|
|
CreatedAt int64 `json:"created"`
|
|
ID string `json:"id"`
|
|
Object string `json:"object"`
|
|
OwnedBy string `json:"owned_by"`
|
|
Permission []Permission `json:"permission"`
|
|
Root string `json:"root"`
|
|
Parent string `json:"parent"`
|
|
|
|
httpHeader
|
|
}
|
|
|
|
// Permission struct represents an OpenAPI permission.
|
|
type Permission struct {
|
|
CreatedAt int64 `json:"created"`
|
|
ID string `json:"id"`
|
|
Object string `json:"object"`
|
|
AllowCreateEngine bool `json:"allow_create_engine"`
|
|
AllowSampling bool `json:"allow_sampling"`
|
|
AllowLogprobs bool `json:"allow_logprobs"`
|
|
AllowSearchIndices bool `json:"allow_search_indices"`
|
|
AllowView bool `json:"allow_view"`
|
|
AllowFineTuning bool `json:"allow_fine_tuning"`
|
|
Organization string `json:"organization"`
|
|
Group interface{} `json:"group"`
|
|
IsBlocking bool `json:"is_blocking"`
|
|
}
|
|
|
|
// FineTuneModelDeleteResponse represents the deletion status of a fine-tuned model.
|
|
type FineTuneModelDeleteResponse struct {
|
|
ID string `json:"id"`
|
|
Object string `json:"object"`
|
|
Deleted bool `json:"deleted"`
|
|
|
|
httpHeader
|
|
}
|
|
|
|
// ModelsList is a list of models, including those that belong to the user or organization.
|
|
type ModelsList struct {
|
|
Models []Model `json:"data"`
|
|
|
|
httpHeader
|
|
}
|
|
|
|
// ListModels Lists the currently available models,
|
|
// and provides basic information about each model such as the model id and parent.
|
|
func (c *Client) ListModels(ctx context.Context) (models ModelsList, err error) {
|
|
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL("/models"))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = c.sendRequest(req, &models)
|
|
return
|
|
}
|
|
|
|
// GetModel Retrieves a model instance, providing basic information about
|
|
// the model such as the owner and permissioning.
|
|
func (c *Client) GetModel(ctx context.Context, modelID string) (model Model, err error) {
|
|
urlSuffix := fmt.Sprintf("/models/%s", modelID)
|
|
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = c.sendRequest(req, &model)
|
|
return
|
|
}
|
|
|
|
// DeleteFineTuneModel Deletes a fine-tune model. You must have the Owner
|
|
// role in your organization to delete a model.
|
|
func (c *Client) DeleteFineTuneModel(ctx context.Context, modelID string) (
|
|
response FineTuneModelDeleteResponse, err error) {
|
|
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL("/models/"+modelID))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = c.sendRequest(req, &response)
|
|
return
|
|
}
|