• Create a runnable that uses an OpenAI function to get a structured output.

    Type Parameters

    • RunInput extends Record<string, any> = Record<string, any>

    • RunOutput extends Record<string, any> = Record<string, any>


    Returns Toolkit<RunInput, RunOutput>

    A runnable sequence that will pass the given function to the model when run.


    import { createStructuredOutputRunnable } from "langchain/chains/openai_functions";
    import { ChatOpenAI } from "@langchain/openai";
    import { ChatPromptTemplate } from "@langchain/core/prompts";
    import { JsonOutputFunctionsParser } from "langchain/output_parsers";

    const jsonSchema = {
    title: "Person",
    description: "Identifying information about a person.",
    type: "object",
    properties: {
    name: { title: "Name", description: "The person's name", type: "string" },
    age: { title: "Age", description: "The person's age", type: "integer" },
    fav_food: {
    title: "Fav Food",
    description: "The person's favorite food",
    type: "string",
    required: ["name", "age"],

    const model = new ChatOpenAI();
    const prompt = ChatPromptTemplate.fromMessages([
    ["human", "Human description: {description}"],

    const outputParser = new JsonOutputFunctionsParser();

    // Also works with Zod schema
    const runnable = createStructuredOutputRunnable({
    outputSchema: jsonSchema,
    llm: model,

    const response = await runnable.invoke({
    "My name's John Doe and I'm 30 years old. My favorite kind of food are chocolate chip cookies.",


    // { name: 'John Doe', age: 30, fav_food: 'chocolate chip cookies' }

Generated using TypeDoc