AI Open SDKfor Business Central

Providers

Core SDK plus one Business Central app extension per provider.

AI Open SDK splits into a core library and provider extensions. Your app depends on core plus only the providers you call. Swapping providers is a dependency and factory change; callers keep using "AIOS Client" and "AIOS Language Model".

Packaging

AppRole
AI Open SDKCore: "AIOS Client", schema, tools, interfaces, "AIOS Mock"
AI Open SDK Anthropic"AIOS Anthropic" → Claude text models
AI Open SDK OpenAI"AIOS OpenAI" → chat and image models
AI Open SDK OpenCode Zen"AIOS OpenCode Zen" → Zen gateway
AI Open SDK OpenAI Compatible"AIOS OpenAI Compatible" → any Chat Completions base URL

Each provider extension depends on AI Open SDK (core). Your extension depends on core and on each provider app you install.

"dependencies": [
  {
    "id": "f624c4ac-75e8-4ce4-9a31-c2d6ff2a05a1",
    "name": "AI Open SDK",
    "publisher": "Guillermo Padilla",
    "version": "0.1.0.0"
  },
  {
    "id": "b6caa435-9837-4155-9932-0b591bdeb4d1",
    "name": "AI Open SDK Anthropic",
    "publisher": "Guillermo Padilla",
    "version": "0.1.0.0"
  }
]

Use the published App Ids from AppSource or your symbol feed. Install only the provider apps you need.

Capabilities

ExtensionFactoryTextImage
AI Open SDK (core)"AIOS Mock"YesYes
AI Open SDK Anthropic"AIOS Anthropic"YesNo
AI Open SDK OpenAI"AIOS OpenAI"YesYes
AI Open SDK OpenCode Zen"AIOS OpenCode Zen"YesNo
AI Open SDK OpenAI Compatible"AIOS OpenAI Compatible"YesNo

How a provider plugs in

  1. The provider app implements "AIOS Provider" and returns "AIOS Language Model" (and "AIOS Image Model" when supported).
  2. Your code calls Factory.Model(...) (or Factory.ImageModel(...)) and passes the model into "AIOS Client".
  3. API keys use SecretText end to end.
  4. Live providers send data only after an administrator approves the provider privacy notice. See Getting Started.
PlugIn.al
Anthropic: Codeunit "AIOS Anthropic";
Client: Codeunit "AIOS Client";
Result: Codeunit "AIOS Generate Result";
ApiKey: SecretText;
begin
    Result := Client.GenerateText(
        Anthropic.Model('claude-fable-5', ApiKey),
        'Hello');
end;

Provider pages

On this page