[{"data":1,"prerenderedAt":1573},["ShallowReactive",2],{"navigation":3,"copilot-navigation":552,"copilot-version":592,"mdc--4zkox4-key":674,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fopenai":704,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fopenai-surround":1568},[4,139,265,303,320,384,395,531],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":38},"Copilot","i-ri-sparkling-line","\u002Fdocs\u002Fcopilot","1.docs\u002F1.copilot",[10,21,39,60,85,122],{"title":11,"path":12,"stem":13,"children":14},"Getting Started","\u002Fdocs\u002Fcopilot\u002Fgetting-started","1.docs\u002F1.copilot\u002F1.getting-started\u002F1.index",[15,17],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fcopilot\u002Fgetting-started\u002Finstallation","1.docs\u002F1.copilot\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24,"children":25,"page":38},"Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration","1.docs\u002F1.copilot\u002F2.configuration",[26,30,34],{"title":27,"path":28,"stem":29},"Global Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fglobal","1.docs\u002F1.copilot\u002F2.configuration\u002F1.global",{"title":31,"path":32,"stem":33},"View Button & Field Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Flocal","1.docs\u002F1.copilot\u002F2.configuration\u002F2.local",{"title":35,"path":36,"stem":37},"System Prompt","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fsystem-prompt","1.docs\u002F1.copilot\u002F2.configuration\u002F3.system-prompt",false,{"title":40,"path":41,"stem":42,"children":43,"page":38},"Usage","\u002Fdocs\u002Fcopilot\u002Fusage","1.docs\u002F1.copilot\u002F3.usage",[44,48,52,56],{"title":45,"path":46,"stem":47},"Panel View Button","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fview-button","1.docs\u002F1.copilot\u002F3.usage\u002F1.view-button",{"title":49,"path":50,"stem":51},"Toolbar Buttons","\u002Fdocs\u002Fcopilot\u002Fusage\u002Ftoolbar-buttons","1.docs\u002F1.copilot\u002F3.usage\u002F2.toolbar-buttons",{"title":53,"path":54,"stem":55},"Inline Suggestions","\u002Fdocs\u002Fcopilot\u002Fusage\u002Finline-suggestions","1.docs\u002F1.copilot\u002F3.usage\u002F3.inline-suggestions",{"title":57,"path":58,"stem":59},"Copilot Section","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fsection","1.docs\u002F1.copilot\u002F3.usage\u002F4.section",{"title":61,"path":62,"stem":63,"children":64,"page":38},"Prompt Dialog","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog","1.docs\u002F1.copilot\u002F4.prompt-dialog",[65,69,73,77,81],{"title":66,"path":67,"stem":68},"Field Placeholders","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fplaceholders","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F1.placeholders",{"title":70,"path":71,"stem":72},"Prompt Templates","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ftemplates","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F2.templates",{"title":74,"path":75,"stem":76},"File Attachments","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ffiles","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F3.files",{"title":78,"path":79,"stem":80},"Page References","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fpage-references","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F4.page-references",{"title":82,"path":83,"stem":84},"Skills","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fskills","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F5.skills",{"title":86,"path":87,"stem":88,"children":89},"PHP Classes","\u002Fdocs\u002Fcopilot\u002Fphp-classes","1.docs\u002F1.copilot\u002F5.php-classes\u002F1.index",[90,92,96,118],{"title":91,"path":87,"stem":88},"Overview",{"title":93,"path":94,"stem":95},"Client","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient","1.docs\u002F1.copilot\u002F5.php-classes\u002F2.client",{"title":97,"path":98,"stem":99,"children":100,"defaultOpen":38},"Providers","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F1.index",[101,102,106,110,114],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"OpenAIProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fopenai","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F2.openai",{"title":107,"path":108,"stem":109},"AnthropicProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fanthropic","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F3.anthropic",{"title":111,"path":112,"stem":113},"GeminiProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fgemini","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F4.gemini",{"title":115,"path":116,"stem":117},"MistralProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fmistral","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F5.mistral",{"title":119,"path":120,"stem":121},"Exceptions","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fexceptions","1.docs\u002F1.copilot\u002F5.php-classes\u002F4.exceptions",{"title":123,"path":124,"stem":125,"children":126,"page":38},"Advanced","\u002Fdocs\u002Fcopilot\u002Fadvanced","1.docs\u002F1.copilot\u002F6.advanced",[127,131,135],{"title":128,"path":129,"stem":130},"Blocks & Layouts","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Fblocks-and-layouts","1.docs\u002F1.copilot\u002F6.advanced\u002F1.blocks-and-layouts",{"title":132,"path":133,"stem":134},"Quick Reference","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Freference","1.docs\u002F1.copilot\u002F6.advanced\u002F2.reference",{"title":136,"path":137,"stem":138},"Troubleshooting","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Ftroubleshooting","1.docs\u002F1.copilot\u002F6.advanced\u002F3.troubleshooting",{"title":140,"icon":141,"path":142,"stem":143,"children":144,"page":38},"Content Translator","i-ri-translate","\u002Fdocs\u002Fcontent-translator","1.docs\u002F2.content-translator",[145,157,168,185,194,228,240],{"title":11,"path":146,"stem":147,"children":148},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started","1.docs\u002F2.content-translator\u002F1.getting-started\u002F1.index",[149,150,153],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Finstallation","1.docs\u002F2.content-translator\u002F1.getting-started\u002F2.installation",{"title":154,"path":155,"stem":156},"Migration","\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Fmigration","1.docs\u002F2.content-translator\u002F1.getting-started\u002F3.migration",{"title":22,"path":158,"stem":159,"children":160,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration","1.docs\u002F2.content-translator\u002F2.configuration",[161,164],{"title":27,"path":162,"stem":163},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Fglobal","1.docs\u002F2.content-translator\u002F2.configuration\u002F1.global",{"title":165,"path":166,"stem":167},"View Button & Section Configuration","\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Flocal","1.docs\u002F2.content-translator\u002F2.configuration\u002F2.local",{"title":169,"path":170,"stem":171,"children":172,"page":38},"Translation Providers","\u002Fdocs\u002Fcontent-translator\u002Fproviders","1.docs\u002F2.content-translator\u002F3.providers",[173,177,181],{"title":174,"path":175,"stem":176},"DeepL","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fdeepl","1.docs\u002F2.content-translator\u002F3.providers\u002F1.deepl",{"title":178,"path":179,"stem":180},"AI Translation","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fai-translation","1.docs\u002F2.content-translator\u002F3.providers\u002F2.ai-translation",{"title":182,"path":183,"stem":184},"Custom Translator","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fcustom-translator","1.docs\u002F2.content-translator\u002F3.providers\u002F3.custom-translator",{"title":186,"path":187,"stem":188,"children":189,"page":38},"Panel","\u002Fdocs\u002Fcontent-translator\u002Fpanel","1.docs\u002F2.content-translator\u002F4.panel",[190],{"title":191,"path":192,"stem":193},"Translation Coverage","\u002Fdocs\u002Fcontent-translator\u002Fpanel\u002Ftranslation-coverage","1.docs\u002F2.content-translator\u002F4.panel\u002F1.translation-coverage",{"title":86,"path":195,"stem":196,"children":197},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes","1.docs\u002F2.content-translator\u002F5.php-classes\u002F1.index",[198,199,203,221,224],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},"Translator","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Ftranslator","1.docs\u002F2.content-translator\u002F5.php-classes\u002F2.translator",{"title":204,"path":205,"stem":206,"children":207,"defaultOpen":38},"Strategies","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F1.index",[208,209,213,217],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},"DeepLStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fdeepl-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F2.deepl-strategy",{"title":214,"path":215,"stem":216},"CopilotAIStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcopilot-ai-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F3.copilot-ai-strategy",{"title":218,"path":219,"stem":220},"CallableStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcallable-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F4.callable-strategy",{"title":119,"path":222,"stem":223},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fexceptions","1.docs\u002F2.content-translator\u002F5.php-classes\u002F4.exceptions",{"title":225,"path":226,"stem":227},"DeepL Client","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fdeepl-client","1.docs\u002F2.content-translator\u002F5.php-classes\u002F5.deepl-client",{"title":123,"path":229,"stem":230,"children":231,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fadvanced","1.docs\u002F2.content-translator\u002F6.advanced",[232,236],{"title":233,"path":234,"stem":235},"KirbyTags","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fkirbytags","1.docs\u002F2.content-translator\u002F6.advanced\u002F1.kirbytags",{"title":237,"path":238,"stem":239},"Hooks","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fhooks","1.docs\u002F2.content-translator\u002F6.advanced\u002F2.hooks",{"title":241,"path":242,"stem":243,"children":244,"page":38},"CLI & Automation","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation","1.docs\u002F2.content-translator\u002F7.cli-automation",[245,249,253,257,261],{"title":246,"path":247,"stem":248},"Single Page","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fsingle-page","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F1.single-page",{"title":250,"path":251,"stem":252},"Batch Pages","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fbatch-pages","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F2.batch-pages",{"title":254,"path":255,"stem":256},"File Metadata","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Ffile-metadata","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F3.file-metadata",{"title":258,"path":259,"stem":260},"Janitor Integration","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fjanitor","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F4.janitor",{"title":262,"path":263,"stem":264},"AI Strategy Override","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fai-strategy","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F5.ai-strategy",{"title":266,"icon":267,"path":268,"stem":269,"children":270,"page":38},"SEO Audit","i-ri-seo-line","\u002Fdocs\u002Fseo-audit","1.docs\u002F3.seo-audit",[271,279,290],{"title":11,"path":272,"stem":273,"children":274},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F1.index",[275,276],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started\u002Finstallation","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F2.installation",{"title":22,"path":280,"stem":281,"children":282,"page":38},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration","1.docs\u002F3.seo-audit\u002F2.configuration",[283,286],{"title":27,"path":284,"stem":285},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Fglobal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F1.global",{"title":287,"path":288,"stem":289},"View Button & Section","\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Flocal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F2.local",{"title":291,"path":292,"stem":293,"children":294,"page":38},"Guide","\u002Fdocs\u002Fseo-audit\u002Fguide","1.docs\u002F3.seo-audit\u002F3.guide",[295,299],{"title":296,"path":297,"stem":298},"Assessments for SEO and Readability","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fassessments","1.docs\u002F3.seo-audit\u002F3.guide\u002F1.assessments",{"title":300,"path":301,"stem":302},"Audit URL","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Faudit-url","1.docs\u002F3.seo-audit\u002F3.guide\u002F2.audit-url",{"title":304,"path":305,"stem":306,"children":307,"icon":319},"Live Preview","\u002Fdocs\u002Flive-preview","1.docs\u002F4.live-preview\u002F1.index",[308,309,312,316],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},"\u002Fdocs\u002Flive-preview\u002Fconfiguration","1.docs\u002F4.live-preview\u002F2.configuration",{"title":313,"path":314,"stem":315},"Preview Mode","\u002Fdocs\u002Flive-preview\u002Fpreview-mode","1.docs\u002F4.live-preview\u002F3.preview-mode",{"title":136,"path":317,"stem":318},"\u002Fdocs\u002Flive-preview\u002Ftroubleshooting","1.docs\u002F4.live-preview\u002F4.troubleshooting","i-ri-picture-in-picture-line",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":38},"Headless","i-ri-code-block","\u002Fdocs\u002Fheadless","1.docs\u002F5.headless",[326,334,350,370,378],{"title":11,"path":327,"stem":328,"children":329},"\u002Fdocs\u002Fheadless\u002Fgetting-started","1.docs\u002F5.headless\u002F1.getting-started\u002F1.index",[330,331],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},"\u002Fdocs\u002Fheadless\u002Fgetting-started\u002Finstallation","1.docs\u002F5.headless\u002F1.getting-started\u002F2.installation",{"title":22,"path":335,"stem":336,"children":337,"page":38},"\u002Fdocs\u002Fheadless\u002Fconfiguration","1.docs\u002F5.headless\u002F2.configuration",[338,342,346],{"title":339,"path":340,"stem":341},"Authentication","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fauthentication","1.docs\u002F5.headless\u002F2.configuration\u002F1.authentication",{"title":343,"path":344,"stem":345},"CORS","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fcors","1.docs\u002F5.headless\u002F2.configuration\u002F2.cors",{"title":347,"path":348,"stem":349},"Panel Configuration","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fpanel","1.docs\u002F5.headless\u002F2.configuration\u002F3.panel",{"title":40,"path":351,"stem":352,"children":353,"page":38},"\u002Fdocs\u002Fheadless\u002Fusage","1.docs\u002F5.headless\u002F3.usage",[354,358,362,366],{"title":355,"path":356,"stem":357},"KQL (Kirby Query Language)","\u002Fdocs\u002Fheadless\u002Fusage\u002Fkql","1.docs\u002F5.headless\u002F3.usage\u002F1.kql",{"title":359,"path":360,"stem":361},"JSON Templates","\u002Fdocs\u002Fheadless\u002Fusage\u002Fjson-templates","1.docs\u002F5.headless\u002F3.usage\u002F2.json-templates",{"title":363,"path":364,"stem":365},"Field Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Ffield-methods","1.docs\u002F5.headless\u002F3.usage\u002F3.field-methods",{"title":367,"path":368,"stem":369},"Page Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Fpage-methods","1.docs\u002F5.headless\u002F3.usage\u002F4.page-methods",{"title":123,"path":371,"stem":372,"children":373,"page":38},"\u002Fdocs\u002Fheadless\u002Fadvanced","1.docs\u002F5.headless\u002F4.advanced",[374],{"title":375,"path":376,"stem":377},"API Builder","\u002Fdocs\u002Fheadless\u002Fadvanced\u002Fapi-builder","1.docs\u002F5.headless\u002F4.advanced\u002F1.api-builder",{"title":154,"path":379,"stem":380,"children":381},"\u002Fdocs\u002Fheadless\u002Fmigration","1.docs\u002F5.headless\u002F5.migration\u002F1.index",[382],{"title":383,"path":379,"stem":380},"Version Migration",{"title":385,"path":386,"stem":387,"children":388,"icon":394},"Minimap","\u002Fdocs\u002Fminimap","1.docs\u002F6.minimap\u002F1.index",[389,390],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"Fields Support","\u002Fdocs\u002Fminimap\u002Ffields-support","1.docs\u002F6.minimap\u002F2.fields-support","i-ri-timeline-view",{"title":396,"icon":397,"path":398,"stem":399,"children":400,"page":38},"Documentation","i-ri-book-open-line","\u002Fdocs","1.docs",[401,442,484,498,504,527],{"title":5,"icon":6,"path":7,"stem":8,"children":402,"page":38},[403,407,412,418,425,437],{"title":11,"path":12,"stem":13,"children":404},[405,406],{"title":16,"path":12,"stem":13},{"title":18,"path":19,"stem":20},{"title":22,"path":23,"stem":24,"children":408,"page":38},[409,410,411],{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":40,"path":41,"stem":42,"children":413,"page":38},[414,415,416,417],{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63,"children":419,"page":38},[420,421,422,423,424],{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88,"children":426},[427,428,429,436],{"title":91,"path":87,"stem":88},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99,"children":430,"defaultOpen":38},[431,432,433,434,435],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125,"children":438,"page":38},[439,440,441],{"title":128,"path":129,"stem":130},{"title":132,"path":133,"stem":134},{"title":136,"path":137,"stem":138},{"title":140,"icon":141,"path":142,"stem":143,"children":443,"page":38},[444,449,453,458,461,473,477],{"title":11,"path":146,"stem":147,"children":445},[446,447,448],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},{"title":154,"path":155,"stem":156},{"title":22,"path":158,"stem":159,"children":450,"page":38},[451,452],{"title":27,"path":162,"stem":163},{"title":165,"path":166,"stem":167},{"title":169,"path":170,"stem":171,"children":454,"page":38},[455,456,457],{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188,"children":459,"page":38},[460],{"title":191,"path":192,"stem":193},{"title":86,"path":195,"stem":196,"children":462},[463,464,465,471,472],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},{"title":204,"path":205,"stem":206,"children":466,"defaultOpen":38},[467,468,469,470],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":218,"path":219,"stem":220},{"title":119,"path":222,"stem":223},{"title":225,"path":226,"stem":227},{"title":123,"path":229,"stem":230,"children":474,"page":38},[475,476],{"title":233,"path":234,"stem":235},{"title":237,"path":238,"stem":239},{"title":241,"path":242,"stem":243,"children":478,"page":38},[479,480,481,482,483],{"title":246,"path":247,"stem":248},{"title":250,"path":251,"stem":252},{"title":254,"path":255,"stem":256},{"title":258,"path":259,"stem":260},{"title":262,"path":263,"stem":264},{"title":266,"icon":267,"path":268,"stem":269,"children":485,"page":38},[486,490,494],{"title":11,"path":272,"stem":273,"children":487},[488,489],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},{"title":22,"path":280,"stem":281,"children":491,"page":38},[492,493],{"title":27,"path":284,"stem":285},{"title":287,"path":288,"stem":289},{"title":291,"path":292,"stem":293,"children":495,"page":38},[496,497],{"title":296,"path":297,"stem":298},{"title":300,"path":301,"stem":302},{"title":304,"path":305,"stem":306,"children":499,"icon":319},[500,501,502,503],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},{"title":313,"path":314,"stem":315},{"title":136,"path":317,"stem":318},{"title":321,"icon":322,"path":323,"stem":324,"children":505,"page":38},[506,510,515,521,524],{"title":11,"path":327,"stem":328,"children":507},[508,509],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},{"title":22,"path":335,"stem":336,"children":511,"page":38},[512,513,514],{"title":339,"path":340,"stem":341},{"title":343,"path":344,"stem":345},{"title":347,"path":348,"stem":349},{"title":40,"path":351,"stem":352,"children":516,"page":38},[517,518,519,520],{"title":355,"path":356,"stem":357},{"title":359,"path":360,"stem":361},{"title":363,"path":364,"stem":365},{"title":367,"path":368,"stem":369},{"title":123,"path":371,"stem":372,"children":522,"page":38},[523],{"title":375,"path":376,"stem":377},{"title":154,"path":379,"stem":380,"children":525},[526],{"title":383,"path":379,"stem":380},{"title":385,"path":386,"stem":387,"children":528,"icon":394},[529,530],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},{"title":532,"path":533,"stem":534,"children":535,"page":38},"Blog","\u002Fblog","blog",[536,540,544,548],{"title":537,"path":538,"stem":539},"Kirby Copilot v2.5 – Beyond Single Fields","\u002Fblog\u002Fcopilot-v25","blog\u002Fcopilot-v25",{"title":541,"path":542,"stem":543},"Kirby Copilot v3 – Your Quiet Co-Writer","\u002Fblog\u002Fcopilot-v3","blog\u002Fcopilot-v3",{"title":545,"path":546,"stem":547},"Going Open Source with Commercial Plugins","\u002Fblog\u002Fgoing-open-source","blog\u002Fgoing-open-source",{"title":549,"path":550,"stem":551},"Moving to Paddle","\u002Fblog\u002Fpaddle-migration","blog\u002Fpaddle-migration",[553,557,562,568,575,587],{"title":11,"path":12,"stem":13,"children":554},[555,556],{"title":16,"path":12,"stem":13},{"title":18,"path":19,"stem":20},{"title":22,"path":23,"stem":24,"children":558,"page":38},[559,560,561],{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":40,"path":41,"stem":42,"children":563,"page":38},[564,565,566,567],{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63,"children":569,"page":38},[570,571,572,573,574],{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88,"children":576},[577,578,579,586],{"title":91,"path":87,"stem":88},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99,"children":580,"defaultOpen":38},[581,582,583,584,585],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125,"children":588,"page":38},[589,590,591],{"title":128,"path":129,"stem":130},{"title":132,"path":133,"stem":134},{"title":136,"path":137,"stem":138},{"id":593,"title":594,"body":595,"date":666,"description":663,"extension":667,"meta":668,"navigation":669,"path":670,"seo":671,"stem":672,"__hash__":673},"versions\u002F2.copilot\u002Fchangelog\u002Fv3.8.0.md","v3.8.0",{"type":596,"value":597,"toc":662},"minimark",[598,605,611],[599,600,601],"tip",{},[602,603,604],"p",{},"Copilot's AI engine is now a first-class PHP API. Drive structured-output generation from CLI commands, model methods, or any custom workflow – the same provider stack that powers the Panel.",[602,606,607],{},[608,609,610],"strong",{},"🚀 Features",[612,613,614,626,639],"ul",{},[615,616,617,620,621,625],"li",{},[608,618,619],{},"PHP classes",": Generate text and structured JSON from any PHP context – no Panel required. See the ",[622,623,624],"a",{"href":87},"PHP classes documentation",".",[615,627,628,634,635,625],{},[608,629,630],{},[631,632,633],"code",{},"Client::generateObject()",": Generate JSON objects conforming to a JSON Schema across all supported providers with a single API. See the ",[622,636,638],{"href":637},"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient#generateobject","client reference",[615,640,641,646,647,650,651,654,655,658,659,625],{},[608,642,643],{},[631,644,645],{},"ProviderException",": A dedicated exception class wraps upstream provider failures with ",[631,648,649],{},"provider",", ",[631,652,653],{},"httpCode",", and the original ",[631,656,657],{},"Throwable",". See the ",[622,660,661],{"href":120},"exceptions documentation",{"title":663,"searchDepth":664,"depth":664,"links":665},"",2,[],"2026-05-03","md",{},true,"\u002Fcopilot\u002Fchangelog\u002Fv3.8.0",{"title":594,"description":663},"2.copilot\u002Fchangelog\u002Fv3.8.0","fx4N6UG39S9yydNQ_1ixLWAdhCfX1k8-6jC_o60CZk0",{"data":675,"body":676},{},{"type":677,"children":678},"root",[679],{"type":680,"tag":602,"props":681,"children":682},"element",{},[683,686,694,696,703],{"type":684,"value":685},"text","We love Kirby – our plugins wouldn't exist without it. Help us improve: share feedback in ",{"type":680,"tag":622,"props":687,"children":691},{"href":688,"rel":689},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fdiscussions",[690],"nofollow",[692],{"type":684,"value":693},"Discussions",{"type":684,"value":695}," or report bugs via ",{"type":680,"tag":622,"props":697,"children":700},{"href":698,"rel":699},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fissues",[690],[701],{"type":684,"value":702},"Issues",{"type":684,"value":625},{"id":705,"title":103,"body":706,"description":1564,"extension":667,"meta":1565,"navigation":669,"path":104,"seo":1566,"stem":105,"__hash__":1567},"docs\u002F1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F2.openai.md",{"type":596,"value":707,"toc":1554},[708,727,732,817,866,870,877,888,1073,1079,1085,1095,1145,1150,1154,1181,1203,1207,1216,1425,1435,1445,1449,1468,1547,1550],[602,709,710,711,714,715,717,718,722,723,625],{},"Use OpenAI directly, or route through any OpenAI-compatible endpoint (OpenRouter, Ollama, Cloudflare AI Gateway, llama.cpp) by setting ",[631,712,713],{},"baseUrl",". ",[631,716,103],{}," is also the parent class for ",[622,719,720],{"href":112},[631,721,111],{}," and ",[622,724,725],{"href":116},[631,726,115],{},[728,729,731],"h2",{"id":730},"construction","Construction",[733,734,738],"pre",{"className":735,"code":736,"language":737,"meta":663,"style":663},"language-php shiki shiki-themes github-light github-light github-dark","public function __construct(\n    ProviderConfig $config,\n    ClientContract|null $client = null,\n    Closure|null $sleep = null,\n)\n","php",[631,739,740,760,768,792,811],{"__ignoreMap":663},[741,742,745,749,752,756],"span",{"class":743,"line":744},"line",1,[741,746,748],{"class":747},"s8jYJ","public",[741,750,751],{"class":747}," function",[741,753,755],{"class":754},"sBjJW"," __construct",[741,757,759],{"class":758},"sxrX7","(\n",[741,761,762,765],{"class":743,"line":664},[741,763,764],{"class":754},"    ProviderConfig",[741,766,767],{"class":758}," $config,\n",[741,769,771,774,777,780,783,786,789],{"class":743,"line":770},3,[741,772,773],{"class":754},"    ClientContract",[741,775,776],{"class":758},"|",[741,778,779],{"class":747},"null",[741,781,782],{"class":758}," $client ",[741,784,785],{"class":747},"=",[741,787,788],{"class":754}," null",[741,790,791],{"class":758},",\n",[741,793,795,798,800,802,805,807,809],{"class":743,"line":794},4,[741,796,797],{"class":754},"    Closure",[741,799,776],{"class":758},[741,801,779],{"class":747},[741,803,804],{"class":758}," $sleep ",[741,806,785],{"class":747},[741,808,788],{"class":754},[741,810,791],{"class":758},[741,812,814],{"class":743,"line":813},5,[741,815,816],{"class":758},")\n",[818,819,820,841,856],"field-group",{},[821,822,825],"field",{"name":823,"type":824},"config","ProviderConfig",[602,826,827,828,650,831,650,834,836,837,840],{},"Resolved per-provider configuration (",[631,829,830],{},"apiKey",[631,832,833],{},"model",[631,835,713],{},", plus a passthrough ",[631,838,839],{},"options"," bag).",[821,842,845],{"name":843,"type":844},"client","ClientContract | null",[602,846,847,848,851,852,855],{},"Inject a custom ",[631,849,850],{},"OpenAI\\Contracts\\ClientContract"," (e.g. for tests). Defaults to the SDK's ",[631,853,854],{},"OpenAI::factory()"," chain.",[821,857,860],{"name":858,"type":859},"sleep","Closure | null",[602,861,862,863,625],{},"Inject a sleep function for retry timing. Defaults to PHP's built-in ",[631,864,865],{},"sleep(...)",[728,867,869],{"id":868},"methods","Methods",[871,872,874],"h3",{"id":873},"generateobject",[631,875,876],{},"generateObject",[602,878,879,880,883,884,887],{},"Builds a ",[631,881,882],{},"chat.completions"," request with ",[631,885,886],{},"response_format: { type: 'json_schema', strict: true }",", sends it, and returns the decoded JSON object.",[733,889,891],{"className":735,"code":890,"language":737,"meta":663,"style":663},"$provider->generateObject(\n    messages: [\n        ['role' => 'system', 'content' => 'Return JSON only.'],\n        ['role' => 'user', 'content' => 'Pick three colors.'],\n    ],\n    schema: [\n        'type' => 'object',\n        'properties' => ['colors' => ['type' => 'array', 'items' => ['type' => 'string']]],\n        'required' => ['colors'],\n        'additionalProperties' => false,\n    ],\n);\n",[631,892,893,906,914,942,964,969,977,990,1035,1049,1062,1067],{"__ignoreMap":663},[741,894,895,898,901,904],{"class":743,"line":744},[741,896,897],{"class":758},"$provider",[741,899,900],{"class":747},"->",[741,902,876],{"class":903},"snPdu",[741,905,759],{"class":758},[741,907,908,911],{"class":743,"line":664},[741,909,910],{"class":903},"    messages",[741,912,913],{"class":758},": [\n",[741,915,916,919,923,926,929,931,934,936,939],{"class":743,"line":770},[741,917,918],{"class":758},"        [",[741,920,922],{"class":921},"sIIMD","'role'",[741,924,925],{"class":747}," =>",[741,927,928],{"class":921}," 'system'",[741,930,650],{"class":758},[741,932,933],{"class":921},"'content'",[741,935,925],{"class":747},[741,937,938],{"class":921}," 'Return JSON only.'",[741,940,941],{"class":758},"],\n",[741,943,944,946,948,950,953,955,957,959,962],{"class":743,"line":794},[741,945,918],{"class":758},[741,947,922],{"class":921},[741,949,925],{"class":747},[741,951,952],{"class":921}," 'user'",[741,954,650],{"class":758},[741,956,933],{"class":921},[741,958,925],{"class":747},[741,960,961],{"class":921}," 'Pick three colors.'",[741,963,941],{"class":758},[741,965,966],{"class":743,"line":813},[741,967,968],{"class":758},"    ],\n",[741,970,972,975],{"class":743,"line":971},6,[741,973,974],{"class":903},"    schema",[741,976,913],{"class":758},[741,978,980,983,985,988],{"class":743,"line":979},7,[741,981,982],{"class":921},"        'type'",[741,984,925],{"class":747},[741,986,987],{"class":921}," 'object'",[741,989,791],{"class":758},[741,991,993,996,998,1001,1004,1006,1008,1011,1013,1016,1018,1021,1023,1025,1027,1029,1032],{"class":743,"line":992},8,[741,994,995],{"class":921},"        'properties'",[741,997,925],{"class":747},[741,999,1000],{"class":758}," [",[741,1002,1003],{"class":921},"'colors'",[741,1005,925],{"class":747},[741,1007,1000],{"class":758},[741,1009,1010],{"class":921},"'type'",[741,1012,925],{"class":747},[741,1014,1015],{"class":921}," 'array'",[741,1017,650],{"class":758},[741,1019,1020],{"class":921},"'items'",[741,1022,925],{"class":747},[741,1024,1000],{"class":758},[741,1026,1010],{"class":921},[741,1028,925],{"class":747},[741,1030,1031],{"class":921}," 'string'",[741,1033,1034],{"class":758},"]]],\n",[741,1036,1038,1041,1043,1045,1047],{"class":743,"line":1037},9,[741,1039,1040],{"class":921},"        'required'",[741,1042,925],{"class":747},[741,1044,1000],{"class":758},[741,1046,1003],{"class":921},[741,1048,941],{"class":758},[741,1050,1052,1055,1057,1060],{"class":743,"line":1051},10,[741,1053,1054],{"class":921},"        'additionalProperties'",[741,1056,925],{"class":747},[741,1058,1059],{"class":754}," false",[741,1061,791],{"class":758},[741,1063,1065],{"class":743,"line":1064},11,[741,1066,968],{"class":758},[741,1068,1070],{"class":743,"line":1069},12,[741,1071,1072],{"class":758},");\n",[602,1074,1075,1076,1078],{},"Throws ",[631,1077,645],{}," when the decoded response is not a JSON object, or when the upstream call returns 4xx\u002F5xx after the retry chain.",[871,1080,1082],{"id":1081},"generatetext",[631,1083,1084],{},"generateText",[602,1086,1087,1088,1090,1091,1094],{},"Sends a ",[631,1089,882],{}," request without ",[631,1092,1093],{},"response_format"," and returns the message content.",[733,1096,1098],{"className":735,"code":1097,"language":737,"meta":663,"style":663},"$provider->generateText(\n    messages: [\n        ['role' => 'user', 'content' => 'Describe three primary colors.'],\n    ],\n);\n",[631,1099,1100,1110,1116,1137,1141],{"__ignoreMap":663},[741,1101,1102,1104,1106,1108],{"class":743,"line":744},[741,1103,897],{"class":758},[741,1105,900],{"class":747},[741,1107,1084],{"class":903},[741,1109,759],{"class":758},[741,1111,1112,1114],{"class":743,"line":664},[741,1113,910],{"class":903},[741,1115,913],{"class":758},[741,1117,1118,1120,1122,1124,1126,1128,1130,1132,1135],{"class":743,"line":770},[741,1119,918],{"class":758},[741,1121,922],{"class":921},[741,1123,925],{"class":747},[741,1125,952],{"class":921},[741,1127,650],{"class":758},[741,1129,933],{"class":921},[741,1131,925],{"class":747},[741,1133,1134],{"class":921}," 'Describe three primary colors.'",[741,1136,941],{"class":758},[741,1138,1139],{"class":743,"line":794},[741,1140,968],{"class":758},[741,1142,1143],{"class":743,"line":813},[741,1144,1072],{"class":758},[602,1146,1075,1147,1149],{},[631,1148,645],{}," when the response carries no text content, or when the upstream call returns 4xx\u002F5xx after the retry chain.",[728,1151,1153],{"id":1152},"retry-behavior","Retry Behavior",[602,1155,1156,1157,1160,1161,1164,1165,1168,1169,1172,1173,1176,1177,1180],{},"Up to 3 attempts on ",[631,1158,1159],{},"RateLimitException"," (429), ",[631,1162,1163],{},"ServerException"," (5xx), ",[631,1166,1167],{},"TransporterException"," (network), and ",[631,1170,1171],{},"ErrorException"," with status 429 or ≥500. The wrapper honors ",[631,1174,1175],{},"Retry-After",", falling back to ",[631,1178,1179],{},"2^attempt"," seconds.",[602,1182,1183,1184,1186,1187,650,1190,1193,1194,1196,1197,1200,1201,625],{},"After 3 failed attempts the wrapper throws ",[631,1185,645],{}," with ",[631,1188,1189],{},"reason: 'request failed: \u003Cmessage>'",[631,1191,1192],{},"responseExcerpt"," (body shortened to 200 chars), ",[631,1195,653],{},", and ",[631,1198,1199],{},"previous"," set to the original ",[631,1202,657],{},[728,1204,1206],{"id":1205},"openai-compatible-endpoints","OpenAI-Compatible Endpoints",[602,1208,1209,1211,1212,1215],{},[631,1210,103],{}," doubles as the transport for any OpenAI-compatible API. Configure the base URL and model in ",[631,1213,1214],{},"config.php",":",[1217,1218,1219,1295,1358],"code-group",{},[733,1220,1223],{"className":735,"code":1221,"filename":1222,"language":737,"meta":663,"style":663},"'providers' => [\n    'openai' => [\n        'apiKey' => env('OPENROUTER_API_KEY'),\n        'baseUrl' => 'https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1',\n        'model' => 'anthropic\u002Fclaude-3.5-sonnet',\n    ],\n],\n","OpenRouter",[631,1224,1225,1235,1244,1263,1275,1287,1291],{"__ignoreMap":663},[741,1226,1227,1230,1232],{"class":743,"line":744},[741,1228,1229],{"class":921},"'providers'",[741,1231,925],{"class":747},[741,1233,1234],{"class":758}," [\n",[741,1236,1237,1240,1242],{"class":743,"line":664},[741,1238,1239],{"class":921},"    'openai'",[741,1241,925],{"class":747},[741,1243,1234],{"class":758},[741,1245,1246,1249,1251,1254,1257,1260],{"class":743,"line":770},[741,1247,1248],{"class":921},"        'apiKey'",[741,1250,925],{"class":747},[741,1252,1253],{"class":903}," env",[741,1255,1256],{"class":758},"(",[741,1258,1259],{"class":921},"'OPENROUTER_API_KEY'",[741,1261,1262],{"class":758},"),\n",[741,1264,1265,1268,1270,1273],{"class":743,"line":794},[741,1266,1267],{"class":921},"        'baseUrl'",[741,1269,925],{"class":747},[741,1271,1272],{"class":921}," 'https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1'",[741,1274,791],{"class":758},[741,1276,1277,1280,1282,1285],{"class":743,"line":813},[741,1278,1279],{"class":921},"        'model'",[741,1281,925],{"class":747},[741,1283,1284],{"class":921}," 'anthropic\u002Fclaude-3.5-sonnet'",[741,1286,791],{"class":758},[741,1288,1289],{"class":743,"line":971},[741,1290,968],{"class":758},[741,1292,1293],{"class":743,"line":979},[741,1294,941],{"class":758},[733,1296,1299],{"className":735,"code":1297,"filename":1298,"language":737,"meta":663,"style":663},"'providers' => [\n    'openai' => [\n        'apiKey' => 'sk-no-key-required',\n        'baseUrl' => 'https:\u002F\u002Fllama.example.com\u002Fv1',\n        'model' => 'llama-3.2-3b-instruct',\n    ],\n],\n","Self-hosted (llama.cpp)",[631,1300,1301,1309,1317,1328,1339,1350,1354],{"__ignoreMap":663},[741,1302,1303,1305,1307],{"class":743,"line":744},[741,1304,1229],{"class":921},[741,1306,925],{"class":747},[741,1308,1234],{"class":758},[741,1310,1311,1313,1315],{"class":743,"line":664},[741,1312,1239],{"class":921},[741,1314,925],{"class":747},[741,1316,1234],{"class":758},[741,1318,1319,1321,1323,1326],{"class":743,"line":770},[741,1320,1248],{"class":921},[741,1322,925],{"class":747},[741,1324,1325],{"class":921}," 'sk-no-key-required'",[741,1327,791],{"class":758},[741,1329,1330,1332,1334,1337],{"class":743,"line":794},[741,1331,1267],{"class":921},[741,1333,925],{"class":747},[741,1335,1336],{"class":921}," 'https:\u002F\u002Fllama.example.com\u002Fv1'",[741,1338,791],{"class":758},[741,1340,1341,1343,1345,1348],{"class":743,"line":813},[741,1342,1279],{"class":921},[741,1344,925],{"class":747},[741,1346,1347],{"class":921}," 'llama-3.2-3b-instruct'",[741,1349,791],{"class":758},[741,1351,1352],{"class":743,"line":971},[741,1353,968],{"class":758},[741,1355,1356],{"class":743,"line":979},[741,1357,941],{"class":758},[733,1359,1362],{"className":735,"code":1360,"filename":1361,"language":737,"meta":663,"style":663},"'providers' => [\n    'openai' => [\n        'apiKey' => env('OPENAI_API_KEY'),\n        'baseUrl' => 'https:\u002F\u002Fgateway.ai.cloudflare.com\u002Fv1\u002F{account_id}\u002F{gateway_id}\u002Fopenai',\n        'model' => 'gpt-5.4',\n    ],\n],\n","Cloudflare AI Gateway",[631,1363,1364,1372,1380,1395,1406,1417,1421],{"__ignoreMap":663},[741,1365,1366,1368,1370],{"class":743,"line":744},[741,1367,1229],{"class":921},[741,1369,925],{"class":747},[741,1371,1234],{"class":758},[741,1373,1374,1376,1378],{"class":743,"line":664},[741,1375,1239],{"class":921},[741,1377,925],{"class":747},[741,1379,1234],{"class":758},[741,1381,1382,1384,1386,1388,1390,1393],{"class":743,"line":770},[741,1383,1248],{"class":921},[741,1385,925],{"class":747},[741,1387,1253],{"class":903},[741,1389,1256],{"class":758},[741,1391,1392],{"class":921},"'OPENAI_API_KEY'",[741,1394,1262],{"class":758},[741,1396,1397,1399,1401,1404],{"class":743,"line":794},[741,1398,1267],{"class":921},[741,1400,925],{"class":747},[741,1402,1403],{"class":921}," 'https:\u002F\u002Fgateway.ai.cloudflare.com\u002Fv1\u002F{account_id}\u002F{gateway_id}\u002Fopenai'",[741,1405,791],{"class":758},[741,1407,1408,1410,1412,1415],{"class":743,"line":813},[741,1409,1279],{"class":921},[741,1411,925],{"class":747},[741,1413,1414],{"class":921}," 'gpt-5.4'",[741,1416,791],{"class":758},[741,1418,1419],{"class":743,"line":971},[741,1420,968],{"class":758},[741,1422,1423],{"class":743,"line":979},[741,1424,941],{"class":758},[602,1426,1427,1428,625],{},"For Chat Completions vs. Responses API selection, see the ",[622,1429,1431,1434],{"href":1430},"\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fglobal#api",[631,1432,1433],{},"api"," option",[1436,1437,1438],"warning",{},[602,1439,1440,1441,1444],{},"Structured output through OpenAI-compat gateways depends on the gateway's ",[631,1442,1443],{},"json_schema"," translation. Test before relying on blocks or layout generation through this path.",[728,1446,1448],{"id":1447},"provider-specific-options","Provider-Specific Options",[602,1450,1451,1452,1455,1456,650,1458,1460,1461,1463,1464,1467],{},"Anything in ",[631,1453,1454],{},"providers.openai"," that isn't ",[631,1457,830],{},[631,1459,833],{},", or ",[631,1462,713],{}," lands in ",[631,1465,1466],{},"ProviderConfig::$options"," and is spread into every request payload:",[733,1469,1471],{"className":735,"code":1470,"language":737,"meta":663,"style":663},"'providers' => [\n    'openai' => [\n        'apiKey' => env('OPENAI_API_KEY'),\n        'temperature' => 0.7,\n        'reasoning_effort' => 'medium',\n        'top_p' => 0.9,\n    ],\n],\n",[631,1472,1473,1481,1489,1503,1515,1527,1539,1543],{"__ignoreMap":663},[741,1474,1475,1477,1479],{"class":743,"line":744},[741,1476,1229],{"class":921},[741,1478,925],{"class":747},[741,1480,1234],{"class":758},[741,1482,1483,1485,1487],{"class":743,"line":664},[741,1484,1239],{"class":921},[741,1486,925],{"class":747},[741,1488,1234],{"class":758},[741,1490,1491,1493,1495,1497,1499,1501],{"class":743,"line":770},[741,1492,1248],{"class":921},[741,1494,925],{"class":747},[741,1496,1253],{"class":903},[741,1498,1256],{"class":758},[741,1500,1392],{"class":921},[741,1502,1262],{"class":758},[741,1504,1505,1508,1510,1513],{"class":743,"line":794},[741,1506,1507],{"class":921},"        'temperature'",[741,1509,925],{"class":747},[741,1511,1512],{"class":754}," 0.7",[741,1514,791],{"class":758},[741,1516,1517,1520,1522,1525],{"class":743,"line":813},[741,1518,1519],{"class":921},"        'reasoning_effort'",[741,1521,925],{"class":747},[741,1523,1524],{"class":921}," 'medium'",[741,1526,791],{"class":758},[741,1528,1529,1532,1534,1537],{"class":743,"line":971},[741,1530,1531],{"class":921},"        'top_p'",[741,1533,925],{"class":747},[741,1535,1536],{"class":754}," 0.9",[741,1538,791],{"class":758},[741,1540,1541],{"class":743,"line":979},[741,1542,968],{"class":758},[741,1544,1545],{"class":743,"line":992},[741,1546,941],{"class":758},[602,1548,1549],{},"The plugin doesn't validate option names – anything that doesn't match an OpenAI Chat Completions field is sent as-is and may be rejected upstream.",[1551,1552,1553],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":663,"searchDepth":664,"depth":664,"links":1555},[1556,1557,1561,1562,1563],{"id":730,"depth":664,"text":731},{"id":868,"depth":664,"text":869,"children":1558},[1559,1560],{"id":873,"depth":770,"text":876},{"id":1081,"depth":770,"text":1084},{"id":1152,"depth":664,"text":1153},{"id":1205,"depth":664,"text":1206},{"id":1447,"depth":664,"text":1448},"Use OpenAI directly, or any OpenAI-compatible endpoint like OpenRouter, Ollama, or Cloudflare AI Gateway via a custom base URL.",{},{"title":103,"description":1564},"wOWCBuKMSxDnArChmAD2cRBMLHsQQBno82YYYb_yCKU",[1569,1571],{"title":91,"path":98,"stem":99,"description":1570,"children":-1},"Switch between OpenAI, Anthropic, Gemini, or Mistral – or plug in your own provider – without changing your call sites.",{"title":107,"path":108,"stem":109,"description":1572,"children":-1},"Use Anthropic Claude with native API support – structured output is guaranteed, never falling back to free-form prose.",1778009925140]