Skip to content

Commit 1349ce8

Browse files
committed
Add test for Responses API
1 parent c71a502 commit 1349ce8

File tree

7 files changed

+208
-12
lines changed

7 files changed

+208
-12
lines changed

config/config.exs

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ if config_env() == :test do
55
filter_request_headers: [
66
"OpenAI-Organization",
77
"Openai-Organization",
8-
"Authorization"
8+
"openai-organization",
9+
"Authorization",
10+
"Set-Cookie"
911
]
1012
end

lib/ex_openai/codegen.ex

+3-6
Original file line numberDiff line numberDiff line change
@@ -904,9 +904,9 @@ defmodule ExOpenAI.Codegen do
904904
String.to_existing_atom(key)
905905
rescue
906906
ArgumentError ->
907-
Logger.debug(
908-
"Found non-existing atom returning by OpenAI API: :#{key}.\nThis may mean that OpenAI has updated it's API, or that the key was not included in their official openapi reference.\nGoing to load this atom now anyway, but as converting a lot of unknown data into atoms can result in a memory leak, watch out for these messages. If you see a lot of them, something may be wrong."
909-
)
907+
# Logger.debug(
908+
# "Found non-existing atom returning by OpenAI API: :#{key}.\nThis may mean that OpenAI has updated it's API, or that the key was not included in their official openapi reference.\nGoing to load this atom now anyway, but as converting a lot of unknown data into atoms can result in a memory leak, watch out for these messages. If you see a lot of them, something may be wrong."
909+
# )
910910

911911
String.to_atom(key)
912912
end,
@@ -967,9 +967,6 @@ defmodule ExOpenAI.Codegen do
967967
%{kind: :allOf, components: component_list, required_prop_keys: required_prop_keys}},
968968
all_components
969969
) do
970-
#
971-
#
972-
#
973970
# step 1: Resolve the schema of all nested components
974971
finalized_schema =
975972
component_list

mix.exs

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule ExOpenAI.MixProject do
5757
{:httpoison, "~> 2.2.1"},
5858
{:mix_test_watch, "~> 1.2", only: :test},
5959
{:ex_doc, ">= 0.34.1", only: :dev},
60-
{:exvcr, "~> 0.15.1", only: :test},
60+
{:exvcr, "~> 0.16.0", only: :test},
6161
{:exjsx, "~> 4.0", only: :test},
6262
{:yaml_elixir, "~> 2.11"},
6363
{:dialyxir, "~> 1.4", only: [:dev], runtime: false},

