Skip to content

Commit

Permalink
Fix Refactor assistant api (sashabaranov#545)
Browse files Browse the repository at this point in the history
* fix: refactor assistant API

* fix

* trigger build

* fix: use AssistantDeleteResponse
  • Loading branch information
henomis authored Nov 8, 2023
1 parent a0159ad commit a2d2bf6
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 38 deletions.
90 changes: 52 additions & 38 deletions assistant.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,46 +10,43 @@ import (
const (
assistantsSuffix = "/assistants"
assistantsFilesSuffix = "/files"
openaiAssistantsV1 = "assistants=v1"
)

type Assistant struct {
ID string `json:"id"`
Object string `json:"object"`
CreatedAt int64 `json:"created_at"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Model string `json:"model"`
Instructions *string `json:"instructions,omitempty"`
Tools []any `json:"tools,omitempty"`
ID string `json:"id"`
Object string `json:"object"`
CreatedAt int64 `json:"created_at"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Model string `json:"model"`
Instructions *string `json:"instructions,omitempty"`
Tools []AssistantTool `json:"tools,omitempty"`

httpHeader
}

type AssistantTool struct {
Type string `json:"type"`
}

type AssistantToolCodeInterpreter struct {
AssistantTool
}
type AssistantToolType string

type AssistantToolRetrieval struct {
AssistantTool
}
const (
AssistantToolTypeCodeInterpreter AssistantToolType = "code_interpreter"
AssistantToolTypeRetrieval AssistantToolType = "retrieval"
AssistantToolTypeFunction AssistantToolType = "function"
)

type AssistantToolFunction struct {
AssistantTool
Function FunctionDefinition `json:"function"`
type AssistantTool struct {
Type AssistantToolType `json:"type"`
Function *FunctionDefinition `json:"function,omitempty"`
}

type AssistantRequest struct {
Model string `json:"model"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Instructions *string `json:"instructions,omitempty"`
Tools []any `json:"tools,omitempty"`
FileIDs []string `json:"file_ids,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
Model string `json:"model"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Instructions *string `json:"instructions,omitempty"`
Tools []AssistantTool `json:"tools,omitempty"`
FileIDs []string `json:"file_ids,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
}

// AssistantsList is a list of assistants.
Expand All @@ -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"`
Expand All @@ -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
}
Expand All @@ -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
}
Expand All @@ -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
}
Expand All @@ -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
}
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand All @@ -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
}
Expand All @@ -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
}
Expand Down Expand Up @@ -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
}
Expand Down
6 changes: 6 additions & 0 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down

0 comments on commit a2d2bf6

Please sign in to comment.