diff --git a/src/agents/model_settings.py b/src/agents/model_settings.py index 881390279..f844eb87c 100644 --- a/src/agents/model_settings.py +++ b/src/agents/model_settings.py @@ -5,6 +5,7 @@ from typing import Any, Literal from openai._types import Body, Headers, Query +from openai.types.responses import ResponseIncludable from openai.types.shared import Reasoning from pydantic import BaseModel @@ -61,6 +62,10 @@ class ModelSettings: """Whether to include usage chunk. Defaults to True if not provided.""" + response_include: list[ResponseIncludable] | None = None + """Additional output data to include in the model response. + [include parameter](https://platform.openai.com/docs/api-reference/responses/create#responses-create-include)""" + extra_query: Query | None = None """Additional query fields to provide with the request. Defaults to None if not provided.""" diff --git a/src/agents/models/openai_responses.py b/src/agents/models/openai_responses.py index 961f690b0..637adaccd 100644 --- a/src/agents/models/openai_responses.py +++ b/src/agents/models/openai_responses.py @@ -240,6 +240,10 @@ async def _fetch_response( converted_tools = Converter.convert_tools(tools, handoffs) response_format = Converter.get_response_format(output_schema) + include: list[ResponseIncludable] = converted_tools.includes + if model_settings.response_include is not None: + include = list({*include, *model_settings.response_include}) + if _debug.DONT_LOG_MODEL_DATA: logger.debug("Calling LLM") else: @@ -258,7 +262,7 @@ async def _fetch_response( instructions=self._non_null_or_not_given(system_instructions), model=self.model, input=list_input, - include=converted_tools.includes, + include=include, tools=converted_tools.tools, prompt=self._non_null_or_not_given(prompt), temperature=self._non_null_or_not_given(model_settings.temperature), diff --git a/tests/model_settings/test_serialization.py b/tests/model_settings/test_serialization.py index ad4db4019..2bbc7ce2c 100644 --- a/tests/model_settings/test_serialization.py +++ b/tests/model_settings/test_serialization.py @@ -44,6 +44,7 @@ def test_all_fields_serialization() -> None: metadata={"foo": "bar"}, store=False, include_usage=False, + response_include=["reasoning.encrypted_content"], extra_query={"foo": "bar"}, extra_body={"foo": "bar"}, extra_headers={"foo": "bar"},