Skip to content

Commit 2bce99d

Browse files
authored
Merge pull request #1394 from krissetto/enbale-thinking-traces-openai
Send events for thinking traces on OpenAI models
2 parents deaaafa + b461a81 commit 2bce99d

10 files changed

Lines changed: 944 additions & 128 deletions

e2e/cagent_exec_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func TestExec_OpenAI_gpt5_1(t *testing.T) {
4545
func TestExec_OpenAI_gpt5_codex(t *testing.T) {
4646
out := cagentExec(t, "testdata/basic.yaml", "--model=openai/gpt-5-codex", "What's 2+2?")
4747

48-
require.Equal(t, "\n--- Agent: root ---\n2 + 2 equals 4.", out)
48+
require.Equal(t, "\n--- Agent: root ---\n**Preparing to answer question 4**2 + 2 = 4.", out)
4949
}
5050

5151
func TestExec_Anthropic(t *testing.T) {

e2e/cagent_mcp_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,5 @@ func TestMCP_MultiAgent(t *testing.T) {
5454
})
5555

5656
require.NoError(t, err)
57-
assert.Equal(t, "Hello, how can I help you today?", output.Response)
57+
assert.Equal(t, "Hello, nice to meet you!", output.Response)
5858
}

e2e/testdata/cassettes/TestA2AServer_MultiAgent.yaml

