From 97fd39ae172f19fbb6f0e7185479a2524c01ff0c Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Fri, 13 Jun 2025 16:54:02 -0700 Subject: [PATCH 1/2] feat(core): expose model response via details --- packages/agents-core/src/guardrail.ts | 8 ++++++++ packages/agents-core/src/model.ts | 5 +++++ packages/agents-core/src/run.ts | 1 + packages/agents-core/src/runState.ts | 3 +++ packages/agents-extensions/src/aiSdk.ts | 1 + packages/agents-openai/src/openaiChatCompletionsModel.ts | 1 + packages/agents-openai/src/openaiResponsesModel.ts | 1 + 7 files changed, 20 insertions(+) diff --git a/packages/agents-core/src/guardrail.ts b/packages/agents-core/src/guardrail.ts index 30d3bd3e..fa6fdd4c 100644 --- a/packages/agents-core/src/guardrail.ts +++ b/packages/agents-core/src/guardrail.ts @@ -2,6 +2,7 @@ import type { ModelItem } from './types/protocol'; import { Agent, AgentOutputType } from './agent'; import { RunContext } from './runContext'; import { ResolvedAgentOutput, TextOutput, UnknownContext } from './types'; +import type { ModelResponse } from './model'; /** * Definition of input/output guardrails; SDK users usually do not need to create this. @@ -149,6 +150,13 @@ export interface OutputGuardrailFunctionArgs< agent: Agent; agentOutput: ResolvedAgentOutput; context: RunContext; + /** + * Additional details about the agent output. + */ + details?: { + /** Model response associated with the output if available. */ + modelResponse?: ModelResponse; + }; } /** * The result of an output guardrail execution. diff --git a/packages/agents-core/src/model.ts b/packages/agents-core/src/model.ts index 5245866f..03807b47 100644 --- a/packages/agents-core/src/model.ts +++ b/packages/agents-core/src/model.ts @@ -221,6 +221,11 @@ export type ModelResponse = { * model. Not supported by all model providers. */ responseId?: string; + + /** + * Raw response data from the underlying model provider. + */ + providerData?: Record; }; /** diff --git a/packages/agents-core/src/run.ts b/packages/agents-core/src/run.ts index 8271033b..687c4c3d 100644 --- a/packages/agents-core/src/run.ts +++ b/packages/agents-core/src/run.ts @@ -543,6 +543,7 @@ export class Runner extends RunHooks> { agent: state._currentAgent, agentOutput, context: state._context, + details: { modelResponse: state._lastTurnResponse }, }; try { const results = await Promise.all( diff --git a/packages/agents-core/src/runState.ts b/packages/agents-core/src/runState.ts index 980601e3..c88c7fb1 100644 --- a/packages/agents-core/src/runState.ts +++ b/packages/agents-core/src/runState.ts @@ -82,6 +82,7 @@ const modelResponseSchema = z.object({ usage: usageSchema, output: z.array(protocol.OutputModelItem), responseId: z.string().optional(), + providerData: z.record(z.string(), z.any()).optional(), }); const itemSchema = z.discriminatedUnion('type', [ @@ -388,6 +389,7 @@ export class RunState> { }, output: response.output as any, responseId: response.responseId, + providerData: response.providerData, }; }), context: this._context.toJSON(), @@ -635,6 +637,7 @@ export function deserializeModelResponse( protocol.OutputModelItem.parse(item), ), responseId: serializedModelResponse.responseId, + providerData: serializedModelResponse.providerData, }; } diff --git a/packages/agents-extensions/src/aiSdk.ts b/packages/agents-extensions/src/aiSdk.ts index 2829ab46..111000c7 100644 --- a/packages/agents-extensions/src/aiSdk.ts +++ b/packages/agents-extensions/src/aiSdk.ts @@ -449,6 +449,7 @@ export class AiSdkModel implements Model { result.usage.promptTokens + result.usage.completionTokens, }), output, + providerData: result, }; } catch (error) { if (error instanceof Error) { diff --git a/packages/agents-openai/src/openaiChatCompletionsModel.ts b/packages/agents-openai/src/openaiChatCompletionsModel.ts index 4c83dc52..885eadaa 100644 --- a/packages/agents-openai/src/openaiChatCompletionsModel.ts +++ b/packages/agents-openai/src/openaiChatCompletionsModel.ts @@ -141,6 +141,7 @@ export class OpenAIChatCompletionsModel implements Model { : new Usage(), output, responseId: response.id, + providerData: response, }; return modelResponse; diff --git a/packages/agents-openai/src/openaiResponsesModel.ts b/packages/agents-openai/src/openaiResponsesModel.ts index 5ca7cc7d..fc3f77ef 100644 --- a/packages/agents-openai/src/openaiResponsesModel.ts +++ b/packages/agents-openai/src/openaiResponsesModel.ts @@ -856,6 +856,7 @@ export class OpenAIResponsesModel implements Model { }), output: convertToOutputItem(response.output), responseId: response.id, + providerData: response, }; return output; From 1d67d43574cd20b67a990a3277b00e0196d53523 Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Mon, 16 Jun 2025 09:01:33 -0700 Subject: [PATCH 2/2] Create shaggy-teachers-worry.md --- .changeset/shaggy-teachers-worry.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/shaggy-teachers-worry.md diff --git a/.changeset/shaggy-teachers-worry.md b/.changeset/shaggy-teachers-worry.md new file mode 100644 index 00000000..e5de7237 --- /dev/null +++ b/.changeset/shaggy-teachers-worry.md @@ -0,0 +1,8 @@ +--- +"@openai/agents-core": patch +"@openai/agents-extensions": patch +"@openai/agents-openai": patch +"@openai/agents-realtime": patch +--- + +Add details to output guardrail execution