mix.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
%{
22
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
3-
"certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
3+
"certifi": {:hex, :certifi, "2.14.0", "ed3bef654e69cde5e6c022df8070a579a79e8ba2368a00acf3d75b82d9aceeed", [:rebar3], [], "hexpm", "ea59d87ef89da429b8e905264fdec3419f84f2215bb3d81e07a18aac919026c3"},
44
"credo": {:hex, :credo, "1.7.1", "6e26bbcc9e22eefbff7e43188e69924e78818e2fe6282487d0703652bc20fd62", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2"},
55
"dialyxir": {:hex, :dialyxir, "1.4.1", "a22ed1e7bd3a3e3f197b68d806ef66acb61ee8f57b3ac85fc5d57354c5482a93", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "84b795d6d7796297cca5a3118444b80c7d94f7ce247d49886e7c291e1ae49801"},
66
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
77
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
88
"ex_doc": {:hex, :ex_doc, "0.34.1", "9751a0419bc15bc7580c73fde506b17b07f6402a1e5243be9e0f05a68c723368", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "d441f1a86a235f59088978eff870de2e815e290e44a8bd976fe5d64470a4c9d2"},
99
"exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm", "1222419f706e01bfa1095aec9acf6421367dcfab798a6f67c54cf784733cd6b5"},
1010
"exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm", "32e95820a97cffea67830e91514a2ad53b888850442d6d395f53a1ac60c82e07"},
11-
"exvcr": {:hex, :exvcr, "0.15.1", "772db4d065f5136c6a984c302799a79e4ade3e52701c95425fa2229dd6426886", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:finch, "~> 0.16", [hex: :finch, repo: "hexpm", optional: true]}, {:httpoison, "~> 1.0 or ~> 2.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "de4fc18b1d672d9b72bc7468735e19779aa50ea963a1f859ef82cd9e294b13e3"},
11+
"exvcr": {:hex, :exvcr, "0.16.0", "11579f43c88ae81f57c82ce4f09e3ebda4c40117c859ed39e61a653c3a0b4ff4", [:mix], [{:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:finch, "~> 0.16", [hex: :finch, repo: "hexpm", optional: true]}, {:httpoison, "~> 1.0 or ~> 2.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.9", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "8f576af22369942f7a1482baff1f31e2f45983cf6fac45d49d2bd2e84b4d5be8"},
1212
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
13-
"hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"},
14-
"httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
13+
"hackney": {:hex, :hackney, "1.23.0", "55cc09077112bcb4a69e54be46ed9bc55537763a96cd4a80a221663a7eafd767", [:rebar3], [{:certifi, "~> 2.14.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "6cd1c04cd15c81e5a493f167b226a15f0938a84fc8f0736ebe4ddcab65c0b44e"},
14+
"httpoison": {:hex, :httpoison, "2.2.2", "15420e9e5bbb505b931b2f589dc8be0c3b21e2a91a2c6ba882d99bf8f3ad499d", [:mix], [{:hackney, "~> 1.21", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "de7ac49fe2ffd89219972fdf39b268582f6f7f68d8cd29b4482dacca1ce82324"},
1515
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
1616
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
1717
"json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"},
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
[
2+
{
3+
"request": {
4+
"options": [],
5+
"body": "{\"input\":\"tell me a joke\",\"model\":\"gpt-4o-mini\"}",
6+
"url": "https://api.openai.com/v1/responses?",
7+
"headers": {
8+
"Authorization": "***",
9+
"Content-type": "application/json"
10+
},
11+
"method": "post",
12+
"request_body": ""
13+
},
14+
"response": {
15+
"binary": false,
16+
"type": "ok",
17+
"body": "{\n \"id\": \"resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523\",\n \"object\": \"response\",\n \"created_at\": 1741858862,\n \"status\": \"completed\",\n \"error\": null,\n \"incomplete_details\": null,\n \"instructions\": null,\n \"max_output_tokens\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"type\": \"message\",\n \"id\": \"msg_67d2a82ea20881929a8fb281c1a95da40d257b2afabb8523\",\n \"status\": \"completed\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"text\": \"Why did the scarecrow win an award? \\n\\nBecause he was outstanding in his field!\",\n \"annotations\": []\n }\n ]\n }\n ],\n \"parallel_tool_calls\": true,\n \"previous_response_id\": null,\n \"reasoning\": {\n \"effort\": null,\n \"generate_summary\": null\n },\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n }\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 29,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 19,\n \"output_tokens_details\": {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 48\n },\n \"user\": null,\n \"metadata\": {}\n}",
18+
"headers": {
19+
"Date": "Thu, 13 Mar 2025 09:41:02 GMT",
20+
"Content-Type": "application/json",
21+
"Content-Length": "1240",
22+
"Connection": "keep-alive",
23+
"openai-version": "2020-10-01",
24+
"x-request-id": "req_1a29e9c9f1e0c1d4574b10156590edd3",
25+
"openai-processing-ms": "680",
26+
"strict-transport-security": "max-age=31536000; includeSubDomains; preload",
27+
"cf-cache-status": "DYNAMIC",
28+
"X-Content-Type-Options": "nosniff",
29+
"Server": "cloudflare",
30+
"CF-RAY": "91fa92c03837d74f-NRT",
31+
"alt-svc": "h3=\":443\"; ma=86400"
32+
},
33+
"status_code": 200
34+
}
35+
},
36+
{
37+
"request": {
38+
"options": [],
39+
"body": "",
40+
"url": "https://api.openai.com/v1/responses/resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523?",
41+
"headers": {
42+
"Authorization": "***",
43+
"Content-type": "application/json"
44+
},
45+
"method": "get",
46+
"request_body": ""
47+
},
48+
"response": {
49+
"binary": false,
50+
"type": "ok",
51+
"body": "{\n \"id\": \"resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523\",\n \"object\": \"response\",\n \"created_at\": 1741858862,\n \"status\": \"completed\",\n \"error\": null,\n \"incomplete_details\": null,\n \"instructions\": null,\n \"max_output_tokens\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"type\": \"message\",\n \"id\": \"msg_67d2a82ea20881929a8fb281c1a95da40d257b2afabb8523\",\n \"status\": \"completed\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"text\": \"Why did the scarecrow win an award? \\n\\nBecause he was outstanding in his field!\",\n \"annotations\": []\n }\n ]\n }\n ],\n \"parallel_tool_calls\": true,\n \"previous_response_id\": null,\n \"reasoning\": {\n \"effort\": null,\n \"generate_summary\": null\n },\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n }\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 29,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 19,\n \"output_tokens_details\": {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 48\n },\n \"user\": null,\n \"metadata\": {}\n}",
52+
"headers": {
53+
"Date": "Thu, 13 Mar 2025 09:41:03 GMT",
54+
"Content-Type": "application/json",
55+
"Content-Length": "1240",
56+
"Connection": "keep-alive",
57+
"openai-version": "2020-10-01",
58+
"x-request-id": "req_bd8bf1abb9306e67f25e219ef6a1ed07",
59+
"openai-processing-ms": "63",
60+
"strict-transport-security": "max-age=31536000; includeSubDomains; preload",
61+
"cf-cache-status": "DYNAMIC",
62+
"X-Content-Type-Options": "nosniff",
63+
"Server": "cloudflare",
64+
"CF-RAY": "91fa92c64db6d74f-NRT",
65+
"alt-svc": "h3=\":443\"; ma=86400"
66+
},
67+
"status_code": 200
68+
}
69+
}
70+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
[
2+
{
3+
"request": {
4+
"options": [],
5+
"body": "{\"input\":\"Please tell me what I asked you to do in my previous message ok??\",\"model\":\"gpt-4o-mini\",\"previous_response_id\":\"resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523\"}",
6+
"url": "https://api.openai.com/v1/responses?",
7+
"headers": {
8+
"Authorization": "***",
9+
"Content-type": "application/json"
10+
},
11+
"request_body": "",
12+
"method": "post"
13+
},
14+
"response": {
15+
"binary": false,
16+
"type": "ok",
17+
"body": "{\n \"id\": \"resp_67d2afcfd41081929d3cbe871a7645580d257b2afabb8523\",\n \"object\": \"response\",\n \"created_at\": 1741860815,\n \"status\": \"completed\",\n \"error\": null,\n \"incomplete_details\": null,\n \"instructions\": null,\n \"max_output_tokens\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"type\": \"message\",\n \"id\": \"msg_67d2afd082b88192ae5b90ff477c7ec50d257b2afabb8523\",\n \"status\": \"completed\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"text\": \"You asked me to tell you a joke. Would you like to hear another one?\",\n \"annotations\": []\n }\n ]\n }\n ],\n \"parallel_tool_calls\": true,\n \"previous_response_id\": \"resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523\",\n \"reasoning\": {\n \"effort\": null,\n \"generate_summary\": null\n },\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n }\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 70,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 18,\n \"output_tokens_details\": {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 88\n },\n \"user\": null,\n \"metadata\": {}\n}",
18+
"headers": {
19+
"Date": "Thu, 13 Mar 2025 10:13:36 GMT",
20+
"Content-Type": "application/json",
21+
"Content-Length": "1279",
22+
"Connection": "keep-alive",
23+
"openai-version": "2020-10-01",
24+
"x-request-id": "req_ed9fab4e4998bd734b895f210346ee82",
25+
"openai-processing-ms": "1008",
26+
"strict-transport-security": "max-age=31536000; includeSubDomains; preload",
27+
"cf-cache-status": "DYNAMIC",
28+
"X-Content-Type-Options": "nosniff",
29+
"Server": "cloudflare",
30+
"CF-RAY": "91fac27248aad74f-NRT",
31+
"alt-svc": "h3=\":443\"; ma=86400"
32+
},
33+
"status_code": 200
34+
}
35+
},
36+
{
37+
"request": {
38+
"options": [],
39+
"body": "",
40+
"url": "https://api.openai.com/v1/responses/resp_67d2afcfd41081929d3cbe871a7645580d257b2afabb8523?",
41+
"headers": {
42+
"Authorization": "***",
43+
"Content-type": "application/json"
44+
},
45+
"request_body": "",
46+
"method": "get"
47+
},
48+
"response": {
49+
"binary": false,
50+
"type": "ok",
51+
"body": "{\n \"id\": \"resp_67d2afcfd41081929d3cbe871a7645580d257b2afabb8523\",\n \"object\": \"response\",\n \"created_at\": 1741860815,\n \"status\": \"completed\",\n \"error\": null,\n \"incomplete_details\": null,\n \"instructions\": null,\n \"max_output_tokens\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"type\": \"message\",\n \"id\": \"msg_67d2afd082b88192ae5b90ff477c7ec50d257b2afabb8523\",\n \"status\": \"completed\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"text\": \"You asked me to tell you a joke. Would you like to hear another one?\",\n \"annotations\": []\n }\n ]\n }\n ],\n \"parallel_tool_calls\": true,\n \"previous_response_id\": \"resp_67d2a82e377c81929d2d0a90d7be62680d257b2afabb8523\",\n \"reasoning\": {\n \"effort\": null,\n \"generate_summary\": null\n },\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n }\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 70,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 18,\n \"output_tokens_details\": {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 88\n },\n \"user\": null,\n \"metadata\": {}\n}",
52+
"headers": {
53+
"Date": "Thu, 13 Mar 2025 10:13:37 GMT",
54+
"Content-Type": "application/json",
55+
"Content-Length": "1279",
56+
"Connection": "keep-alive",
57+
"openai-version": "2020-10-01",
58+
"x-request-id": "req_0e8107c7776d5265f53266763b9d0e18",
59+
"openai-processing-ms": "66",
60+
"strict-transport-security": "max-age=31536000; includeSubDomains; preload",
61+
"cf-cache-status": "DYNAMIC",
62+
"X-Content-Type-Options": "nosniff",
63+
"Server": "cloudflare",
64+
"CF-RAY": "91fac279da48d74f-NRT",
65+
"alt-svc": "h3=\":443\"; ma=86400"
66+
},
67+
"status_code": 200
68+
}
69+
}
70+
]

0 commit comments

Comments
 (0)