with_structured_output() — langchain Function Reference
Architecture documentation for the with_structured_output() function in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD a65d1edd_fa36_3eb2_3d8b_f23a51f56960["with_structured_output()"] 29c504f8_01a0_5f4c_3ec6_14bbf14b96eb["ChatOpenAI"] a65d1edd_fa36_3eb2_3d8b_f23a51f56960 -->|defined in| 29c504f8_01a0_5f4c_3ec6_14bbf14b96eb f144b7f2_8059_57ad_4c98_4b3d77c48244["with_structured_output()"] f144b7f2_8059_57ad_4c98_4b3d77c48244 -->|calls| a65d1edd_fa36_3eb2_3d8b_f23a51f56960 f144b7f2_8059_57ad_4c98_4b3d77c48244["with_structured_output()"] a65d1edd_fa36_3eb2_3d8b_f23a51f56960 -->|calls| f144b7f2_8059_57ad_4c98_4b3d77c48244 style a65d1edd_fa36_3eb2_3d8b_f23a51f56960 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/partners/openai/langchain_openai/chat_models/base.py lines 3080–3487
def with_structured_output(
self,
schema: _DictOrPydanticClass | None = None,
*,
method: Literal["function_calling", "json_mode", "json_schema"] = "json_schema",
include_raw: bool = False,
strict: bool | None = None,
tools: list | None = None,
**kwargs: Any,
) -> Runnable[LanguageModelInput, _DictOrPydantic]:
r"""Model wrapper that returns outputs formatted to match the given schema.
Args:
schema: The output schema. Can be passed in as:
- an OpenAI function/tool schema,
- a JSON Schema,
- a `TypedDict` class,
- or a Pydantic class.
If `schema` is a Pydantic class then the model output will be a
Pydantic instance of that class, and the model-generated fields will be
validated by the Pydantic class. Otherwise the model output will be a
dict and will not be validated.
See `langchain_core.utils.function_calling.convert_to_openai_tool` for
more on how to properly specify types and descriptions of schema fields
when specifying a Pydantic or `TypedDict` class.
method: The method for steering model generation, one of:
- `'json_schema'`:
Uses OpenAI's [Structured Output API](https://platform.openai.com/docs/guides/structured-outputs).
See the docs for [supported models](https://platform.openai.com/docs/guides/structured-outputs#supported-models).
- `'function_calling'`:
Uses OpenAI's [tool-calling API](https://platform.openai.com/docs/guides/function-calling)
(formerly called function calling).
- `'json_mode'`:
Uses OpenAI's [JSON mode](https://platform.openai.com/docs/guides/structured-outputs#json-mode).
Note that if using JSON mode then you must include instructions for
formatting the output into the desired schema into the model call.
Learn more about the [differences between methods](https://platform.openai.com/docs/guides/structured-outputs#function-calling-vs-response-format).
include_raw:
If `False` then only the parsed structured output is returned.
If an error occurs during model output parsing it will be raised.
If `True` then both the raw model response (a `BaseMessage`) and the
parsed model response will be returned.
If an error occurs during output parsing it will be caught and returned
as well.
The final output is always a `dict` with keys `'raw'`, `'parsed'`, and
`'parsing_error'`.
strict:
- `True`:
Model output is guaranteed to exactly match the schema.
The input schema will also be validated according to the
[supported schemas](https://platform.openai.com/docs/guides/structured-outputs#supported-schemas).
- `False`:
Input schema will not be validated and model output will not be
validated.
- `None`:
`strict` argument will not be passed to the model.
If schema is specified via `TypedDict` or JSON schema, `strict` is not
enabled by default. Pass `strict=True` to enable it.
!!! note
`strict` can only be non-null if `method` is `'json_schema'` or `'function_calling'`.
tools:
A list of tool-like objects to bind to the chat model. Requires that:
- `method` is `'json_schema'` (default).
- `strict=True`
- `include_raw=True`
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does with_structured_output() do?
with_structured_output() is a function in the langchain codebase, defined in libs/partners/openai/langchain_openai/chat_models/base.py.
Where is with_structured_output() defined?
with_structured_output() is defined in libs/partners/openai/langchain_openai/chat_models/base.py at line 3080.
What does with_structured_output() call?
with_structured_output() calls 1 function(s): with_structured_output.
What calls with_structured_output()?
with_structured_output() is called by 1 function(s): with_structured_output.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free