Remove hardcoded assistants version (#719)
This commit is contained in:
19
assistant.go
19
assistant.go
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
config.go
14
config.go
@@ -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
|
||||||
@@ -30,7 +32,8 @@ type ClientConfig struct {
|
|||||||
BaseURL string
|
BaseURL string
|
||||||
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
|
||||||
|
|
||||||
@@ -39,10 +42,11 @@ type ClientConfig struct {
|
|||||||
|
|
||||||
func DefaultConfig(authToken string) ClientConfig {
|
func DefaultConfig(authToken string) ClientConfig {
|
||||||
return ClientConfig{
|
return ClientConfig{
|
||||||
authToken: authToken,
|
authToken: authToken,
|
||||||
BaseURL: openaiAPIURLv1,
|
BaseURL: openaiAPIURLv1,
|
||||||
APIType: APITypeOpenAI,
|
APIType: APITypeOpenAI,
|
||||||
OrgID: "",
|
AssistantVersion: defaultAssistantVersion,
|
||||||
|
OrgID: "",
|
||||||
|
|
||||||
HTTPClient: &http.Client{},
|
HTTPClient: &http.Client{},
|
||||||
|
|
||||||
|
|||||||
17
messages.go
17
messages.go
@@ -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
27
run.go
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user