Skip to content

Commit 47b43b1

Browse files
committed
feat: Bump support for openai agents
1 parent 753d396 commit 47b43b1

10 files changed

Lines changed: 885 additions & 564 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"braintrust": minor
3+
---
4+
5+
feat: Bump support for openai agents

‎e2e/scenarios/openai-agents-instrumentation/__snapshots__/openai-agents-v0-latest.span-tree.json‎

Lines changed: 303 additions & 253 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎e2e/scenarios/openai-agents-instrumentation/__snapshots__/openai-agents-v0-latest.span-tree.txt‎

Lines changed: 290 additions & 255 deletions
Large diffs are not rendered by default.

‎e2e/scenarios/openai-agents-instrumentation/assertions.ts‎

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ function findModelSpans(
4444

4545
export function defineOpenAIAgentsAutoInstrumentationAssertions(options: {
4646
name: string;
47+
hasTurnSpans: boolean;
4748
runScenario: RunOpenAIAgentsScenario;
4849
snapshotName: string;
4950
testFileUrl: string;
@@ -76,13 +77,19 @@ export function defineOpenAIAgentsAutoInstrumentationAssertions(options: {
7677
"Agent workflow",
7778
operation?.span.id,
7879
);
79-
const agent = findLatestChildSpan(
80+
const task = options.hasTurnSpans
81+
? findLatestChildSpan(events, "Agent workflow", workflow?.span.id)
82+
: workflow;
83+
const agent = findLatestChildSpan(events, AGENT_NAME, task?.span.id);
84+
const turns = findChildSpans(events, "Turn", agent?.span.id);
85+
const modelSpans = options.hasTurnSpans
86+
? turns.flatMap((turn) => findModelSpans(events, turn.span.id))
87+
: findModelSpans(events, agent?.span.id);
88+
const toolSpan = findLatestChildSpan(
8089
events,
81-
AGENT_NAME,
82-
workflow?.span.id,
90+
TOOL_NAME,
91+
options.hasTurnSpans ? turns[0]?.span.id : agent?.span.id,
8392
);
84-
const modelSpans = findModelSpans(events, agent?.span.id);
85-
const toolSpan = findLatestChildSpan(events, TOOL_NAME, agent?.span.id);
8693

8794
expect(root).toBeDefined();
8895
expect(root?.row.metadata).toMatchObject({
@@ -95,6 +102,38 @@ export function defineOpenAIAgentsAutoInstrumentationAssertions(options: {
95102
expect(workflow?.span.type).toBe("task");
96103
expect(workflow?.span.parentIds).toEqual([operation?.span.id ?? ""]);
97104

105+
if (options.hasTurnSpans) {
106+
expect(task?.span.type).toBe("task");
107+
expect(task?.span.parentIds).toEqual([workflow?.span.id]);
108+
expect(turns).toHaveLength(2);
109+
for (const [index, turn] of turns.entries()) {
110+
expect(turn.span.type).toBe("task");
111+
expect(turn.row.metadata).toMatchObject({
112+
turn: index + 1,
113+
agent_name: AGENT_NAME,
114+
});
115+
expect(findModelSpans(events, turn.span.id)).toHaveLength(1);
116+
}
117+
for (const parent of [task, ...turns]) {
118+
const children =
119+
parent === task
120+
? modelSpans
121+
: findModelSpans(events, parent?.span.id);
122+
for (const metric of [
123+
"prompt_tokens",
124+
"completion_tokens",
125+
"tokens",
126+
]) {
127+
expect(parent?.metrics?.[metric]).toBe(
128+
children.reduce(
129+
(sum, child) => sum + (child.metrics?.[metric] as number),
130+
0,
131+
),
132+
);
133+
}
134+
}
135+
}
136+
98137
expect(agent).toBeDefined();
99138
expect(agent?.span.type).toBe("task");
100139
expect(agent?.row.metadata).toMatchObject({
@@ -105,7 +144,9 @@ export function defineOpenAIAgentsAutoInstrumentationAssertions(options: {
105144
expect(modelSpans.length).toBeGreaterThanOrEqual(1);
106145
for (const modelSpan of modelSpans) {
107146
expect(modelSpan.span.type).toBe("llm");
108-
expect(String(modelSpan.row.metadata?.model)).toContain(MODEL_NAME);
147+
expect(modelSpan.row.metadata).toMatchObject({
148+
model: expect.stringContaining(MODEL_NAME),
149+
});
109150
expect(modelSpan.metrics).toMatchObject({
110151
completion_tokens: expect.any(Number),
111152
prompt_tokens: expect.any(Number),

‎e2e/scenarios/openai-agents-instrumentation/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "module",
66
"dependencies": {
77
"openai-agents-v0": "npm:@openai/agents@0.0.14",
8-
"openai-agents-v0-latest": "npm:@openai/agents@0.12.0",
8+
"openai-agents-v0-latest": "npm:@openai/agents@0.21.0",
99
"zod": "4.4.3"
1010
},
1111
"braintrustScenario": {

0 commit comments

Comments
 (0)