PageSourceSearch

https://kilo.ai/docs/_next/static/chunks/pages/ai-providers/sap-ai-core-2b975de07f9f999e.js

js kilo.ai collected 2026-10-01 10:29:33 UTC 12,033 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7315],{1806:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/ai-providers/sap-ai-core",function(){return n(28223)}])},28223:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__N_SSG:()=>y,default:()=>f,markdoc:()=>g});var o=n(11872),r=n(34904),i=n(92130),s=n(9760),a=n(90102),d=n(89966),l=n(48059);let c={tags:(0,s.X)(a),nodes:(0,s.X)(d),functions:(0,s.X)(l),...(0,s.X)({})},u=new i.Ay.Tokenizer({allowComments:!0}).tokenize('---\ntitle: "Using SAP AI Core with Kilo Code"\ndescription: "Connect SAP AI Core to Kilo Code to use enterprise foundation models from your SAP BTP account. Setup and authentication guide."\nsidebar_label: SAP AI Core\n---\n\n# Using SAP AI Core With Kilo Code\n\nKilo Code supports accessing models through SAP AI Core, a service in the SAP Business Technology Platform that lets you efficiently run AI scenarios in a standardized, scalable, and hyperscaler-agnostic manner.\n\n**Website:** [https://help.sap.com/docs/sap-ai-core](https://help.sap.com/docs/sap-ai-core)\n\n## Prerequisites\n\n- **SAP BTP Account:** You need an active SAP Business Technology Platform account.\n- **SAP AI Core Service:** You must have access to the SAP AI Core service in your BTP subaccount.\n- **Service Instance:** Create a service instance of SAP AI Core with appropriate service plan.\n- **Service Key:** Generate a service key for your SAP AI Core service instance to obtain the required credentials.\n\n## Getting Credentials\n\nTo use SAP AI Core with Kilo Code, you\'ll need to create a service key for your SAP AI Core service instance:\n\n1. **In SAP BTP Cockpit:**\n   - Navigate to your subaccount\n   - Go to "Services" → "Instances and Subscriptions"\n   - Find your SAP AI Core service instance\n   - Create a new service key\n\n2. **Service Key Information:**\n   The service key will contain the following information you\'ll need:\n   - **Client ID:** OAuth2 client identifier\n   - **Client Secret:** OAuth2 client secret\n   - **Auth URL:** OAuth2 authentication endpoint\n   - **Base URL:** SAP AI Core API base URL\n   - **Resource Group:** (Optional) Specify a resource group, defaults to "default"\n\n## Operating Modes\n\nSAP AI Core provider supports two operating modes:\n\n### Foundation Models Mode (Default)\n\n- Uses foundation models that require active deployments\n- Currently, supports **OpenAI models only** due to SAP AI Core SDK limitations\n- Requires you to have running deployments for the models you want to use\n- Models must have deployments in "RUNNING" status to be selectable\n\n### Orchestration Mode\n\n- Uses SAP AI Core\'s orchestration capabilities\n- Supports models from multiple providers: **Amazon, Anthropic, Google, OpenAI, and Mistral AI**\n- Does not require separate deployments\n- Provides access to a broader range of models\n\n## Model Requirements\n\nKilo Code applies the following filters when fetching models:\n\n- **Streaming:** Models must support streaming\n- **Capabilities:** Models must support text generation\n- **Context Window:** Models must have a context window of at least 32,000 tokens\n\n## Supported Providers\n\n### Foundation Models Mode\n\n- **OpenAI:** All OpenAI models with active deployments\n\n### Orchestration Mode\n\n- **Amazon:** Amazon foundation models\n- **Anthropic:** Claude models\n- **Google:** Gemini models\n- **OpenAI:** ChatGPT and GPT models\n- **Mistral AI:** Mistral AI models\n\nThe exact list of available models depends on your SAP AI Core configuration and active model offerings.\n\n## Configuration in Kilo Code\n\n{% tabs %}\n{% tab label="VSCode" %}\n\nOpen **Settings** (gear icon) and go to the **Providers** tab to add SAP AI Core. Enter your OAuth2 client credentials (Client ID, Client Secret, Base URL, and Auth URL) in the provider settings.\n\nThe extension stores this in your `kilo.json` config file. You can also edit the config file directly — see the **CLI** tab for the file format.\n\n{% /tab %}\n{% tab label="CLI" %}\n\nSAP AI Core uses OAuth2 client credentials for authentication. Set the credentials as environment variables or in your config file:\n\n**Environment variables:**\n\n```bash\nexport AICORE_SERVICE_KEY=\'{"your": "service-key-json"}\'\nexport AICORE_DEPLOYMENT_ID="your-deployment-id"\nexport AICORE_RESOURCE_GROUP="your-resource-group"\n```\n\n**Config file** (`~/.config/kilo/kilo.json` or `./kilo.json`):\n\n```jsonc\n{\n  "provider": {\n    "sap-ai-core": {},\n  },\n}\n```\n\nThen set your default model:\n\n```jsonc\n{\n  "model": "sap-ai-core/model-name",\n}\n```\n\n{% /tab %}\n{% /tabs %}\n\n## Deployments (Foundation Models Mode)\n\nWhen using Foundation Models mode:\n\n- You must have active deployments for the models you want to use\n- Only deployments with "RUNNING" status are available for selection\n- Deployments in other states (PENDING, STOPPED, etc.) are shown but disabled\n- The interface displays the number of available deployments for each model\n\n## Tips and Notes\n\n- **Authentication:** SAP AI Core uses OAuth2 client credentials flow for authentication\n- **Caching:** Model and deployment information is cached for 15 and 5 minutes respectively to improve performance\n- **Resource Groups:** If you use multiple resource groups, specify the appropriate one in the configuration\n- **Permissions:*
1* Ensure your service key has the necessary permissions to access models and deployments\n- **Orchestration Benefits:** Use Orchestration mode for access to a wider variety of models without managing deployments\n- **Foundation Models Benefits:** Use Foundation Models mode when you need more control over specific model deployments\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Authentication Failures:**\n   - Verify your Client ID and Client Secret are correct\n   - Check that your Auth URL is properly formatted\n   - Ensure your service key hasn\'t expired\n\n2. **No Models Available:**\n   - Check that you have the necessary permissions in your resource group\n   - Verify your Base URL is correct\n   - In Foundation Models mode, ensure you have running deployments\n\n3. **Deployment Issues:**\n   - Check that your deployments are in "RUNNING" status\n   - Verify you\'re using the correct resource group\n   - Review your SAP AI Core service configuration\n\n4. **Model Access:**\n   - In Foundation Models mode, **only OpenAI models** are currently supported\n   - Switch to Orchestration mode for access to other providers\n   - Ensure models meet the minimum requirements (32k context window, streaming support)\n\n## Getting Started\n\nTo get started with SAP AI Core:\n\n1. Set up your SAP BTP account and access SAP AI Core service\n2. Create a service instance and generate a service key\n3. Configure Kilo Code with your credentials\n4. Choose between Foundation Models or Orchestration mode based on your needs\n5. Select an appropriate model and start coding\n\nFor detailed setup instructions and service configuration, visit the [SAP AI Core documentation](https://help.sap.com/docs/sap-ai-core).\n'),p=i.Ay.parse(u,{slots:!1}),h=p.attributes.frontmatter?r.Ay.load(p.attributes.frontmatter):{},{components:m}=(0,s._)(c);var y=!0;let g={frontmatter:h};function f(e){let t=e.markdoc;return i.ZR.react(t.content,o,{components:{...m,...e.components}})}},48059:(e,t,n)=>{"use strict";n.r(t),n.d(t,{includes:()=>o,upper:()=>r});let o={transform(e){let[t,n]=Object.values(e);return!!Array.isArray(t)&&t.includes(n)}},r={transform(e){let t=e[0];return"string"==typeof t?t.toUpperCase():t}}},89966:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fence:()=>i,heading:()=>a,table:()=>l,tbody:()=>u,td:()=>m,th:()=>h,thead:()=>c,tr:()=>p});var o=n(92130),r=n(62968);let i={render:r.NG,attributes:o.a9.fence.attributes};function s(e){return"string"==typeof e?e:o.vw.isTag(e)?e.children.map(s).join(" "):""}let a={render:r.DZ,children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1},className:{type:String}},transform(e,t){let n=e.transformAttributes(t),r=e.transformChildren(t),i=n.id&&"string"==typeof n.id?n.id:r.map(s).join(" ").replace(/[?/]/g,"").replace(/\s+/g,"-").toLowerCase();return new o.vw(this.render,{...n,id:i},r)}};var d=n(17499);let l={...o.a9.table,render:d.XI},c={...o.a9.thead,render:d.D1},u={...o.a9.tbody,render:d.vc},p={...o.a9.tr,render:d.Tr},h={...o.a9.th,render:d.Th,attributes:{...o.a9.th.attributes,width:{type:String}}},m={...o.a9.td,render:d.Td,attributes:{...o.a9.td.attributes,colspan:{type:Number},rowspan:{type:Number}}}},90102:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserFrame:()=>g,callout:()=>r,codicon:()=>i,copyLine:()=>s,flowDiagram:()=>y,icon:()=>l,image:()=>c,imageGallery:()=>u,kiloCodeIcon:()=>p,linebreak:()=>f,tab:()=>d,tabs:()=>a,video:()=>h,youtube:()=>m});var o=n(62968);
1let r={render:o.Pq,children:["paragraph","tag","list"],attributes:{title:{type:String,description:"Optional custom title for the callout"},type:{type:String,default:"note",matches:["generic","note","tip","info","warning","danger"],description:"The type of callout: generic (no icon/title), note, tip, info, warning, or danger"},collapsed:{type:Boolean,default:!1,description:"When true, the callout starts collapsed and can be expanded by clicking the header"}}},i={render:o.W6,selfClosing:!0,attributes:{name:{type:String,required:!0,description:"The name of the VS Code codicon (e.g., 'send', 'check', 'warning')"},size:{type:String,default:"1em",description:"The size of the icon (CSS font-size value)"},className:{type:String,default:"",description:"Additional CSS classes to apply to the icon"}}},s={render:o.a7,selfClosing:!0,attributes:{text:{type:String,required:!0,description:"The exact one-line text to display and copy"}}},a={render:o.tU,children:["tab"],attributes:{}},d={render:o.oz,children:["paragraph","tag","list","fence","heading"],attributes:{label:{type:String,required:!0,description:"The label shown on the tab button"}}},l={render:o.In,selfClosing:!0,attributes:{src:{type:String,required:!0},srcDark:{type:String,description:"Optional image source for dark mode. Falls back to src if not provided."},alt:{type:String,default:"icon"},size:{type:String,default:"1.2em"}}},c={render:o._V,selfClosing:!0,attributes:{src:{type:String,required:!0,description:"The image source URL"},alt:{type:String,required:!0,description:"Alternative text for the image"},width:{type:String,description:"Width of the image (e.g., '500px', '80%')"},height:{type:String,description:"Height of the image (e.g., '300px', 'auto')"},caption:{type:String,description:"Optional caption displayed below the image"}}},u={render:o.i_,children:["tag"],attributes:{columns:{type:String,description:"Preferred number of image columns on wide screens"},width:{type:String,description:"Preferred width of each gallery image"}}},p={render:o.kz,selfClosing:!0,attributes:{size:{type:String,default:"1.2em",description:"Size of the icon (CSS height value)"}}},h={render:o.n5,selfClosing:!0,attributes:{url:{type:String,required:!0,description:"The YouTube video URL"},title:{type:String,description:"Accessible title for the video iframe"},caption:{type:String,description:"Optional caption to display below the video"}}},m={render:o.Yu,selfClosing:!0,attributes:{url:{type:String,required:!0,description:"The YouTube video URL"},title:{type:String,description:"Accessible title for the video iframe"},caption:{type:String,description:"Optional caption to display below the video"}}},y={render:o.Cb,selfClosing:!0,attributes:{name:{type:String,required:!0,description:"Name of the diagram to render (must match a key in diagrams/index.ts)"},height:{type:String,default:"400px",description:"Height of the diagram container"}}},g={render:o.AR,children:["paragraph","tag","list"],attributes:{url:{type:String,description:"Optional URL to display in the address bar"},caption:{type:String,description:"Optional caption below the frame"}}},f={render:"br",selfClosing:!0}}},e=>{e.O(0,[8228,2775,636,6593,8792],()=>e(e.s=1806)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.