diff --git a/chat.go b/chat.go index 0aa018715..3868dd2fb 100644 --- a/chat.go +++ b/chat.go @@ -77,8 +77,9 @@ const ( ) type ChatMessageImageURL struct { - URL string `json:"url,omitempty"` - Detail ImageURLDetail `json:"detail,omitempty"` + URL string `json:"url,omitempty"` + Detail ImageURLDetail `json:"detail,omitempty"` + MIMEType string `json:"mime_type,omitempty"` } type ChatMessagePartType string diff --git a/chat_test.go b/chat_test.go index 236cff736..a36651911 100644 --- a/chat_test.go +++ b/chat_test.go @@ -804,6 +804,37 @@ func TestMultipartChatCompletions(t *testing.T) { checks.NoError(t, err, "CreateAzureChatCompletion error") } +func TestChatMessageImageURLMIMEType(t *testing.T) { + client, server, teardown := setupAzureTestServer() + defer teardown() + server.RegisterHandler("/openai/deployments/*", handleChatCompletionEndpoint) + + _, err := client.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{ + MaxTokens: 5, + Model: openai.GPT3Dot5Turbo, + Messages: []openai.ChatCompletionMessage{ + { + Role: openai.ChatMessageRoleUser, + MultiContent: []openai.ChatMessagePart{ + { + Type: openai.ChatMessagePartTypeText, + Text: "Hello!", + }, + { + Type: openai.ChatMessagePartTypeImageURL, + ImageURL: &openai.ChatMessageImageURL{ + URL: "URL", + Detail: openai.ImageURLDetailLow, + MIMEType: "image/png", + }, + }, + }, + }, + }, + }) + checks.NoError(t, err, "CreateAzureChatCompletion error") +} + func TestMultipartChatMessageSerialization(t *testing.T) { jsonText := `[{"role":"system","content":"system-message"},` + `{"role":"user","content":[{"type":"text","text":"nice-text"},` +