Lines changed: 293 additions & 16 deletions
Large diffs are not rendered by default.
Lines changed: 53 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,56 @@
11
---
22
version: 2
33
interactions:
4-
- id: 0
5-
request:
6-
proto: HTTP/1.1
7-
proto_major: 1
8-
proto_minor: 1
9-
content_length: 0
10-
host: api.openai.com
11-
body: "{\"messages\":[{\"content\":\"You are a knowledgeable assistant that helps users with various tasks.\\nBe helpful, accurate, and concise in your responses.\\n\",\"role\":\"system\"},{\"content\":\"What's 2+2?\",\"role\":\"user\"}],\"model\":\"gpt-5\",\"stream_options\":{\"include_usage\":true},\"stream\":true}"
12-
url: https://api.openai.com/v1/chat/completions
13-
method: POST
14-
response:
15-
proto: HTTP/2.0
16-
proto_major: 2
17-
proto_minor: 0
18-
content_length: -1
19-
body: "data: {\"id\":\"chatcmpl-Cb8MOHVKqBmbinXR7u3HrVItcc7ku\",\"object\":\"chat.completion.chunk\",\"created\":1762966308,\"model\":\"gpt-5-2025-08-07\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"finish_reason\":null}],\"usage\":null,\"obfuscation\":\"YoSt96Mjwk\"}\n\ndata: {\"id\":\"chatcmpl-Cb8MOHVKqBmbinXR7u3HrVItcc7ku\",\"object\":\"chat.completion.chunk\",\"created\":1762966308,\"model\":\"gpt-5-2025-08-07\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"4\"},\"finish_reason\":null}],\"usage\":null,\"obfuscation\":\"CmSvedpphKn\"}\n\ndata: {\"id\":\"chatcmpl-Cb8MOHVKqBmbinXR7u3HrVItcc7ku\",\"object\":\"chat.completion.chunk\",\"created\":1762966308,\"model\":\"gpt-5-2025-08-07\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"finish_reason\":\"stop\"}],\"usage\":null,\"obfuscation\":\"oj9EAV\"}\n\ndata: {\"id\":\"chatcmpl-Cb8MOHVKqBmbinXR7u3HrVItcc7ku\",\"object\":\"chat.completion.chunk\",\"created\":1762966308,\"model\":\"gpt-5-2025-08-07\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[],\"usage\":{\"prompt_tokens\":39,\"completion_tokens\":10,\"total_tokens\":49,\"prompt_tokens_details\":{\"cached_tokens\":0,\"audio_tokens\":0},\"completion_tokens_details\":{\"reasoning_tokens\":0,\"audio_tokens\":0,\"accepted_prediction_tokens\":0,\"rejected_prediction_tokens\":0}},\"obfuscation\":\"qwqs6vzkw9l\"}\n\ndata: [DONE]\n\n"
20-
headers: {}
21-
status: 200 OK
22-
code: 200
23-
duration: 1.01612875s
4+
- id: 0
5+
request:
6+
proto: HTTP/1.1
7+
proto_major: 1
8+
proto_minor: 1
9+
content_length: 0
10+
host: api.openai.com
11+
body: '{"input":[{"content":[{"text":"You are a knowledgeable assistant that helps users with various tasks.\nBe helpful, accurate, and concise in your responses.\n","type":"input_text"}],"role":"system"},{"content":"What''s 2+2?","role":"user"}],"model":"gpt-5","reasoning":{"summary":"detailed"},"stream":true}'
12+
url: https://api.openai.com/v1/responses
13+
method: POST
14+
response:
15+
proto: HTTP/2.0
16+
proto_major: 2
17+
proto_minor: 0
18+
content_length: -1
19+
body: |+
20+
event: response.created
21+
data: {"type":"response.created","response":{"id":"resp_07aba19846ac576900696a92c851488194a8821d02da97c312","object":"response","created_at":1768592072,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":0}
22+
23+
event: response.in_progress
24+
data: {"type":"response.in_progress","response":{"id":"resp_07aba19846ac576900696a92c851488194a8821d02da97c312","object":"response","created_at":1768592072,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":1}
25+
26+
event: response.output_item.added
27+
data: {"type":"response.output_item.added","item":{"id":"rs_07aba19846ac576900696a92c8a4d48194b48b90d02cc97109","type":"reasoning","summary":[]},"output_index":0,"sequence_number":2}
28+
29+
event: response.output_item.done
30+
data: {"type":"response.output_item.done","item":{"id":"rs_07aba19846ac576900696a92c8a4d48194b48b90d02cc97109","type":"reasoning","summary":[]},"output_index":0,"sequence_number":3}
31+
32+
event: response.output_item.added
33+
data: {"type":"response.output_item.added","item":{"id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","type":"message","status":"in_progress","content":[],"role":"assistant"},"output_index":1,"sequence_number":4}
34+
35+
event: response.content_part.added
36+
data: {"type":"response.content_part.added","content_index":0,"item_id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","output_index":1,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""},"sequence_number":5}
37+
38+
event: response.output_text.delta
39+
data: {"type":"response.output_text.delta","content_index":0,"delta":"4","item_id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","logprobs":[],"obfuscation":"gfTxllebeyuuaOt","output_index":1,"sequence_number":6}
40+
41+
event: response.output_text.done
42+
data: {"type":"response.output_text.done","content_index":0,"item_id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","logprobs":[],"output_index":1,"sequence_number":7,"text":"4"}
43+
44+
event: response.content_part.done
45+
data: {"type":"response.content_part.done","content_index":0,"item_id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","output_index":1,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"4"},"sequence_number":8}
46+
47+
event: response.output_item.done
48+
data: {"type":"response.output_item.done","item":{"id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"4"}],"role":"assistant"},"output_index":1,"sequence_number":9}
49+
50+
event: response.completed
51+
data: {"type":"response.completed","response":{"id":"resp_07aba19846ac576900696a92c851488194a8821d02da97c312","object":"response","created_at":1768592072,"status":"completed","background":false,"completed_at":1768592073,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[{"id":"rs_07aba19846ac576900696a92c8a4d48194b48b90d02cc97109","type":"reasoning","summary":[]},{"id":"msg_07aba19846ac576900696a92c935688194a593cc8530c4d260","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"4"}],"role":"assistant"}],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":"detailed"},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":39,"input_tokens_details":{"cached_tokens":0},"output_tokens":7,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":46},"user":null,"metadata":{}},"sequence_number":10}
52+
53+
headers: {}
54+
status: 200 OK
55+
code: 200
56+
duration: 551.395583ms

0 commit comments

Comments
 (0)