Remove hardcoded assistants version (#719)

This commit is contained in:
Danai Antoniou
2024-04-24 12:59:50 +01:00
committed by GitHub
parent c6a63ed19a
commit 8d15a377ec
6 changed files with 44 additions and 45 deletions

View File

@@ -11,7 +11,6 @@ import (
const ( const (
assistantsSuffix = "/assistants" assistantsSuffix = "/assistants"
assistantsFilesSuffix = "/files" assistantsFilesSuffix = "/files"
openaiAssistantsV1 = "assistants=v1"
) )
type Assistant struct { type Assistant struct {
@@ -116,7 +115,7 @@ type AssistantFilesList struct {
// CreateAssistant creates a new assistant. // CreateAssistant creates a new assistant.
func (c *Client) CreateAssistant(ctx context.Context, request AssistantRequest) (response Assistant, err error) { 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -132,7 +131,7 @@ func (c *Client) RetrieveAssistant(
) (response Assistant, err error) { ) (response Assistant, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -149,7 +148,7 @@ func (c *Client) ModifyAssistant(
) (response Assistant, err error) { ) (response Assistant, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -165,7 +164,7 @@ func (c *Client) DeleteAssistant(
) (response AssistantDeleteResponse, err error) { ) (response AssistantDeleteResponse, err error) {
urlSuffix := fmt.Sprintf("%s/%s", assistantsSuffix, assistantID) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -203,7 +202,7 @@ func (c *Client) ListAssistants(
urlSuffix := fmt.Sprintf("%s%s", assistantsSuffix, encodedValues) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -221,7 +220,7 @@ func (c *Client) CreateAssistantFile(
urlSuffix := fmt.Sprintf("%s/%s%s", assistantsSuffix, assistantID, assistantsFilesSuffix) urlSuffix := fmt.Sprintf("%s/%s%s", assistantsSuffix, assistantID, assistantsFilesSuffix)
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix),
withBody(request), withBody(request),
withBetaAssistantV1()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -238,7 +237,7 @@ func (c *Client) RetrieveAssistantFile(
) (response AssistantFile, err error) { ) (response AssistantFile, err error) {
urlSuffix := fmt.Sprintf("%s/%s%s/%s", assistantsSuffix, assistantID, assistantsFilesSuffix, fileID) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -255,7 +254,7 @@ func (c *Client) DeleteAssistantFile(
) (err error) { ) (err error) {
urlSuffix := fmt.Sprintf("%s/%s%s/%s", assistantsSuffix, assistantID, assistantsFilesSuffix, fileID) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -294,7 +293,7 @@ func (c *Client) ListAssistantFiles(
urlSuffix := fmt.Sprintf("%s/%s%s%s", assistantsSuffix, assistantID, assistantsFilesSuffix, encodedValues) 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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }

View File

@@ -89,9 +89,9 @@ func withContentType(contentType string) requestOption {
} }
} }
func withBetaAssistantV1() requestOption { func withBetaAssistantVersion(version string) requestOption {
return func(args *requestOptions) { return func(args *requestOptions) {
args.header.Set("OpenAI-Beta", "assistants=v1") args.header.Set("OpenAI-Beta", fmt.Sprintf("assistants=%s", version))
} }
} }

View File

@@ -23,6 +23,8 @@ const (
const AzureAPIKeyHeader = "api-key" const AzureAPIKeyHeader = "api-key"
const defaultAssistantVersion = "v1" // This will be deprecated by the end of 2024.
// ClientConfig is a configuration of a client. // ClientConfig is a configuration of a client.
type ClientConfig struct { type ClientConfig struct {
authToken string authToken string
@@ -31,6 +33,7 @@ type ClientConfig struct {
OrgID string OrgID string
APIType APIType APIType APIType
APIVersion string // required when APIType is APITypeAzure or APITypeAzureAD APIVersion string // required when APIType is APITypeAzure or APITypeAzureAD
AssistantVersion string
AzureModelMapperFunc func(model string) string // replace model to azure deployment name func AzureModelMapperFunc func(model string) string // replace model to azure deployment name func
HTTPClient *http.Client HTTPClient *http.Client
@@ -42,6 +45,7 @@ func DefaultConfig(authToken string) ClientConfig {
authToken: authToken, authToken: authToken,
BaseURL: openaiAPIURLv1, BaseURL: openaiAPIURLv1,
APIType: APITypeOpenAI, APIType: APITypeOpenAI,
AssistantVersion: defaultAssistantVersion,
OrgID: "", OrgID: "",
HTTPClient: &http.Client{}, HTTPClient: &http.Client{},

View File

@@ -76,7 +76,8 @@ type MessageFilesList struct {
// CreateMessage creates a new message. // CreateMessage creates a new message.
func (c *Client) CreateMessage(ctx context.Context, threadID string, request MessageRequest) (msg Message, err error) { func (c *Client) CreateMessage(ctx context.Context, threadID string, request MessageRequest) (msg Message, err error) {
urlSuffix := fmt.Sprintf("/threads/%s/%s", threadID, messagesSuffix) urlSuffix := fmt.Sprintf("/threads/%s/%s", threadID, messagesSuffix)
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), withBody(request), withBetaAssistantV1()) req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), withBody(request),
withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -111,7 +112,8 @@ func (c *Client) ListMessage(ctx context.Context, threadID string,
} }
urlSuffix := fmt.Sprintf("/threads/%s/%s%s", threadID, messagesSuffix, encodedValues) urlSuffix := fmt.Sprintf("/threads/%s/%s%s", threadID, messagesSuffix, encodedValues)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix), withBetaAssistantV1()) req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -126,7 +128,8 @@ func (c *Client) RetrieveMessage(
threadID, messageID string, threadID, messageID string,
) (msg Message, err error) { ) (msg Message, err error) {
urlSuffix := fmt.Sprintf("/threads/%s/%s/%s", threadID, messagesSuffix, messageID) urlSuffix := fmt.Sprintf("/threads/%s/%s/%s", threadID, messagesSuffix, messageID)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix), withBetaAssistantV1()) req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -143,7 +146,7 @@ func (c *Client) ModifyMessage(
) (msg Message, err error) { ) (msg Message, err error) {
urlSuffix := fmt.Sprintf("/threads/%s/%s/%s", threadID, messagesSuffix, messageID) urlSuffix := fmt.Sprintf("/threads/%s/%s/%s", threadID, messagesSuffix, messageID)
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix),
withBody(map[string]any{"metadata": metadata}), withBetaAssistantV1()) withBody(map[string]any{"metadata": metadata}), withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -158,7 +161,8 @@ func (c *Client) RetrieveMessageFile(
threadID, messageID, fileID string, threadID, messageID, fileID string,
) (file MessageFile, err error) { ) (file MessageFile, err error) {
urlSuffix := fmt.Sprintf("/threads/%s/%s/%s/files/%s", threadID, messagesSuffix, messageID, fileID) urlSuffix := fmt.Sprintf("/threads/%s/%s/%s/files/%s", threadID, messagesSuffix, messageID, fileID)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix), withBetaAssistantV1()) req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -173,7 +177,8 @@ func (c *Client) ListMessageFiles(
threadID, messageID string, threadID, messageID string,
) (files MessageFilesList, err error) { ) (files MessageFilesList, err error) {
urlSuffix := fmt.Sprintf("/threads/%s/%s/%s/files", threadID, messagesSuffix, messageID) urlSuffix := fmt.Sprintf("/threads/%s/%s/%s/files", threadID, messagesSuffix, messageID)
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix), withBetaAssistantV1()) req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }

27
run.go
View File

@@ -226,8 +226,7 @@ func (c *Client) CreateRun(
http.MethodPost, http.MethodPost,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBody(request), withBody(request),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -247,8 +246,7 @@ func (c *Client) RetrieveRun(
ctx, ctx,
http.MethodGet, http.MethodGet,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -270,8 +268,7 @@ func (c *Client) ModifyRun(
http.MethodPost, http.MethodPost,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBody(request), withBody(request),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -310,8 +307,7 @@ func (c *Client) ListRuns(
ctx, ctx,
http.MethodGet, http.MethodGet,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -332,8 +328,7 @@ func (c *Client) SubmitToolOutputs(
http.MethodPost, http.MethodPost,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBody(request), withBody(request),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -352,8 +347,7 @@ func (c *Client) CancelRun(
ctx, ctx,
http.MethodPost, http.MethodPost,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -372,8 +366,7 @@ func (c *Client) CreateThreadAndRun(
http.MethodPost, http.MethodPost,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBody(request), withBody(request),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -394,8 +387,7 @@ func (c *Client) RetrieveRunStep(
ctx, ctx,
http.MethodGet, http.MethodGet,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }
@@ -435,8 +427,7 @@ func (c *Client) ListRunSteps(
ctx, ctx,
http.MethodGet, http.MethodGet,
c.fullURL(urlSuffix), c.fullURL(urlSuffix),
withBetaAssistantV1(), withBetaAssistantVersion(c.config.AssistantVersion))
)
if err != nil { if err != nil {
return return
} }

View File

@@ -51,7 +51,7 @@ type ThreadDeleteResponse struct {
// CreateThread creates a new thread. // CreateThread creates a new thread.
func (c *Client) CreateThread(ctx context.Context, request ThreadRequest) (response Thread, err error) { func (c *Client) CreateThread(ctx context.Context, request ThreadRequest) (response Thread, err error) {
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(threadsSuffix), withBody(request), req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(threadsSuffix), withBody(request),
withBetaAssistantV1()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -64,7 +64,7 @@ func (c *Client) CreateThread(ctx context.Context, request ThreadRequest) (respo
func (c *Client) RetrieveThread(ctx context.Context, threadID string) (response Thread, err error) { func (c *Client) RetrieveThread(ctx context.Context, threadID string) (response Thread, err error) {
urlSuffix := threadsSuffix + "/" + threadID urlSuffix := threadsSuffix + "/" + threadID
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix), req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
withBetaAssistantV1()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -81,7 +81,7 @@ func (c *Client) ModifyThread(
) (response Thread, err error) { ) (response Thread, err error) {
urlSuffix := threadsSuffix + "/" + threadID urlSuffix := threadsSuffix + "/" + threadID
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()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }
@@ -97,7 +97,7 @@ func (c *Client) DeleteThread(
) (response ThreadDeleteResponse, err error) { ) (response ThreadDeleteResponse, err error) {
urlSuffix := threadsSuffix + "/" + threadID urlSuffix := threadsSuffix + "/" + threadID
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix), req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix),
withBetaAssistantV1()) withBetaAssistantVersion(c.config.AssistantVersion))
if err != nil { if err != nil {
return return
} }