Fix Refactor assistant api (#545)

* fix: refactor assistant API

* fix

* trigger build

* fix: use AssistantDeleteResponse
This commit is contained in:
Simone Vellei
2023-11-08 10:20:20 +01:00
committed by GitHub
parent a0159ad2b0
commit a2d2bf6851
2 changed files with 59 additions and 39 deletions

View File

@@ -10,6 +10,7 @@ import (
const (
assistantsSuffix = "/assistants"
assistantsFilesSuffix = "/files"
openaiAssistantsV1 = "assistants=v1"
)
type Assistant struct {
@@ -20,26 +21,22 @@ type Assistant struct {
Description *string `json:"description,omitempty"`
Model string `json:"model"`
Instructions *string `json:"instructions,omitempty"`
Tools []any `json:"tools,omitempty"`
Tools []AssistantTool `json:"tools,omitempty"`
httpHeader
}
type AssistantToolType string
const (
AssistantToolTypeCodeInterpreter AssistantToolType = "code_interpreter"
AssistantToolTypeRetrieval AssistantToolType = "retrieval"
AssistantToolTypeFunction AssistantToolType = "function"
)
type AssistantTool struct {
Type string `json:"type"`
}
type AssistantToolCodeInterpreter struct {
AssistantTool
}
type AssistantToolRetrieval struct {
AssistantTool
}
type AssistantToolFunction struct {
AssistantTool
Function FunctionDefinition `json:"function"`
Type AssistantToolType `json:"type"`
Function *FunctionDefinition `json:"function,omitempty"`
}
type AssistantRequest struct {
@@ -47,7 +44,7 @@ type AssistantRequest struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Instructions *string `json:"instructions,omitempty"`
Tools []any `json:"tools,omitempty"`
Tools []AssistantTool `json:"tools,omitempty"`
FileIDs []string `json:"file_ids,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
}
@@ -59,6 +56,14 @@ type AssistantsList struct {
httpHeader
}
type AssistantDeleteResponse struct {
ID string `json:"id"`
Object string `json:"object"`
Deleted bool `json:"deleted"`
httpHeader
}
type AssistantFile struct {
ID string `json:"id"`
Object string `json:"object"`
@@ -80,7 +85,8 @@ type AssistantFilesList struct {
// CreateAssistant creates a new assistant.
func (c *Client) CreateAssistant(ctx context.Context, request AssistantRequest) (response Assistant, err error) {
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(assistantsSuffix), withBody(request))
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(assistantsSuffix), withBody(request),
withBetaAssistantV1())
if err != nil {
return
}
@@ -95,7 +101,8 @@ func (c *Client) RetrieveAssistant(
assistantID string,
) (response Assistant, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}
@@ -111,7 +118,8 @@ func (c *Client) ModifyAssistant(
request AssistantRequest,
) (response Assistant, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID)
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), withBody(request))
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), withBody(request),
withBetaAssistantV1())
if err != nil {
return
}
@@ -124,9 +132,10 @@ func (c *Client) ModifyAssistant(
func (c *Client) DeleteAssistant(
ctx context.Context,
assistantID string,
) (response Assistant, err error) {
) (response AssistantDeleteResponse, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID)
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}
@@ -163,7 +172,8 @@ func (c *Client) ListAssistants(
}
urlSuffix := fmt.Sprintf("%s%s", assistantsSuffix, encodedValues)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}
@@ -180,7 +190,8 @@ func (c *Client) CreateAssistantFile(
) (response AssistantFile, err error) {
urlSuffix := fmt.Sprintf("%s/%s%s", assistantsSuffix, assistantID, assistantsFilesSuffix)
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix),
withBody(request))
withBody(request),
withBetaAssistantV1())
if err != nil {
return
}
@@ -196,7 +207,8 @@ func (c *Client) RetrieveAssistantFile(
fileID string,
) (response AssistantFile, err error) {
urlSuffix := fmt.Sprintf("%s/%s%s/%s", assistantsSuffix, assistantID, assistantsFilesSuffix, fileID)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}
@@ -212,7 +224,8 @@ func (c *Client) DeleteAssistantFile(
fileID string,
) (err error) {
urlSuffix := fmt.Sprintf("%s/%s%s/%s", assistantsSuffix, assistantID, assistantsFilesSuffix, fileID)
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}
@@ -250,7 +263,8 @@ func (c *Client) ListAssistantFiles(
}
urlSuffix := fmt.Sprintf("%s/%s%s%s", assistantsSuffix, assistantID, assistantsFilesSuffix, encodedValues)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix))
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantV1())
if err != nil {
return
}

View File

@@ -83,6 +83,12 @@ func withContentType(contentType string) requestOption {
}
}
func withBetaAssistantV1() requestOption {
return func(args *requestOptions) {
args.header.Set("OpenAI-Beta", "assistants=v1")
}
}
func (c *Client) newRequest(ctx context.Context, method, url string, setters ...requestOption) (*http.Request, error) {
// Default Options
args := &requestOptions{