De Laravel AI SDK ondersteunt meerdere grote AI-services. Voor een interne gateway, een on-premises modelserver of een nieuwe service kun je een custom provider registreren. Voor OpenAI-compatible endpoints is de ingebouwde openai-compatible driver meestal voldoende.
Een provider kiest modellen en bevat configuratie. Een gateway verstuurt de request voor één stap. Providers implementeren feature-specifieke contracts:
use Laravel\Ai\Contracts\Gateway\StepTextGateway;use Laravel\Ai\Contracts\Providers\TextProvider;use Laravel\Ai\Providers\Concerns\GeneratesText;use Laravel\Ai\Providers\Concerns\HasTextGateway;use Laravel\Ai\Providers\Concerns\StreamsText;use Laravel\Ai\Providers\Provider;class MyProvider extends Provider implements TextProvider{ use GeneratesText; use HasTextGateway; use StreamsText; public function textGateway(): StepTextGateway { return $this->textGateway ??= new MyGateway; } public function defaultTextModel(): string { return $this->config['models']['text']['default'] ?? 'my-model'; } public function cheapestTextModel(): string { return $this->defaultTextModel(); } public function smartestTextModel(): string { return $this->defaultTextModel(); }}
Registreer de provider met AiManager::extend() in AppServiceProvider en voeg de driver toe aan config/ai.php. Een StepTextGateway verwerkt één stap; de TextGenerationLoop handelt volgende tool calls af.
De oude TextGateway-interface is in SDK 0.9 verwijderd. Nieuwe gateways moeten StepTextGateway implementeren.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Knowledge of Laravel","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/invokable/AuZ0xql2mAbUyZ99/logo/light.svg?fit=max\u0026auto=format\u0026n=AuZ0xql2mAbUyZ99\u0026q=85\u0026s=df0b7397202a6aa1c1f321620c5aa146","dark":"https://mintcdn.com/invokable/AuZ0xql2mAbUyZ99/logo/dark.svg?fit=max\u0026auto=format\u0026n=AuZ0xql2mAbUyZ99\u0026q=85\u0026s=a8a0340d86ff8aa90e9adfc98a0362d7","href":"/"},"favicon":"https://mintcdn.com/invokable/AuZ0xql2mAbUyZ99/favicon.svg?fit=max\u0026auto=format\u0026n=AuZ0xql2mAbUyZ99\u0026q=85\u0026s=8f5a03a681c95d31803fc237b5811065","api":{"playground":{"display":"simple"}},"navbar":{},"footer":{"socials":{"github":"https://github.com/invokable"}},"seo":{"metatags":{"canonical":"https://kawax.biz"},"indexing":"all"},"styling":{"eyebrows":"breadcrumbs","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"navigation":{"languages":[{"language":"jp","default":true,"href":"jp/packages/laravel-boost-copilot-cli"},{"language":"en","href":"en/packages/laravel-boost-copilot-cli"},{"language":"de","href":"de/packages/laravel-boost-copilot-cli"},{"language":"es","href":"es/packages/laravel-boost-copilot-cli"},{"language":"fr","href":"fr/packages/laravel-boost-copilot-cli"},{"language":"it","href":"it/packages/laravel-boost-copilot-cli"},{"language":"ko","href":"ko/packages/laravel-boost-copilot-cli"},{"language":"nl","href":"nl/packages/laravel-boost-copilot-cli"},{"language":"zh-Hans","href":"zh-CN/packages/laravel-boost-copilot-cli"},{"language":"zh-Hant","href":"zh-TW/packages/laravel-boost-copilot-cli"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"invokable","hasAudioNarration":true,"actualSubdomain":"invokable","customDomains":["kawax.biz"],"gitSource":{"type":"github","owner":"kawax","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb96e3b0fd5b4c7f1f6c3e","collectionId":"f0bcf620-0bf1-45ee-83db-5ae11df4d105","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb96e3b0fd5b4c7f1f6c3e"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb96e3b0fd5b4c7f1f6c3e","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"My Packages","count":145},{"language":"jp","tag":"マイパッケージ","count":145},{"language":"de","tag":"Meine Pakete","count":100},{"language":"es","tag":"Mis paquetes","count":100},{"language":"fr","tag":"Mes packages","count":100},{"language":"it","tag":"I miei pacchetti","count":100},{"language":"ko","tag":"My 패키지","count":100},{"language":"nl","tag":"Mijn packages","count":100},{"language":"zh-Hans","tag":"我的包","count":100},{"language":"zh-Hant","tag":"我的套件","count":100},{"language":"de","tag":"Fortgeschrittene Themen","count":76},{"language":"en","tag":"Advanced Topics","count":76},{"language":"es","tag":"Temas avanzados","count":76},{"language":"fr","tag":"Sujets avancés","count":76},{"language":"it","tag":"Argomenti avanzati","count":76},{"language":"jp","tag":"応用トピック","count":76},{"language":"ko","tag":"심화 주제","count":76},{"language":"nl","tag":"Geavanceerde onderwerpen","count":76},{"language":"zh-Hans","tag":"进阶主题","count":76},{"language":"zh-Hant","tag":"進階主題","count":76},{"language":"en","tag":"VOICEVOX","count":67},{"language":"jp","tag":"VOICEVOX","count":67},{"language":"de","tag":"Leitfaden","count":61},{"language":"en","tag":"Guide","count":61},{"language":"es","tag":"Guía","count":61},{"language":"fr","tag":"Guide","count":61},{"language":"it","tag":"Guida","count":61},{"language":"jp","tag":"ガイド","count":61},{"language":"ko","tag":"가이드","count":61},{"language":"nl","tag":"Gids","count":61},{"language":"zh-Hans","tag":"指南","count":61},{"language":"zh-Hant","tag":"指南","count":61},{"language":"de","tag":"Blog","count":46},{"language":"en","tag":"Blog","count":46},{"language":"es","tag":"Blog","count":46},{"language":"fr","tag":"Blog","count":46},{"language":"it","tag":"Blog","count":46},{"language":"jp","tag":"ブログ","count":46},{"language":"ko","tag":"블로그","count":46},{"language":"nl","tag":"Blog","count":46},{"language":"zh-Hans","tag":"博客","count":46},{"language":"zh-Hant","tag":"部落格","count":46},{"language":"en","tag":"VOICEVOX Engine API Reference","count":45},{"language":"jp","tag":"VOICEVOXエンジンAPIリファレンス","count":45},{"language":"de","tag":"GitHub Copilot","count":43},{"language":"en","tag":"GitHub Copilot","count":43},{"language":"es","tag":"GitHub Copilot","count":43},{"language":"fr","tag":"GitHub Copilot","count":43},{"language":"it","tag":"GitHub Copilot","count":43},{"language":"jp","tag":"GitHub Copilot","count":43},{"language":"ko","tag":"GitHub Copilot","count":43},{"language":"nl","tag":"GitHub Copilot","count":43},{"language":"zh-Hans","tag":"GitHub Copilot","count":43},{"language":"zh-Hant","tag":"GitHub Copilot","count":43},{"language":"de","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"en","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"es","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"fr","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"it","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"jp","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"ko","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"nl","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"zh-Hans","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"zh-Hant","tag":"GitHub Copilot SDK for Laravel","count":41},{"language":"de","tag":"Paketentwicklung","count":38},{"language":"en","tag":"Package Development","count":38},{"language":"es","tag":"Desarrollo de paquetes","count":38},{"language":"fr","tag":"Développement de packages","count":38},{"language":"it","tag":"Sviluppo di pacchetti","count":38},{"language":"jp","tag":"パッケージ開発","count":38},{"language":"ko","tag":"패키지 개발","count":38},{"language":"nl","tag":"Package-ontwikkeling","count":38},{"language":"zh-Hans","tag":"包开发","count":38},{"language":"zh-Hant","tag":"套件開發","count":38},{"language":"de","tag":"Tutorial","count":35},{"language":"en","tag":"Tutorial","count":35},{"language":"es","tag":"Tutorial","count":35},{"language":"fr","tag":"Tutoriel","count":35},{"language":"it","tag":"Tutorial","count":35},{"language":"jp","tag":"チュートリアル","count":35},{"language":"ko","tag":"튜토리얼","count":35},{"language":"nl","tag":"Tutorial","count":35},{"language":"zh-Hans","tag":"教程","count":35},{"language":"zh-Hant","tag":"教學","count":35},{"language":"de","tag":"SDK","count":27},{"language":"es","tag":"SDK","count":27},{"language":"fr","tag":"SDK","count":27},{"language":"it","tag":"SDK","count":27},{"language":"ko","tag":"SDK","count":27},{"language":"nl","tag":"SDK","count":27},{"language":"zh-Hans","tag":"SDK","count":27},{"language":"zh-Hant","tag":"SDK","count":27},{"language":"de","tag":"VOICEVOX","count":22},{"language":"es","tag":"VOICEVOX","count":22},{"language":"fr","tag":"VOICEVOX","count":22},{"language":"it","tag":"VOICEVOX","count":22},{"language":"ko","tag":"VOICEVOX","count":22},{"language":"nl","tag":"VOICEVOX","count":22},{"language":"zh-Hans","tag":"VOICEVOX","count":22},{"language":"zh-Hant","tag":"VOICEVOX","count":22}],"searchSettings":{"isFiltersEnabled":false,"showContentSnippets":true,"fullPageSearch":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"nl/advanced/ai-sdk-custom-provider","slug":"/nl/advanced/ai-sdk-custom-provider","pageMetadata":{"title":"Een custom provider voor de AI SDK maken","description":"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.","href":"/nl/advanced/ai-sdk-custom-provider"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`wanneer-heb-je-een-custom-provider-nodig`,children:`Wanneer heb je een custom provider nodig?`}),`\n`,_jsxs(_components.p,{children:[`De Laravel AI SDK ondersteunt meerdere grote AI-services. Voor een interne gateway, een on-premises modelserver of een nieuwe service kun je een custom provider registreren. Voor OpenAI-compatible endpoints is de ingebouwde `,_jsx(_components.code,{children:`openai-compatible`}),` driver meestal voldoende.`]}),`\n`,_jsx(Heading,{level:`2`,id:`providers-en-gateways`,children:`Providers en gateways`}),`\n`,_jsx(_components.p,{children:`Een provider kiest modellen en bevat configuratie. Een gateway verstuurt de request voor één stap. Providers implementeren feature-specifieke contracts:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Contract`}),_jsx(_components.th,{children:`Functie`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TextProvider`})}),_jsx(_components.td,{children:`Tekstgeneratie en agents`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EmbeddingProvider`})}),_jsx(_components.td,{children:`Vector embeddings`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ImageProvider`})}),_jsx(_components.td,{children:`Afbeeldingen genereren`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AudioProvider`})}),_jsx(_components.td,{children:`Text-to-speech`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TranscriptionProvider`})}),_jsx(_components.td,{children:`Speech-to-text`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`een-provider-implementeren`,children:`Een provider implementeren`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`33`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`33`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Contracts\\\\Gateway\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`StepTextGateway`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Contracts\\\\Providers\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`TextProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Providers\\\\Concerns\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`GeneratesText`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Providers\\\\Concerns\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`HasTextGateway`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Providers\\\\Concerns\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`StreamsText`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Laravel\\\\Ai\\\\Providers\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyProvider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` extends`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Provider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` implements`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` TextProvider`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` GeneratesText`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` HasTextGateway`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` StreamsText`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` textGateway`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` StepTextGateway`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` $this`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`textGateway`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` MyGateway`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` defaultTextModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` string`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` $this`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'models'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`][`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'text'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`][`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'default'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'my-model'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` cheapestTextModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` string`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` $this`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`defaultTextModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` smartestTextModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` string`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` $this`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`defaultTextModel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Registreer de provider met `,_jsx(_components.code,{children:`AiManager::extend()`}),` in `,_jsx(_components.code,{children:`AppServiceProvider`}),` en voeg de driver toe aan `,_jsx(_components.code,{children:`config/ai.php`}),`. Een `,_jsx(_components.code,{children:`StepTextGateway`}),` verwerkt één stap; de `,_jsx(_components.code,{children:`TextGenerationLoop`}),` handelt volgende tool calls af.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`De oude `,_jsx(_components.code,{children:`TextGateway`}),`-interface is in SDK 0.9 verwijderd. Nieuwe gateways moeten `,_jsx(_components.code,{children:`StepTextGateway`}),` implementeren.`]})}),`\n`,_jsxs(_components.p,{children:[`Zie de `,_jsx(_components.a,{href:`https://github.com/laravel/ai`,children:`Laravel AI SDK-broncode`}),` voor de actuele contracts en voorbeelden.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Een custom provider voor de AI SDK maken","description":"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.","href":"/nl/advanced/ai-sdk-custom-provider"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Wanneer heb je een custom provider nodig?","slug":"wanneer-heb-je-een-custom-provider-nodig","depth":2,"children":[]},{"title":"Providers en gateways","slug":"providers-en-gateways","depth":2,"children":[]},{"title":"Een provider implementeren","slug":"een-provider-implementeren","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"narration":{"path":"nl/advanced/ai-sdk-custom-provider","locale":"nl","estimatedDurationSec":54},"subdomain":"invokable","siteName":"Knowledge of Laravel","title":"Een custom provider voor de AI SDK maken - Knowledge of Laravel","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"jp":{"href":"/jp/advanced/ai-sdk-custom-provider","matchLevel":1},"en":{"href":"/en/advanced/ai-sdk-custom-provider","matchLevel":1},"de":{"href":"/de/advanced/ai-sdk-custom-provider","matchLevel":1},"es":{"href":"/es/advanced/ai-sdk-custom-provider","matchLevel":1},"fr":{"href":"/fr/advanced/ai-sdk-custom-provider","matchLevel":1},"it":{"href":"/it/advanced/ai-sdk-custom-provider","matchLevel":1},"ko":{"href":"/ko/advanced/ai-sdk-custom-provider","matchLevel":1},"nl":{"href":"/nl/advanced/ai-sdk-custom-provider","matchLevel":0},"zh-Hans":{"href":"/zh-CN/advanced/ai-sdk-custom-provider","matchLevel":1},"zh-Hant":{"href":"/zh-TW/advanced/ai-sdk-custom-provider","matchLevel":1}}},"lastModified":"2026-09-06T09:56:52.657Z","gitLastModified":"2026-09-06T09:55:37.000Z","originalFileLocation":"nl/advanced/ai-sdk-custom-provider.mdx","locale":"nl"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Knowledge of Laravel\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Een custom provider voor de AI SDK maken - Knowledge of Laravel\">\u003cmeta data-mint-head property=\"og:description\" content=\"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Knowledge of Laravel\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://invokable.mintlify.app/_mintlify/api/og/v2?division=AI-ontwikkeling\u0026amp;title=Een+custom+provider+voor+de+AI+SDK+maken\u0026amp;description=Implementeer+een+provider+voor+een+AI-service+die+niet+standaard+door+de+Laravel+AI+SDK+wordt+ondersteund.\u0026amp;theme=e73cb59538246989d21d6ff5\u0026amp;signature=efb37974b0971b47b0e4d7fbaa5bb8ff4ceb7fb762e8acdbe26284ca14cb705b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Een custom provider voor de AI SDK maken - Knowledge of Laravel\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://invokable.mintlify.app/_mintlify/api/og/v2?division=AI-ontwikkeling\u0026amp;title=Een+custom+provider+voor+de+AI+SDK+maken\u0026amp;description=Implementeer+een+provider+voor+een+AI-service+die+niet+standaard+door+de+Laravel+AI+SDK+wordt+ondersteund.\u0026amp;theme=e73cb59538246989d21d6ff5\u0026amp;signature=efb37974b0971b47b0e4d7fbaa5bb8ff4ceb7fb762e8acdbe26284ca14cb705b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/invokable/pboFjibLpJPX3oCo/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Knowledge of Laravel\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/nl/advanced/ai-sdk-custom-provider.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"nl\" href=\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://kawax.biz/jp/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://kawax.biz/en/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://kawax.biz/de/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://kawax.biz/es/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://kawax.biz/fr/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"it\" href=\"https://kawax.biz/it/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://kawax.biz/ko/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://kawax.biz/zh-CN/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hant\" href=\"https://kawax.biz/zh-TW/advanced/ai-sdk-custom-provider\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://kawax.biz/jp/advanced/ai-sdk-custom-provider\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://kawax.biz/#organization\",\"name\":\"Knowledge of Laravel\",\"url\":\"https://kawax.biz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/invokable/AuZ0xql2mAbUyZ99/logo/light.svg?fit=max\u0026auto=format\u0026n=AuZ0xql2mAbUyZ99\u0026q=85\u0026s=df0b7397202a6aa1c1f321620c5aa146\"}},{\"@type\":\"WebSite\",\"@id\":\"https://kawax.biz#website\",\"name\":\"Knowledge of Laravel\",\"url\":\"https://kawax.biz\",\"publisher\":{\"@id\":\"https://kawax.biz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider#webpage\",\"url\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\",\"name\":\"Een custom provider voor de AI SDK maken\",\"description\":\"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\",\"dateModified\":\"2026-09-06T09:55:37.000Z\",\"isPartOf\":{\"@id\":\"https://kawax.biz#website\"},\"breadcrumb\":{\"@id\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"AI-ontwikkeling\",\"item\":\"https://kawax.biz/nl/advanced/mcp-server\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Een custom provider voor de AI SDK maken\",\"item\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider#article\",\"headline\":\"Een custom provider voor de AI SDK maken\",\"name\":\"Een custom provider voor de AI SDK maken\",\"description\":\"Implementeer een provider voor een AI-service die niet standaard door de Laravel AI SDK wordt ondersteund.\",\"url\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider\",\"mainEntityOfPage\":{\"@id\":\"https://kawax.biz/nl/advanced/ai-sdk-custom-provider#webpage\"},\"dateModified\":\"2026-09-06T09:55:37.000Z\",\"publisher\":{\"@id\":\"https://kawax.biz/#organization\"},\"isPartOf\":{\"@id\":\"https://kawax.biz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Knowledge of Laravel\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Knowledge of Laravel","nav":{"global":null,"languages":[{"language":"jp","default":true,"pages":[{"title":"jp","href":"/jp/advanced/ai-sdk-custom-provider"}]},{"language":"en","pages":[{"title":"en","href":"/en/advanced/ai-sdk-custom-provider"}]},{"language":"de","pages":[{"title":"de","href":"/de/advanced/ai-sdk-custom-provider"}]},{"language":"es","pages":[{"title":"es","href":"/es/advanced/ai-sdk-custom-provider"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/advanced/ai-sdk-custom-provider"}]},{"language":"it","pages":[{"title":"it","href":"/it/advanced/ai-sdk-custom-provider"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/advanced/ai-sdk-custom-provider"}]},{"language":"nl","tabs":[{"tab":"Mijn packages","pages":[{"title":"Mijn packages","href":"/nl/packages/laravel-boost-copilot-cli"}]},{"tab":"Tutorial","pages":[{"title":"Tutorial","href":"/nl/introduction"}]},{"tab":"Gids","pages":[{"title":"Gids","href":"/nl/lifecycle"}]},{"tab":"Geavanceerde onderwerpen","groups":[{"group":"AI-ontwikkeling","pages":[{"title":"Een MCP-server bouwen met Laravel","href":"/nl/advanced/mcp-server"},{"title":"Een custom agent voor Boost maken","description":"Leer hoe je Laravel Boost uitbreidt met een eigen AI-agent voor guidelines, MCP en Agent Skills.","href":"/nl/advanced/boost-custom-agent"},{"title":"Een custom provider voor de AI SDK maken","href":"/nl/advanced/ai-sdk-custom-provider"},{"title":"Agentmiddleware in de Laravel AI SDK","description":"Uitvoeringsvolgorde van middleware per modelaanroep, verwerking na de respons en stoppen op basis van cumulatieve tokens in de AI SDK van Laravel 13.","href":"/nl/advanced/ai-sdk-agent-middleware"}]},{"group":"Design patterns","pages":[{"title":"Het Pipeline-patroon","href":"/nl/advanced/pipeline"},{"title":"Fluent-klasse","href":"/nl/advanced/fluent"},{"title":"Macroable-trait","href":"/nl/advanced/macroable"},{"title":"Conditionable-trait","href":"/nl/advanced/conditionable"},{"title":"InteractsWithTime-trait","href":"/nl/advanced/interacts-with-time"},{"title":"ForwardsCalls-trait","href":"/nl/advanced/forwards-calls"},{"title":"De tap()-helper en de Tappable-trait","href":"/nl/advanced/tap"},{"title":"De interne implementatie van de once()-helper — Once, Onceable en PreventsCircularRecursion","href":"/nl/advanced/once-helper"},{"title":"Dumpable-trait","href":"/nl/advanced/dumpable"},{"title":"Support Contracts (Arrayable / Jsonable / Htmlable / Responsable)","href":"/nl/advanced/support-contracts"},{"title":"Lottery-klasse","href":"/nl/advanced/lottery"},{"title":"Higher-order messages van collecties","href":"/nl/advanced/higher-order-messages"},{"title":"Collection deep dive","href":"/nl/advanced/collection-deep-dive"},{"title":"Illuminate\\Support\\Manager — anatomie van het driversysteem","href":"/nl/advanced/manager"},{"title":"PHP Reflection API","href":"/nl/advanced/php-reflection"},{"title":"PHP FFI","href":"/nl/advanced/ffi"},{"title":"PHP AST","href":"/nl/advanced/php-ast"}]},{"group":"Package-ontwikkeling","pages":[{"title":"Laravel-packages ontwikkelen","href":"/nl/advanced/package-development"},{"title":"De interne structuur van package discovery","href":"/nl/advanced/package-discovery"},{"title":"InteractsWithData-trait","href":"/nl/advanced/interacts-with-data"},{"title":"Uitgestelde service providers","href":"/nl/advanced/deferred-provider"},{"title":"Versiecompatibiliteit van packages beheren","href":"/nl/advanced/package-versioning"},{"title":"GitHub Actions pinnen en beveiliging","href":"/nl/advanced/github-actions-pinning"},{"title":"CHANGELOG en releasebeheer voor packages","href":"/nl/advanced/package-changelog"},{"title":"Laravel-packages testen met Orchestra Testbench","href":"/nl/advanced/package-testing"},{"title":"Packageontwikkeling met Testbench Workbench","href":"/nl/advanced/package-workbench"},{"title":"GeneratorCommand — eigen make: commando's implementeren","href":"/nl/advanced/generator-command"},{"title":"Een Laravel starter kit maken","sidebarTitle":"Starter kit maken","href":"/nl/advanced/starter-kit-creation"},{"title":"Statische analyse van packages (PHPStan / Larastan)","href":"/nl/advanced/package-static-analysis"},{"title":"Packageconfiguratie samenvoegen en cachen","href":"/nl/advanced/package-config-merging"},{"title":"Migrations van packages publiceren en bijwerken","href":"/nl/advanced/package-migrations"},{"title":"Views van packages overschrijven en bijwerken","href":"/nl/advanced/package-views"},{"title":"Routes van packages registreren en cachen","href":"/nl/advanced/package-routes"},{"title":"Packagecaches integreren in optimize","href":"/nl/advanced/package-optimization"},{"title":"Publieke assets van packages publiceren en bijwerken","href":"/nl/advanced/package-assets"},{"title":"Packagevertalingen overschrijven en bijwerken","href":"/nl/advanced/package-translations"},{"title":"Hooks na het resolven van packageservices","href":"/nl/advanced/package-service-resolution"},{"title":"Diagnostische package-informatie toevoegen aan about","href":"/nl/advanced/package-about"},{"title":"Artisan-commands van een package registreren en afhankelijkheden resolven","href":"/nl/advanced/package-commands"},{"title":"Event listeners van een package registreren en cachen","href":"/nl/advanced/package-events"},{"title":"Levensduur van packageservices ontwerpen","href":"/nl/advanced/package-service-lifetimes"},{"title":"Middleware van packages registreren en het toepassingsbereik","href":"/nl/advanced/package-middleware"},{"title":"Blade-extensies van packages en de compilatiecache","href":"/nl/advanced/package-blade-extensions"},{"title":"Storage-drivers registreren in een package en opnieuw resolven","href":"/nl/advanced/package-filesystem-drivers"},{"title":"Aangepaste notificatiekanalen in een package en verificatie van de bezorging","href":"/nl/advanced/package-notification-channels"},{"title":"Containertags in packages en het bundelen van plugins","href":"/nl/advanced/package-container-tags"},{"title":"HTTP-clients en tests voor packages","href":"/nl/advanced/package-http-client"},{"title":"Logchannels voor packages uitbreiden en opnieuw resolven","href":"/nl/advanced/package-logging"},{"title":"Eigen cachestores en contracten voor packages","href":"/nl/advanced/package-cache-drivers"},{"title":"Mailtransports voor packages registreren en testen","href":"/nl/advanced/package-mail-transports"},{"title":"Contextuele attributen en dependency-resolutie in packages","href":"/nl/advanced/package-contextual-attributes"},{"title":"Geplande taken van een package registreren en onderhouden","href":"/nl/advanced/package-scheduling"},{"title":"Eigen sessiedrivers voor packages","href":"/nl/advanced/package-session-drivers"},{"title":"Databaseverbindingen uitbreiden vanuit packages","href":"/nl/advanced/package-database-connections"},{"title":"Dynamische relaties registreren vanuit packages","href":"/nl/advanced/package-dynamic-relations"}]},{"group":"Applicatiestructuur","pages":[{"title":"Applicatiestructuur van Laravel 11 en later","href":"/nl/advanced/app-structure"},{"title":"Migratiegids van oude naar nieuwe structuur","sidebarTitle":"Migratiegids","href":"/nl/advanced/app-structure-migration"},{"title":"FAQ over de nieuwe appstructuur van Laravel 11+","sidebarTitle":"FAQ nieuwe appstructuur","href":"/nl/advanced/app-structure-faq"}]},{"group":"Nieuwe functies in Laravel 13","pages":[{"title":"PHP-attributes","href":"/nl/advanced/php-attributes"},{"title":"PHP-attributes voor controllers","sidebarTitle":"Controller-attributes","href":"/nl/advanced/controller-attributes"}]},{"group":"Eloquent in detail","pages":[{"title":"Eloquent-observers en modelevents","href":"/nl/advanced/eloquent-observers"},{"title":"Scopes in Eloquent","href":"/nl/advanced/eloquent-scopes"},{"title":"Custom casts van Eloquent","href":"/nl/advanced/eloquent-casts"},{"title":"Eloquent bootable traits","href":"/nl/advanced/eloquent-bootable-traits"},{"title":"Custom pivot-modellen en chaperone","href":"/nl/advanced/eloquent-custom-pivot"}]},{"group":"Validatie-uitbreidingen","pages":[{"title":"Custom validatieregels","href":"/nl/advanced/custom-validation-rules"}]},{"group":"Authenticatie uitbreiden","pages":[{"title":"Een custom authenticatieguard implementeren","href":"/nl/advanced/custom-auth-guard"},{"title":"Laravel Fortify en de starter kits","href":"/nl/advanced/fortify"}]},{"group":"Beveiliging","pages":[{"title":"Rate limiting aanpassen","href":"/nl/advanced/rate-limiting"}]},{"group":"Queues","pages":[{"title":"Uitvoeringscontrole van queue-jobs","href":"/nl/advanced/queue-job-control"}]},{"group":"Testen","pages":[{"title":"Geavanceerd testen met Pest","href":"/nl/advanced/testing-pest"}]},{"group":"Realtime","pages":[{"title":"Onder de motorkap van de Mercure-broadcastdriver","href":"/nl/advanced/mercure-broadcasting"}]}]},{"tab":"Blog","pages":[{"title":"Blog","href":"/nl/blog/changelog/202609"}]}]},{"language":"zh-Hans","pages":[{"title":"zh-Hans","href":"/zh-CN/advanced/ai-sdk-custom-provider"}]},{"language":"zh-Hant","pages":[{"title":"zh-Hant","href":"/zh-TW/advanced/ai-sdk-custom-provider"}]}]},"basePath":"","title":"Een custom provider voor de AI SDK maken - Knowledge of Laravel","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["2bfc744e19"],"chunks":["NarrationPlayer-YDlRqDT3.js","types-CiTgMxws.js","shallow-CmQhqCJn.js"]}