Open
Description
Service
OpenAI
Describe the bug
curl -v --location "https://api.mistral.ai/v1/chat/completions" \ --header "Authorization: Bearer $MISTRAL_API_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "mistral-large-latest", "messages": [ { "role": "User", "content": "Merhaba" } ] }' * Host api.mistral.ai:443 was resolved. * IPv6: (none) * IPv4: 104.18.22.152, 104.18.23.152 * Trying 104.18.22.152:443... * Connected to api.mistral.ai (104.18.22.152) port 443 * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /opt/anaconda3/ssl/cacert.pem * CApath: none * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519 / id-ecPublicKey * ALPN: server accepted h2 * Server certificate: * subject: CN=api.mistral.ai * start date: Mar 9 02:33:22 2025 GMT * expire date: Jun 7 03:33:21 2025 GMT * subjectAltName: host "api.mistral.ai" matched cert's "api.mistral.ai" * issuer: C=US; O=Google Trust Services; CN=WE1 * SSL certificate verify ok. * Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA256 * Certificate level 1: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384 * Certificate level 2: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384 * using HTTP/2 * [HTTP/2] [1] OPENED stream for https://api.mistral.ai/v1/chat/completions * [HTTP/2] [1] [:method: POST] * [HTTP/2] [1] [:scheme: https] * [HTTP/2] [1] [:authority: api.mistral.ai] * [HTTP/2] [1] [:path: /v1/chat/completions] * [HTTP/2] [1] [user-agent: curl/8.9.1] * [HTTP/2] [1] [accept: */*] * [HTTP/2] [1] [authorization: Bearer $MISTRAL_API_KEY] * [HTTP/2] [1] [content-type: application/json] * [HTTP/2] [1] [content-length: 134] > POST /v1/chat/completions HTTP/2 > Host: api.mistral.ai > User-Agent: curl/8.9.1 > Accept: */* > Authorization: Bearer $MISTRAL_API_KEY > Content-Type: application/json > Content-Length: 134 > * upload completely sent off: 134 bytes * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/2 422 < date: Wed, 26 Mar 2025 13:32:55 GMT < content-type: application/json < content-length: 464 < ratelimitbysize-query-cost: 32001 < ratelimitbysize-limit: 500000 < x-ratelimitbysize-limit-month: 1000000000 < x-ratelimitbysize-remaining-month: 999967999 < ratelimitbysize-reset: 5 < x-ratelimitbysize-limit-minute: 500000 < x-ratelimitbysize-remaining-minute: 467999 < ratelimitbysize-remaining: 467999 < x-envoy-upstream-service-time: 4 < access-control-allow-origin: * < x-kong-upstream-latency: 4 < x-kong-proxy-latency: 6 < x-kong-request-id: 3658e2145174f8454533073c7004bc28 < cf-cache-status: DYNAMIC < set-cookie: __cf_bm=0s_i_nZR8tzptGqAN.OSHoKIieFXoKjRPSCVATgxnyo-1742995975-1.0.1.1-4g638dE7G1uV.AnGzci9brVI8aTc8EakbgXQHZhm3YD5.lZVBP2uXK5OgGyYAHMJQvmSpUBi27hLguSeGL95LrGXkWXh3bx8OS1PebPXP38; path=/; expires=Wed, 26-Mar-25 14:02:55 GMT; domain=.mistral.ai; HttpOnly; Secure; SameSite=None < server: cloudflare < cf-ray: 9267044c2c9e0638-CDG < alt-svc: h3=":443"; ma=86400 < * Connection #0 to host api.mistral.ai left intact {"detail":[{"type":"union_tag_invalid","loc":["body","messages",0],"msg":"Input tag 'User' found using 'role' does not match any of the expected tags: <Roles.system: 'system'>, <Roles.user: 'user'>, <Roles.assistant: 'assistant'>, <Roles.tool: 'tool'>","input":{"role":"User","content":"Merhaba"},"ctx":{"discriminator":"'role'","tag":"User","expected_tags":"<Roles.system: 'system'>, <Roles.user: 'user'>, <Roles.assistant: 'assistant'>, <Roles.tool: 'tool'>"}}]}%
Steps to reproduce
curl -v --location "https://api.mistral.ai/v1/chat/completions" \ --header "Authorization: Bearer $MISTRAL_API_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "mistral-large-latest", "messages": [ { "role": "user", "content": "Merhaba" } ] }' * Host api.mistral.ai:443 was resolved. * IPv6: (none) * IPv4: 104.18.23.152, 104.18.22.152 * Trying 104.18.23.152:443... * Connected to api.mistral.ai (104.18.23.152) port 443 * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /opt/anaconda3/ssl/cacert.pem * CApath: none * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519 / id-ecPublicKey * ALPN: server accepted h2 * Server certificate: * subject: CN=api.mistral.ai * start date: Mar 9 02:33:22 2025 GMT * expire date: Jun 7 03:33:21 2025 GMT * subjectAltName: host "api.mistral.ai" matched cert's "api.mistral.ai" * issuer: C=US; O=Google Trust Services; CN=WE1 * SSL certificate verify ok. * Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA256 * Certificate level 1: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384 * Certificate level 2: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384 * using HTTP/2 * [HTTP/2] [1] OPENED stream for https://api.mistral.ai/v1/chat/completions * [HTTP/2] [1] [:method: POST] * [HTTP/2] [1] [:scheme: https] * [HTTP/2] [1] [:authority: api.mistral.ai] * [HTTP/2] [1] [:path: /v1/chat/completions] * [HTTP/2] [1] [user-agent: curl/8.9.1] * [HTTP/2] [1] [accept: */*] * [HTTP/2] [1] [authorization: Bearer $MISTRAL_API_KEY] * [HTTP/2] [1] [content-type: application/json] * [HTTP/2] [1] [content-length: 134] > POST /v1/chat/completions HTTP/2 > Host: api.mistral.ai > User-Agent: curl/8.9.1 > Accept: */* > Authorization: Bearer $MISTRAL_API_KEY > Content-Type: application/json > Content-Length: 134 > * upload completely sent off: 134 bytes * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/2 200 < date: Wed, 26 Mar 2025 13:32:50 GMT < content-type: application/json < content-length: 336 < ratelimitbysize-query-cost: 32001 < ratelimitbysize-reset: 11 < x-ratelimitbysize-limit-minute: 500000 < x-ratelimitbysize-remaining-minute: 467999 < ratelimitbysize-limit: 500000 < x-ratelimitbysize-limit-month: 1000000000 < x-ratelimitbysize-remaining-month: 999967999 < ratelimitbysize-remaining: 467999 < x-envoy-upstream-service-time: 521 < access-control-allow-origin: * < x-kong-upstream-latency: 522 < x-kong-proxy-latency: 8 < x-kong-request-id: 3b35707db531013f718ff538102e1223 < cf-cache-status: DYNAMIC < set-cookie: __cf_bm=OgS8M7UcZU.EuNdG1dsj9kkjGXsSRBbI40BIPOMY6F0-1742995970-1.0.1.1-IS__tVVxAKRbaYWFKh1MPvHk5LPw0HT9P.apt.nIEJTZbs8LdggFjY0mn84jSfP04bfK2qMvBBvLU47R6wKBqhJjFEi3j1jZCG6A01dov5Y; path=/; expires=Wed, 26-Mar-25 14:02:50 GMT; domain=.mistral.ai; HttpOnly; Secure; SameSite=None < server: cloudflare < cf-ray: 92670428d986d151-CDG < alt-svc: h3=":443"; ma=86400 < * Connection #0 to host api.mistral.ai left intact {"id":"f96633569843443baf81fce524ab3699","object":"chat.completion","created":1742995969,"model":"mistral-large-latest","choices":[{"index":0,"message":{"role":"assistant","tool_calls":null,"content":"Merhaba! Nasıl yardımcı olabilirim?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":6,"total_tokens":22,"completion_tokens":16}}
Code snippets
There are SystemChatMessage, AssistantChatMessage, UserChatMessage etc. but non-standard role names can be used as in the mistral ai example. I need a class named like CustomChatMessage and we can define custom role name as string
OS
macOS
.NET version
8
Library version
2.1.0