27 lines
1.5 KiB
Plaintext
27 lines
1.5 KiB
Plaintext
# A real HTTP round trip to OpenAI (not scripted) -- captured manually, not by run-all.sh
|
|
|
|
This one is not reproducible by scripts/run-all.sh: it needs a live network path to
|
|
api.openai.com, which the automated test suite deliberately does not depend on (see
|
|
ChatClientEndpointsTest, which uses FakeChatModel instead). It is included because it is the
|
|
one exhibit in this module that touches a real provider, and it proves the request pipeline
|
|
-- ChatClient, the OpenAiChatModel bean spring.ai.model.chat=openai selected, and the OpenAI
|
|
Java SDK underneath it -- is wired correctly all the way to OpenAI's own server, not just to
|
|
a stub.
|
|
|
|
Command (full application, spring-boot:run, a syntactically valid but fake key):
|
|
|
|
$ export OPENAI_API_KEY=sk-test-placeholder-not-a-real-key
|
|
$ curl 'http://localhost:8080/api/chat?message=hi'
|
|
|
|
Response: HTTP 500, body in 05-real-openai-401-response-body.txt
|
|
|
|
Application log root cause (grepped from the running process's stdout):
|
|
|
|
com.openai.errors.UnauthorizedException: 401: Incorrect API key provided: sk-test-**********************-key. You can find your API key at https://platform.openai.com/account/api-keys.
|
|
|
|
That 401 comes from OpenAI's own server, not from Spring AI or from this sandbox -- OpenAI
|
|
validated the key format, rejected it, and said so in its own error class
|
|
(com.openai.errors.UnauthorizedException). A malformed request, a wrong base URL, or a client
|
|
that never left the JVM would not look like this. Swap in a real key and this becomes a real
|
|
reply.
|