[{"data":1,"prerenderedAt":1984},["ShallowReactive",2],{"navigation_docs":3,"-ai-sdk-structured-output":208,"-ai-sdk-structured-output-surround":1979},[4,33,60,82,109,151],{"title":5,"path":6,"stem":7,"children":8,"icon":32},"OpenSSL","/openssl","1.openssl/1.index",[9,12,17,22,27],{"title":10,"path":6,"stem":7,"icon":11},"Overview","i-lucide-info",{"title":13,"path":14,"stem":15,"icon":16},"Certificates","/openssl/certificates","1.openssl/2.certificates","i-lucide-file-badge",{"title":18,"path":19,"stem":20,"icon":21},"Keys","/openssl/keys","1.openssl/3.keys","i-lucide-key",{"title":23,"path":24,"stem":25,"icon":26},"Encryption","/openssl/encryption","1.openssl/4.encryption","i-lucide-shield",{"title":28,"path":29,"stem":30,"icon":31},"Verification","/openssl/verification","1.openssl/5.verification","i-lucide-check-circle","i-lucide-lock",{"title":34,"path":35,"stem":36,"children":37,"icon":59},"Voice AI","/voice-ai","2.voice-ai/1.index",[38,39,44,49,54],{"title":10,"path":35,"stem":36,"icon":11},{"title":40,"path":41,"stem":42,"icon":43},"Twilio Media Streams","/voice-ai/twilio","2.voice-ai/2.twilio","i-lucide-radio",{"title":45,"path":46,"stem":47,"icon":48},"WebSocket & Streaming","/voice-ai/websocket","2.voice-ai/3.websocket","i-lucide-cable",{"title":50,"path":51,"stem":52,"icon":53},"LLM Integration","/voice-ai/llm","2.voice-ai/4.llm","i-lucide-brain",{"title":55,"path":56,"stem":57,"icon":58},"Speech Services","/voice-ai/speech","2.voice-ai/5.speech","i-lucide-audio-lines","i-lucide-phone",{"title":61,"path":62,"stem":63,"children":64,"icon":81},"Agents","/agents","3.agents/1.index",[65,66,71,76],{"title":10,"path":62,"stem":63,"icon":11},{"title":67,"path":68,"stem":69,"icon":70},"RAG","/agents/rag","3.agents/2.rag","i-lucide-database",{"title":72,"path":73,"stem":74,"icon":75},"ReAct Agents","/agents/react-agents","3.agents/3.react-agents","i-lucide-activity",{"title":77,"path":78,"stem":79,"icon":80},"OpenAI Agent","/agents/openai-agent","3.agents/4.openai-agent","i-lucide-bot","i-lucide-users",{"title":83,"path":84,"stem":85,"children":86,"icon":88},"Context Engineering","/context-engineering","4.context-engineering/1.index",[87,89,94,99,104],{"title":83,"path":84,"stem":85,"icon":88},"i-lucide-brain-circuit",{"title":90,"path":91,"stem":92,"icon":93},"Managing The Context Window","/context-engineering/managing-context-window","4.context-engineering/2.managing-context-window","i-lucide-settings",{"title":95,"path":96,"stem":97,"icon":98},"Sliding Window Strategy","/context-engineering/sliding-window","4.context-engineering/3.sliding-window","i-lucide-arrow-left-right",{"title":100,"path":101,"stem":102,"icon":103},"Token-based Management","/context-engineering/token-based","4.context-engineering/4.token-based","i-lucide-hash",{"title":105,"path":106,"stem":107,"icon":108},"Summarization Techniques","/context-engineering/summarization","4.context-engineering/5.summarization","i-lucide-file-text",{"title":110,"path":111,"stem":112,"children":113,"icon":150},"AI SDK 6","/ai-sdk","5.ai-sdk/1.index",[114,115,120,125,130,135,140,145],{"title":10,"path":111,"stem":112,"icon":11},{"title":116,"path":117,"stem":118,"icon":119},"Installation & Setup","/ai-sdk/installation","5.ai-sdk/2.installation","i-lucide-package",{"title":121,"path":122,"stem":123,"icon":124},"Model Method","/ai-sdk/model","5.ai-sdk/3.model","i-lucide-box",{"title":126,"path":127,"stem":128,"icon":129},"generateText","/ai-sdk/generate-text","5.ai-sdk/4.generate-text","i-lucide-message-square",{"title":131,"path":132,"stem":133,"icon":134},"streamText","/ai-sdk/stream-text","5.ai-sdk/5.stream-text","i-lucide-zap",{"title":136,"path":137,"stem":138,"icon":139},"Structured Output","/ai-sdk/structured-output","5.ai-sdk/6.structured-output","i-lucide-layers",{"title":141,"path":142,"stem":143,"icon":144},"Text Embeddings","/ai-sdk/embeddings","5.ai-sdk/7.embeddings","i-lucide-git-branch",{"title":146,"path":147,"stem":148,"icon":149},"Agent Loop – ToolLoopAgent","/ai-sdk/agent-loop","5.ai-sdk/8.agent-loop","i-lucide-refresh-cw","i-lucide-cpu",{"title":152,"icon":153,"path":154,"stem":155,"children":156,"page":207},"Syntax Reference","i-lucide-book-open","/syntax-reference","999.syntax-reference",[157,162,167,172,177,182,187,192,197,202],{"title":158,"path":159,"stem":160,"icon":161},"Markdown Syntax","/syntax-reference/markdown-syntax","999.syntax-reference/1.markdown-syntax","i-lucide-heading-1",{"title":163,"path":164,"stem":165,"icon":166},"Code Blocks","/syntax-reference/code-blocks","999.syntax-reference/2.code-blocks","i-lucide-code-xml",{"title":168,"path":169,"stem":170,"icon":171},"Introduction","/syntax-reference/introduction","999.syntax-reference/2.introduction","i-lucide-house",{"title":173,"path":174,"stem":175,"icon":176},"Components","/syntax-reference/components","999.syntax-reference/3.components","i-lucide-component",{"title":178,"path":179,"stem":180,"icon":181},"Installation","/syntax-reference/installation","999.syntax-reference/3.installation","i-lucide-download",{"title":183,"path":184,"stem":185,"icon":186},"Images and Embeds","/syntax-reference/images-embeds","999.syntax-reference/4.images-embeds","i-lucide-image",{"title":188,"path":189,"stem":190,"icon":191},"Project Structure","/syntax-reference/project-structure","999.syntax-reference/4.project-structure","i-lucide-folder-tree",{"title":193,"path":194,"stem":195,"icon":196},"Studio module","/syntax-reference/studio","999.syntax-reference/5.studio","i-lucide-mouse-pointer-2",{"title":198,"path":199,"stem":200,"icon":201},"Migration","/syntax-reference/migration","999.syntax-reference/6.migration","i-lucide-replace",{"title":203,"path":204,"stem":205,"icon":206},"Troubleshooting","/syntax-reference/troubleshooting","999.syntax-reference/7.troubleshooting","i-lucide-wrench",false,{"id":209,"title":136,"body":210,"description":1972,"extension":1973,"links":1974,"meta":1975,"navigation":1976,"path":137,"seo":1977,"stem":138,"__hash__":1978},"docs/5.ai-sdk/6.structured-output.md",{"type":211,"value":212,"toc":1963},"minimark",[213,217,249,252,277,280,285,291,823,825,829,838,1275,1277,1281,1287,1583,1585,1589,1592,1852,1854,1863,1929,1931,1935,1959],[214,215,136],"h1",{"id":216},"structured-output",[218,219,220,221,225,226,229,230,234,235,238,239,241,242,244,245,248],"p",{},"In SDK 6, ",[222,223,224],"code",{},"generateObject"," and ",[222,227,228],{},"streamObject"," are ",[231,232,233],"strong",{},"deprecated",". The replacement is passing an ",[222,236,237],{},"output"," option to ",[222,240,126],{}," / ",[222,243,131],{}," using the ",[222,246,247],{},"Output"," helper.",[218,250,251],{},"Install Zod if you haven't already:",[253,254,259],"pre",{"className":255,"code":256,"language":257,"meta":258,"style":258},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add zod\n","bash","",[222,260,261],{"__ignoreMap":258},[262,263,266,270,274],"span",{"class":264,"line":265},"line",1,[262,267,269],{"class":268},"sBMFI","pnpm",[262,271,273],{"class":272},"sfazB"," add",[262,275,276],{"class":272}," zod\n",[278,279],"hr",{},[281,282,284],"h2",{"id":283},"generate-an-object-non-streaming","Generate an Object (non-streaming)",[218,286,287,288,290],{},"Use ",[222,289,126],{}," when you want the complete structured result at once:",[253,292,296],{"className":293,"code":294,"language":295,"meta":258,"style":258},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { generateText, Output } from \"ai\";\nimport { openai } from \"@ai-sdk/openai\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  recipe: z.object({\n    name: z.string().describe(\"The name of the recipe\"),\n    ingredients: z.array(\n      z.object({\n        name:   z.string().describe(\"Ingredient name\"),\n        amount: z.string().describe(\"Amount needed\"),\n      })\n    ),\n    steps: z.array(z.string().describe(\"Step-by-step instructions\")),\n  }),\n});\n\nconst { output: recipe } = await generateText({\n  model: openai(\"gpt-4o\"),\n  output: Output.object({ schema }),\n  prompt: \"Generate a recipe for a vegan chocolate cake.\",\n});\n\nconsole.log(recipe.recipe.name);         // → \"Vegan Chocolate Cake\"\nconsole.log(recipe.recipe.ingredients);  // → [{ name: \"flour\", amount: \"200g\" }, ...]\n","typescript",[222,297,298,336,359,382,389,417,437,475,493,507,541,574,583,591,632,642,652,657,686,709,736,753,762,767,798],{"__ignoreMap":258},[262,299,300,304,308,312,315,318,321,324,327,330,333],{"class":264,"line":265},[262,301,303],{"class":302},"s7zQu","import",[262,305,307],{"class":306},"sMK4o"," {",[262,309,311],{"class":310},"sTEyZ"," generateText",[262,313,314],{"class":306},",",[262,316,317],{"class":310}," Output",[262,319,320],{"class":306}," }",[262,322,323],{"class":302}," from",[262,325,326],{"class":306}," \"",[262,328,329],{"class":272},"ai",[262,331,332],{"class":306},"\"",[262,334,335],{"class":306},";\n",[262,337,339,341,343,346,348,350,352,355,357],{"class":264,"line":338},2,[262,340,303],{"class":302},[262,342,307],{"class":306},[262,344,345],{"class":310}," openai",[262,347,320],{"class":306},[262,349,323],{"class":302},[262,351,326],{"class":306},[262,353,354],{"class":272},"@ai-sdk/openai",[262,356,332],{"class":306},[262,358,335],{"class":306},[262,360,362,364,366,369,371,373,375,378,380],{"class":264,"line":361},3,[262,363,303],{"class":302},[262,365,307],{"class":306},[262,367,368],{"class":310}," z",[262,370,320],{"class":306},[262,372,323],{"class":302},[262,374,326],{"class":306},[262,376,377],{"class":272},"zod",[262,379,332],{"class":306},[262,381,335],{"class":306},[262,383,385],{"class":264,"line":384},4,[262,386,388],{"emptyLinePlaceholder":387},true,"\n",[262,390,392,396,399,402,404,407,411,414],{"class":264,"line":391},5,[262,393,395],{"class":394},"spNyl","const",[262,397,398],{"class":310}," schema ",[262,400,401],{"class":306},"=",[262,403,368],{"class":310},[262,405,406],{"class":306},".",[262,408,410],{"class":409},"s2Zo4","object",[262,412,413],{"class":310},"(",[262,415,416],{"class":306},"{\n",[262,418,420,424,427,429,431,433,435],{"class":264,"line":419},6,[262,421,423],{"class":422},"swJcz","  recipe",[262,425,426],{"class":306},":",[262,428,368],{"class":310},[262,430,406],{"class":306},[262,432,410],{"class":409},[262,434,413],{"class":310},[262,436,416],{"class":306},[262,438,440,443,445,447,449,452,455,457,460,462,464,467,469,472],{"class":264,"line":439},7,[262,441,442],{"class":422},"    name",[262,444,426],{"class":306},[262,446,368],{"class":310},[262,448,406],{"class":306},[262,450,451],{"class":409},"string",[262,453,454],{"class":310},"()",[262,456,406],{"class":306},[262,458,459],{"class":409},"describe",[262,461,413],{"class":310},[262,463,332],{"class":306},[262,465,466],{"class":272},"The name of the recipe",[262,468,332],{"class":306},[262,470,471],{"class":310},")",[262,473,474],{"class":306},",\n",[262,476,478,481,483,485,487,490],{"class":264,"line":477},8,[262,479,480],{"class":422},"    ingredients",[262,482,426],{"class":306},[262,484,368],{"class":310},[262,486,406],{"class":306},[262,488,489],{"class":409},"array",[262,491,492],{"class":310},"(\n",[262,494,496,499,501,503,505],{"class":264,"line":495},9,[262,497,498],{"class":310},"      z",[262,500,406],{"class":306},[262,502,410],{"class":409},[262,504,413],{"class":310},[262,506,416],{"class":306},[262,508,510,513,515,518,520,522,524,526,528,530,532,535,537,539],{"class":264,"line":509},10,[262,511,512],{"class":422},"        name",[262,514,426],{"class":306},[262,516,517],{"class":310},"   z",[262,519,406],{"class":306},[262,521,451],{"class":409},[262,523,454],{"class":310},[262,525,406],{"class":306},[262,527,459],{"class":409},[262,529,413],{"class":310},[262,531,332],{"class":306},[262,533,534],{"class":272},"Ingredient name",[262,536,332],{"class":306},[262,538,471],{"class":310},[262,540,474],{"class":306},[262,542,544,547,549,551,553,555,557,559,561,563,565,568,570,572],{"class":264,"line":543},11,[262,545,546],{"class":422},"        amount",[262,548,426],{"class":306},[262,550,368],{"class":310},[262,552,406],{"class":306},[262,554,451],{"class":409},[262,556,454],{"class":310},[262,558,406],{"class":306},[262,560,459],{"class":409},[262,562,413],{"class":310},[262,564,332],{"class":306},[262,566,567],{"class":272},"Amount needed",[262,569,332],{"class":306},[262,571,471],{"class":310},[262,573,474],{"class":306},[262,575,577,580],{"class":264,"line":576},12,[262,578,579],{"class":306},"      }",[262,581,582],{"class":310},")\n",[262,584,586,589],{"class":264,"line":585},13,[262,587,588],{"class":310},"    )",[262,590,474],{"class":306},[262,592,594,597,599,601,603,605,608,610,612,614,616,618,620,622,625,627,630],{"class":264,"line":593},14,[262,595,596],{"class":422},"    steps",[262,598,426],{"class":306},[262,600,368],{"class":310},[262,602,406],{"class":306},[262,604,489],{"class":409},[262,606,607],{"class":310},"(z",[262,609,406],{"class":306},[262,611,451],{"class":409},[262,613,454],{"class":310},[262,615,406],{"class":306},[262,617,459],{"class":409},[262,619,413],{"class":310},[262,621,332],{"class":306},[262,623,624],{"class":272},"Step-by-step instructions",[262,626,332],{"class":306},[262,628,629],{"class":310},"))",[262,631,474],{"class":306},[262,633,635,638,640],{"class":264,"line":634},15,[262,636,637],{"class":306},"  }",[262,639,471],{"class":310},[262,641,474],{"class":306},[262,643,645,648,650],{"class":264,"line":644},16,[262,646,647],{"class":306},"}",[262,649,471],{"class":310},[262,651,335],{"class":306},[262,653,655],{"class":264,"line":654},17,[262,656,388],{"emptyLinePlaceholder":387},[262,658,660,662,664,667,669,672,674,677,680,682,684],{"class":264,"line":659},18,[262,661,395],{"class":394},[262,663,307],{"class":306},[262,665,666],{"class":422}," output",[262,668,426],{"class":306},[262,670,671],{"class":310}," recipe ",[262,673,647],{"class":306},[262,675,676],{"class":306}," =",[262,678,679],{"class":302}," await",[262,681,311],{"class":409},[262,683,413],{"class":310},[262,685,416],{"class":306},[262,687,689,692,694,696,698,700,703,705,707],{"class":264,"line":688},19,[262,690,691],{"class":422},"  model",[262,693,426],{"class":306},[262,695,345],{"class":409},[262,697,413],{"class":310},[262,699,332],{"class":306},[262,701,702],{"class":272},"gpt-4o",[262,704,332],{"class":306},[262,706,471],{"class":310},[262,708,474],{"class":306},[262,710,712,715,717,719,721,723,725,728,730,732,734],{"class":264,"line":711},20,[262,713,714],{"class":422},"  output",[262,716,426],{"class":306},[262,718,317],{"class":310},[262,720,406],{"class":306},[262,722,410],{"class":409},[262,724,413],{"class":310},[262,726,727],{"class":306},"{",[262,729,398],{"class":310},[262,731,647],{"class":306},[262,733,471],{"class":310},[262,735,474],{"class":306},[262,737,739,742,744,746,749,751],{"class":264,"line":738},21,[262,740,741],{"class":422},"  prompt",[262,743,426],{"class":306},[262,745,326],{"class":306},[262,747,748],{"class":272},"Generate a recipe for a vegan chocolate cake.",[262,750,332],{"class":306},[262,752,474],{"class":306},[262,754,756,758,760],{"class":264,"line":755},22,[262,757,647],{"class":306},[262,759,471],{"class":310},[262,761,335],{"class":306},[262,763,765],{"class":264,"line":764},23,[262,766,388],{"emptyLinePlaceholder":387},[262,768,770,773,775,778,781,783,786,788,791,794],{"class":264,"line":769},24,[262,771,772],{"class":310},"console",[262,774,406],{"class":306},[262,776,777],{"class":409},"log",[262,779,780],{"class":310},"(recipe",[262,782,406],{"class":306},[262,784,785],{"class":310},"recipe",[262,787,406],{"class":306},[262,789,790],{"class":310},"name)",[262,792,793],{"class":306},";",[262,795,797],{"class":796},"sHwdD","         // → \"Vegan Chocolate Cake\"\n",[262,799,801,803,805,807,809,811,813,815,818,820],{"class":264,"line":800},25,[262,802,772],{"class":310},[262,804,406],{"class":306},[262,806,777],{"class":409},[262,808,780],{"class":310},[262,810,406],{"class":306},[262,812,785],{"class":310},[262,814,406],{"class":306},[262,816,817],{"class":310},"ingredients)",[262,819,793],{"class":306},[262,821,822],{"class":796},"  // → [{ name: \"flour\", amount: \"200g\" }, ...]\n",[278,824],{},[281,826,828],{"id":827},"stream-structured-output","Stream Structured Output",[218,830,287,831,833,834,837],{},[222,832,131],{}," to observe the object ",[231,835,836],{},"grow progressively"," — great for long outputs or when you want to show partial results in a UI:",[253,839,841],{"className":293,"code":840,"language":295,"meta":258,"style":258},"import { streamText, Output } from \"ai\";\nimport { openai } from \"@ai-sdk/openai\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  recipe: z.object({\n    name: z.string().describe(\"The name of the recipe\"),\n    ingredients: z.array(\n      z.object({\n        name:   z.string().describe(\"Ingredient name\"),\n        amount: z.string().describe(\"Amount needed\"),\n      })\n    ),\n    steps: z.array(z.string().describe(\"Step instructions\")),\n  }),\n});\n\nconst { partialOutputStream } = await streamText({\n  model: openai(\"gpt-4o\"),\n  output: Output.object({ schema }),\n  prompt: \"Generate a recipe for a vegan chocolate cake.\",\n});\n\nfor await (const partialObject of partialOutputStream) {\n  // partialObject grows as more tokens arrive\n  console.log(partialObject);\n}\n",[222,842,843,868,888,908,912,930,946,976,990,1002,1032,1062,1068,1074,1111,1119,1127,1131,1152,1172,1196,1210,1218,1222,1245,1250,1269],{"__ignoreMap":258},[262,844,845,847,849,852,854,856,858,860,862,864,866],{"class":264,"line":265},[262,846,303],{"class":302},[262,848,307],{"class":306},[262,850,851],{"class":310}," streamText",[262,853,314],{"class":306},[262,855,317],{"class":310},[262,857,320],{"class":306},[262,859,323],{"class":302},[262,861,326],{"class":306},[262,863,329],{"class":272},[262,865,332],{"class":306},[262,867,335],{"class":306},[262,869,870,872,874,876,878,880,882,884,886],{"class":264,"line":338},[262,871,303],{"class":302},[262,873,307],{"class":306},[262,875,345],{"class":310},[262,877,320],{"class":306},[262,879,323],{"class":302},[262,881,326],{"class":306},[262,883,354],{"class":272},[262,885,332],{"class":306},[262,887,335],{"class":306},[262,889,890,892,894,896,898,900,902,904,906],{"class":264,"line":361},[262,891,303],{"class":302},[262,893,307],{"class":306},[262,895,368],{"class":310},[262,897,320],{"class":306},[262,899,323],{"class":302},[262,901,326],{"class":306},[262,903,377],{"class":272},[262,905,332],{"class":306},[262,907,335],{"class":306},[262,909,910],{"class":264,"line":384},[262,911,388],{"emptyLinePlaceholder":387},[262,913,914,916,918,920,922,924,926,928],{"class":264,"line":391},[262,915,395],{"class":394},[262,917,398],{"class":310},[262,919,401],{"class":306},[262,921,368],{"class":310},[262,923,406],{"class":306},[262,925,410],{"class":409},[262,927,413],{"class":310},[262,929,416],{"class":306},[262,931,932,934,936,938,940,942,944],{"class":264,"line":419},[262,933,423],{"class":422},[262,935,426],{"class":306},[262,937,368],{"class":310},[262,939,406],{"class":306},[262,941,410],{"class":409},[262,943,413],{"class":310},[262,945,416],{"class":306},[262,947,948,950,952,954,956,958,960,962,964,966,968,970,972,974],{"class":264,"line":439},[262,949,442],{"class":422},[262,951,426],{"class":306},[262,953,368],{"class":310},[262,955,406],{"class":306},[262,957,451],{"class":409},[262,959,454],{"class":310},[262,961,406],{"class":306},[262,963,459],{"class":409},[262,965,413],{"class":310},[262,967,332],{"class":306},[262,969,466],{"class":272},[262,971,332],{"class":306},[262,973,471],{"class":310},[262,975,474],{"class":306},[262,977,978,980,982,984,986,988],{"class":264,"line":477},[262,979,480],{"class":422},[262,981,426],{"class":306},[262,983,368],{"class":310},[262,985,406],{"class":306},[262,987,489],{"class":409},[262,989,492],{"class":310},[262,991,992,994,996,998,1000],{"class":264,"line":495},[262,993,498],{"class":310},[262,995,406],{"class":306},[262,997,410],{"class":409},[262,999,413],{"class":310},[262,1001,416],{"class":306},[262,1003,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030],{"class":264,"line":509},[262,1005,512],{"class":422},[262,1007,426],{"class":306},[262,1009,517],{"class":310},[262,1011,406],{"class":306},[262,1013,451],{"class":409},[262,1015,454],{"class":310},[262,1017,406],{"class":306},[262,1019,459],{"class":409},[262,1021,413],{"class":310},[262,1023,332],{"class":306},[262,1025,534],{"class":272},[262,1027,332],{"class":306},[262,1029,471],{"class":310},[262,1031,474],{"class":306},[262,1033,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060],{"class":264,"line":543},[262,1035,546],{"class":422},[262,1037,426],{"class":306},[262,1039,368],{"class":310},[262,1041,406],{"class":306},[262,1043,451],{"class":409},[262,1045,454],{"class":310},[262,1047,406],{"class":306},[262,1049,459],{"class":409},[262,1051,413],{"class":310},[262,1053,332],{"class":306},[262,1055,567],{"class":272},[262,1057,332],{"class":306},[262,1059,471],{"class":310},[262,1061,474],{"class":306},[262,1063,1064,1066],{"class":264,"line":576},[262,1065,579],{"class":306},[262,1067,582],{"class":310},[262,1069,1070,1072],{"class":264,"line":585},[262,1071,588],{"class":310},[262,1073,474],{"class":306},[262,1075,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1105,1107,1109],{"class":264,"line":593},[262,1077,596],{"class":422},[262,1079,426],{"class":306},[262,1081,368],{"class":310},[262,1083,406],{"class":306},[262,1085,489],{"class":409},[262,1087,607],{"class":310},[262,1089,406],{"class":306},[262,1091,451],{"class":409},[262,1093,454],{"class":310},[262,1095,406],{"class":306},[262,1097,459],{"class":409},[262,1099,413],{"class":310},[262,1101,332],{"class":306},[262,1103,1104],{"class":272},"Step instructions",[262,1106,332],{"class":306},[262,1108,629],{"class":310},[262,1110,474],{"class":306},[262,1112,1113,1115,1117],{"class":264,"line":634},[262,1114,637],{"class":306},[262,1116,471],{"class":310},[262,1118,474],{"class":306},[262,1120,1121,1123,1125],{"class":264,"line":644},[262,1122,647],{"class":306},[262,1124,471],{"class":310},[262,1126,335],{"class":306},[262,1128,1129],{"class":264,"line":654},[262,1130,388],{"emptyLinePlaceholder":387},[262,1132,1133,1135,1137,1140,1142,1144,1146,1148,1150],{"class":264,"line":659},[262,1134,395],{"class":394},[262,1136,307],{"class":306},[262,1138,1139],{"class":310}," partialOutputStream ",[262,1141,647],{"class":306},[262,1143,676],{"class":306},[262,1145,679],{"class":302},[262,1147,851],{"class":409},[262,1149,413],{"class":310},[262,1151,416],{"class":306},[262,1153,1154,1156,1158,1160,1162,1164,1166,1168,1170],{"class":264,"line":688},[262,1155,691],{"class":422},[262,1157,426],{"class":306},[262,1159,345],{"class":409},[262,1161,413],{"class":310},[262,1163,332],{"class":306},[262,1165,702],{"class":272},[262,1167,332],{"class":306},[262,1169,471],{"class":310},[262,1171,474],{"class":306},[262,1173,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194],{"class":264,"line":711},[262,1175,714],{"class":422},[262,1177,426],{"class":306},[262,1179,317],{"class":310},[262,1181,406],{"class":306},[262,1183,410],{"class":409},[262,1185,413],{"class":310},[262,1187,727],{"class":306},[262,1189,398],{"class":310},[262,1191,647],{"class":306},[262,1193,471],{"class":310},[262,1195,474],{"class":306},[262,1197,1198,1200,1202,1204,1206,1208],{"class":264,"line":738},[262,1199,741],{"class":422},[262,1201,426],{"class":306},[262,1203,326],{"class":306},[262,1205,748],{"class":272},[262,1207,332],{"class":306},[262,1209,474],{"class":306},[262,1211,1212,1214,1216],{"class":264,"line":755},[262,1213,647],{"class":306},[262,1215,471],{"class":310},[262,1217,335],{"class":306},[262,1219,1220],{"class":264,"line":764},[262,1221,388],{"emptyLinePlaceholder":387},[262,1223,1224,1227,1229,1232,1234,1237,1240,1243],{"class":264,"line":769},[262,1225,1226],{"class":302},"for",[262,1228,679],{"class":302},[262,1230,1231],{"class":310}," (",[262,1233,395],{"class":394},[262,1235,1236],{"class":310}," partialObject ",[262,1238,1239],{"class":306},"of",[262,1241,1242],{"class":310}," partialOutputStream) ",[262,1244,416],{"class":306},[262,1246,1247],{"class":264,"line":800},[262,1248,1249],{"class":796},"  // partialObject grows as more tokens arrive\n",[262,1251,1253,1256,1258,1260,1262,1265,1267],{"class":264,"line":1252},26,[262,1254,1255],{"class":310},"  console",[262,1257,406],{"class":306},[262,1259,777],{"class":409},[262,1261,413],{"class":422},[262,1263,1264],{"class":310},"partialObject",[262,1266,471],{"class":422},[262,1268,335],{"class":306},[262,1270,1272],{"class":264,"line":1271},27,[262,1273,1274],{"class":306},"}\n",[278,1276],{},[281,1278,1280],{"id":1279},"generate-an-array","Generate an Array",[218,1282,1283,1284,426],{},"Wrap a schema with ",[222,1285,1286],{},"z.array(...)",[253,1288,1290],{"className":293,"code":1289,"language":295,"meta":258,"style":258},"const ProductSchema = z.object({\n  productName: z.string(),\n  price:        z.number().positive(),\n  rating:       z.enum([\"★\", \"★★\", \"★★★\", \"★★★★\", \"★★★★★\"]),\n});\n\nconst { output: recommendations } = await generateText({\n  model: openai(\"gpt-4o\"),\n  output: Output.object({ schema: z.object({ items: z.array(ProductSchema) }) }),\n  prompt: \"Give me three home office product recommendations.\",\n});\n\nconsole.log(recommendations.items);\n// → [{ productName: \"Ergonomic Chair\", price: 199, rating: \"★★★★\" }, ...]\n",[222,1291,1292,1311,1328,1354,1420,1428,1432,1457,1477,1533,1548,1556,1560,1578],{"__ignoreMap":258},[262,1293,1294,1296,1299,1301,1303,1305,1307,1309],{"class":264,"line":265},[262,1295,395],{"class":394},[262,1297,1298],{"class":310}," ProductSchema ",[262,1300,401],{"class":306},[262,1302,368],{"class":310},[262,1304,406],{"class":306},[262,1306,410],{"class":409},[262,1308,413],{"class":310},[262,1310,416],{"class":306},[262,1312,1313,1316,1318,1320,1322,1324,1326],{"class":264,"line":338},[262,1314,1315],{"class":422},"  productName",[262,1317,426],{"class":306},[262,1319,368],{"class":310},[262,1321,406],{"class":306},[262,1323,451],{"class":409},[262,1325,454],{"class":310},[262,1327,474],{"class":306},[262,1329,1330,1333,1335,1338,1340,1343,1345,1347,1350,1352],{"class":264,"line":361},[262,1331,1332],{"class":422},"  price",[262,1334,426],{"class":306},[262,1336,1337],{"class":310},"        z",[262,1339,406],{"class":306},[262,1341,1342],{"class":409},"number",[262,1344,454],{"class":310},[262,1346,406],{"class":306},[262,1348,1349],{"class":409},"positive",[262,1351,454],{"class":310},[262,1353,474],{"class":306},[262,1355,1356,1359,1361,1364,1366,1369,1372,1374,1377,1379,1381,1383,1386,1388,1390,1392,1395,1397,1399,1401,1404,1406,1408,1410,1413,1415,1418],{"class":264,"line":384},[262,1357,1358],{"class":422},"  rating",[262,1360,426],{"class":306},[262,1362,1363],{"class":310},"       z",[262,1365,406],{"class":306},[262,1367,1368],{"class":409},"enum",[262,1370,1371],{"class":310},"([",[262,1373,332],{"class":306},[262,1375,1376],{"class":272},"★",[262,1378,332],{"class":306},[262,1380,314],{"class":306},[262,1382,326],{"class":306},[262,1384,1385],{"class":272},"★★",[262,1387,332],{"class":306},[262,1389,314],{"class":306},[262,1391,326],{"class":306},[262,1393,1394],{"class":272},"★★★",[262,1396,332],{"class":306},[262,1398,314],{"class":306},[262,1400,326],{"class":306},[262,1402,1403],{"class":272},"★★★★",[262,1405,332],{"class":306},[262,1407,314],{"class":306},[262,1409,326],{"class":306},[262,1411,1412],{"class":272},"★★★★★",[262,1414,332],{"class":306},[262,1416,1417],{"class":310},"])",[262,1419,474],{"class":306},[262,1421,1422,1424,1426],{"class":264,"line":391},[262,1423,647],{"class":306},[262,1425,471],{"class":310},[262,1427,335],{"class":306},[262,1429,1430],{"class":264,"line":419},[262,1431,388],{"emptyLinePlaceholder":387},[262,1433,1434,1436,1438,1440,1442,1445,1447,1449,1451,1453,1455],{"class":264,"line":439},[262,1435,395],{"class":394},[262,1437,307],{"class":306},[262,1439,666],{"class":422},[262,1441,426],{"class":306},[262,1443,1444],{"class":310}," recommendations ",[262,1446,647],{"class":306},[262,1448,676],{"class":306},[262,1450,679],{"class":302},[262,1452,311],{"class":409},[262,1454,413],{"class":310},[262,1456,416],{"class":306},[262,1458,1459,1461,1463,1465,1467,1469,1471,1473,1475],{"class":264,"line":477},[262,1460,691],{"class":422},[262,1462,426],{"class":306},[262,1464,345],{"class":409},[262,1466,413],{"class":310},[262,1468,332],{"class":306},[262,1470,702],{"class":272},[262,1472,332],{"class":306},[262,1474,471],{"class":310},[262,1476,474],{"class":306},[262,1478,1479,1481,1483,1485,1487,1489,1491,1493,1496,1498,1500,1502,1504,1506,1508,1511,1513,1515,1517,1519,1522,1524,1527,1529,1531],{"class":264,"line":495},[262,1480,714],{"class":422},[262,1482,426],{"class":306},[262,1484,317],{"class":310},[262,1486,406],{"class":306},[262,1488,410],{"class":409},[262,1490,413],{"class":310},[262,1492,727],{"class":306},[262,1494,1495],{"class":422}," schema",[262,1497,426],{"class":306},[262,1499,368],{"class":310},[262,1501,406],{"class":306},[262,1503,410],{"class":409},[262,1505,413],{"class":310},[262,1507,727],{"class":306},[262,1509,1510],{"class":422}," items",[262,1512,426],{"class":306},[262,1514,368],{"class":310},[262,1516,406],{"class":306},[262,1518,489],{"class":409},[262,1520,1521],{"class":310},"(ProductSchema) ",[262,1523,647],{"class":306},[262,1525,1526],{"class":310},") ",[262,1528,647],{"class":306},[262,1530,471],{"class":310},[262,1532,474],{"class":306},[262,1534,1535,1537,1539,1541,1544,1546],{"class":264,"line":509},[262,1536,741],{"class":422},[262,1538,426],{"class":306},[262,1540,326],{"class":306},[262,1542,1543],{"class":272},"Give me three home office product recommendations.",[262,1545,332],{"class":306},[262,1547,474],{"class":306},[262,1549,1550,1552,1554],{"class":264,"line":543},[262,1551,647],{"class":306},[262,1553,471],{"class":310},[262,1555,335],{"class":306},[262,1557,1558],{"class":264,"line":576},[262,1559,388],{"emptyLinePlaceholder":387},[262,1561,1562,1564,1566,1568,1571,1573,1576],{"class":264,"line":585},[262,1563,772],{"class":310},[262,1565,406],{"class":306},[262,1567,777],{"class":409},[262,1569,1570],{"class":310},"(recommendations",[262,1572,406],{"class":306},[262,1574,1575],{"class":310},"items)",[262,1577,335],{"class":306},[262,1579,1580],{"class":264,"line":593},[262,1581,1582],{"class":796},"// → [{ productName: \"Ergonomic Chair\", price: 199, rating: \"★★★★\" }, ...]\n",[278,1584],{},[281,1586,1588],{"id":1587},"generate-an-enum","Generate an Enum",[218,1590,1591],{},"Classify input into a fixed set of values:",[253,1593,1595],{"className":293,"code":1594,"language":295,"meta":258,"style":258},"const SentimentSchema = z.object({\n  sentiment: z.enum([\"positive\", \"neutral\", \"negative\"]),\n  confidence: z.number().min(0).max(1),\n});\n\nconst { output } = await generateText({\n  model: openai(\"gpt-4o\"),\n  output: Output.object({ schema: SentimentSchema }),\n  prompt: 'Classify the sentiment: \"I absolutely love this product!\"',\n});\n\nconsole.log(output.sentiment);   // → \"positive\"\nconsole.log(output.confidence);  // → 0.97\n",[222,1596,1597,1616,1659,1701,1709,1713,1734,1754,1782,1799,1807,1811,1832],{"__ignoreMap":258},[262,1598,1599,1601,1604,1606,1608,1610,1612,1614],{"class":264,"line":265},[262,1600,395],{"class":394},[262,1602,1603],{"class":310}," SentimentSchema ",[262,1605,401],{"class":306},[262,1607,368],{"class":310},[262,1609,406],{"class":306},[262,1611,410],{"class":409},[262,1613,413],{"class":310},[262,1615,416],{"class":306},[262,1617,1618,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1644,1646,1648,1650,1653,1655,1657],{"class":264,"line":338},[262,1619,1620],{"class":422},"  sentiment",[262,1622,426],{"class":306},[262,1624,368],{"class":310},[262,1626,406],{"class":306},[262,1628,1368],{"class":409},[262,1630,1371],{"class":310},[262,1632,332],{"class":306},[262,1634,1349],{"class":272},[262,1636,332],{"class":306},[262,1638,314],{"class":306},[262,1640,326],{"class":306},[262,1642,1643],{"class":272},"neutral",[262,1645,332],{"class":306},[262,1647,314],{"class":306},[262,1649,326],{"class":306},[262,1651,1652],{"class":272},"negative",[262,1654,332],{"class":306},[262,1656,1417],{"class":310},[262,1658,474],{"class":306},[262,1660,1661,1664,1666,1668,1670,1672,1674,1676,1679,1681,1685,1687,1689,1692,1694,1697,1699],{"class":264,"line":361},[262,1662,1663],{"class":422},"  confidence",[262,1665,426],{"class":306},[262,1667,368],{"class":310},[262,1669,406],{"class":306},[262,1671,1342],{"class":409},[262,1673,454],{"class":310},[262,1675,406],{"class":306},[262,1677,1678],{"class":409},"min",[262,1680,413],{"class":310},[262,1682,1684],{"class":1683},"sbssI","0",[262,1686,471],{"class":310},[262,1688,406],{"class":306},[262,1690,1691],{"class":409},"max",[262,1693,413],{"class":310},[262,1695,1696],{"class":1683},"1",[262,1698,471],{"class":310},[262,1700,474],{"class":306},[262,1702,1703,1705,1707],{"class":264,"line":384},[262,1704,647],{"class":306},[262,1706,471],{"class":310},[262,1708,335],{"class":306},[262,1710,1711],{"class":264,"line":391},[262,1712,388],{"emptyLinePlaceholder":387},[262,1714,1715,1717,1719,1722,1724,1726,1728,1730,1732],{"class":264,"line":419},[262,1716,395],{"class":394},[262,1718,307],{"class":306},[262,1720,1721],{"class":310}," output ",[262,1723,647],{"class":306},[262,1725,676],{"class":306},[262,1727,679],{"class":302},[262,1729,311],{"class":409},[262,1731,413],{"class":310},[262,1733,416],{"class":306},[262,1735,1736,1738,1740,1742,1744,1746,1748,1750,1752],{"class":264,"line":439},[262,1737,691],{"class":422},[262,1739,426],{"class":306},[262,1741,345],{"class":409},[262,1743,413],{"class":310},[262,1745,332],{"class":306},[262,1747,702],{"class":272},[262,1749,332],{"class":306},[262,1751,471],{"class":310},[262,1753,474],{"class":306},[262,1755,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780],{"class":264,"line":477},[262,1757,714],{"class":422},[262,1759,426],{"class":306},[262,1761,317],{"class":310},[262,1763,406],{"class":306},[262,1765,410],{"class":409},[262,1767,413],{"class":310},[262,1769,727],{"class":306},[262,1771,1495],{"class":422},[262,1773,426],{"class":306},[262,1775,1603],{"class":310},[262,1777,647],{"class":306},[262,1779,471],{"class":310},[262,1781,474],{"class":306},[262,1783,1784,1786,1788,1791,1794,1797],{"class":264,"line":495},[262,1785,741],{"class":422},[262,1787,426],{"class":306},[262,1789,1790],{"class":306}," '",[262,1792,1793],{"class":272},"Classify the sentiment: \"I absolutely love this product!\"",[262,1795,1796],{"class":306},"'",[262,1798,474],{"class":306},[262,1800,1801,1803,1805],{"class":264,"line":509},[262,1802,647],{"class":306},[262,1804,471],{"class":310},[262,1806,335],{"class":306},[262,1808,1809],{"class":264,"line":543},[262,1810,388],{"emptyLinePlaceholder":387},[262,1812,1813,1815,1817,1819,1822,1824,1827,1829],{"class":264,"line":576},[262,1814,772],{"class":310},[262,1816,406],{"class":306},[262,1818,777],{"class":409},[262,1820,1821],{"class":310},"(output",[262,1823,406],{"class":306},[262,1825,1826],{"class":310},"sentiment)",[262,1828,793],{"class":306},[262,1830,1831],{"class":796},"   // → \"positive\"\n",[262,1833,1834,1836,1838,1840,1842,1844,1847,1849],{"class":264,"line":585},[262,1835,772],{"class":310},[262,1837,406],{"class":306},[262,1839,777],{"class":409},[262,1841,1821],{"class":310},[262,1843,406],{"class":306},[262,1845,1846],{"class":310},"confidence)",[262,1848,793],{"class":306},[262,1850,1851],{"class":796},"  // → 0.97\n",[278,1853],{},[281,1855,1857,1858,1860,1861],{"id":1856},"when-to-use-generatetext-vs-streamtext","When to Use ",[222,1859,126],{}," vs ",[222,1862,131],{},[1864,1865,1866,1883],"table",{},[1867,1868,1869],"thead",{},[1870,1871,1872,1875,1879],"tr",{},[1873,1874],"th",{},[1873,1876,1877],{},[222,1878,126],{},[1873,1880,1881],{},[222,1882,131],{},[1884,1885,1886,1900,1916],"tbody",{},[1870,1887,1888,1894,1897],{},[1889,1890,1891],"td",{},[231,1892,1893],{},"When",[1889,1895,1896],{},"Small–medium outputs, batch jobs",[1889,1898,1899],{},"Large objects, real-time UI updates",[1870,1901,1902,1907,1910],{},[1889,1903,1904],{},[231,1905,1906],{},"Result",[1889,1908,1909],{},"Fully parsed object on completion",[1889,1911,1912,1915],{},[222,1913,1914],{},"partialOutputStream"," of growing object",[1870,1917,1918,1923,1926],{},[1889,1919,1920],{},[231,1921,1922],{},"Latency",[1889,1924,1925],{},"Waits until fully generated",[1889,1927,1928],{},"First tokens arrive immediately",[278,1930],{},[281,1932,1934],{"id":1933},"how-validation-works","How Validation Works",[1936,1937,1938,1946,1953],"ul",{},[1939,1940,1941,1942,1945],"li",{},"The SDK validates the model's response against the Zod schema ",[231,1943,1944],{},"client-side"," after generation.",[1939,1947,1948,1949,1952],{},"If it doesn't match, a ",[222,1950,1951],{},"SchemaValidationError"," is thrown with a detailed path.",[1939,1954,1955,1956,1958],{},"This guarantees ",[222,1957,237],{}," is always correctly typed at runtime and compile time.",[1960,1961,1962],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":258,"searchDepth":338,"depth":338,"links":1964},[1965,1966,1967,1968,1969,1971],{"id":283,"depth":338,"text":284},{"id":827,"depth":338,"text":828},{"id":1279,"depth":338,"text":1280},{"id":1587,"depth":338,"text":1588},{"id":1856,"depth":338,"text":1970},"When to Use generateText vs streamText",{"id":1933,"depth":338,"text":1934},"Generate type-safe structured objects, arrays, and enums using Zod schemas in AI SDK 6.","md",null,{},{"icon":139},{"title":136,"description":1972},"4VLWnGkcBxhUpebGqRChGJUf3D3QOXUZIdNh-yIf3g4",[1980,1982],{"title":131,"path":132,"stem":133,"description":1981,"icon":134,"children":-1},"Stream text responses token-by-token using AI SDK 6.",{"title":141,"path":142,"stem":143,"description":1983,"icon":144,"children":-1},"Generate vector embeddings for text using AI SDK 6.",1772944812009]