ObjectOS
Konfigurieren

AI-Service

LLMs, Embedder, RAG und MCP — providerübergreifend einsteckbar, zur Laufzeit austauschbar.

AI-Service

ObjectOS behandelt AI als erstklassige Fähigkeit mit drei einsteckbaren Schichten:

SchichtPaketFunktion
Chat / Generierung@objectstack/service-aiKonversationen, Tool-Calls, Streaming
Embeddings@objectstack/embedder-openai (OpenAI-kompatibel)Text → Vektoren für semantische Suche und RAG
Wissen / RAG@objectstack/service-knowledge + AdapterDokumente → indizierte Wissensdatenbanken

Alle drei sind optional, alle drei sind providerunabhängig, und alle drei lassen sich zur Laufzeit über Console → Configuration neu konfigurieren — ohne Neustart.

Chat / Generierung

Angetrieben vom Vercel AI SDK. Installieren Sie den oder die gewünschten Provider als Peer-Dependencies:

pnpm add @ai-sdk/openai          # OpenAI
pnpm add @ai-sdk/anthropic       # Claude
pnpm add @ai-sdk/google          # Gemini
pnpm add @ai-sdk/gateway         # AI gateway / OpenRouter / proxies

Registrieren Sie dann das AI-Service-Plugin mit einem Vercel-SDK-Adapter:

import { AIServicePlugin, VercelLLMAdapter } from '@objectstack/service-ai';
import { openai } from '@ai-sdk/openai';

kernel.use(new AIServicePlugin({
  adapter: new VercelLLMAdapter({ model: openai('gpt-4o') }),
  models: [
    { id: 'fast',  provider: 'openai', model: 'gpt-4o-mini' },
    { id: 'smart', provider: 'openai', model: 'gpt-4o' },
  ],
  defaultModelId: 'fast',
}));

Die models-Liste speist die Laufzeit-Modellregistry — sie steuert die Auflösung des Standardmodells und die Kostenzuordnung in Traces. Standardmäßig bindet sich das Plugin außerdem an den ai-Settings-Namespace und baut den Adapter live neu auf, wenn ein Operator Provider/Anmeldedaten/Modell in Console bearbeitet, sodass kein Neustart erforderlich ist.

Die Provider-API-Schlüssel stammen aus den üblichen Umgebungsvariablen des jeweiligen SDK:

ProviderUmgebungsvariable
OpenAIOPENAI_API_KEY
AnthropicANTHROPIC_API_KEY
GoogleGOOGLE_GENERATIVE_AI_API_KEY
AI GatewayAI_GATEWAY_API_KEY

In Console können Sie diese stattdessen als Laufzeiteinstellungen einfügen — sie durchlaufen dieselbe Rangfolge (env > settings), aber durch die Live-Bearbeitung ist kein Neustart nötig.

Den AI-Service aus dem Code verwenden

const ai = kernel.getService<IAIService>('ai');

// One-shot chat
const result = await ai.chat(
  [{ role: 'user', content: 'Summarize ObjectStack in two sentences.' }],
  { model: 'smart' },
);

// Structured output
const { object } = await ai.generateObject(
  [{ role: 'user', content: 'Classify this ticket: ...' }],
  { schema, model: 'fast' },
);

Der Service stellt außerdem complete(), streamChat(), embed() und listModels() bereit. Konversationen werden als ai_conversations / ai_messages Datensätze persistiert und über die REST-API verwaltet (POST /api/v1/ai/chat, POST /api/v1/ai/conversations).

Verwendung aus Agents und Flows

Für deklarative AI — Agents, Skills und Tools — siehe AI Agents. Flows können jede registrierte Aktion aufrufen (einschließlich Aktionen, die einen ai.chat()- / ai.generateObject()-Aufruf kapseln) als action-Knoten; siehe Flows & Automation für den umgebenden Kontext.

Embedder

Der Embedder wandelt Text in dichte Vektoren um. Ein einziger OpenAI-kompatibler Adapter, @objectstack/embedder-openai, deckt OpenAI sowie jeden Provider ab, der einen OpenAI-kompatiblen /v1/embeddings-Endpunkt bereitstellt — wählen Sie einen mit einem Preset (das die Basis-URL für Sie setzt) oder verweisen Sie baseUrl auf einen eigenen Endpunkt.

ProviderpresetHinweise
OpenAIopenaitext-embedding-3-small/-large
Azure OpenAIazureVollständige Deployment-URL über baseUrl angeben
阿里通义 DashScopedashscopetext-embedding-v3
智谱 GLMzhipuembedding-2
硅基流动 SiliconFlowsiliconflowAggregator von OSS-Modellen
火山 DoubaodoubaoByteDance
MiniMaxminimax
Ollama (selbst gehostet)ollamaAir-Gap-freundlich (http://localhost:11434/v1)
Custom(weglassen; baseUrl setzen)Eigenen OpenAI-kompatiblen Endpunkt mitbringen

Im Code konfigurieren:

import { createOpenAIEmbedder } from '@objectstack/embedder-openai';

const embedder = createOpenAIEmbedder({
  preset: 'openai',
  model: 'text-embedding-3-small',
  // apiKey from OPENAI_API_KEY env if omitted
});

Oder zur Laufzeit über Console → Configuration → AI → Embedder auswählen. Wechseln Sie Provider ohne Neustart; vorhandene Vektoren bleiben durchsuchbar (Sie können im Hintergrund neu indizieren).

Wissen / RAG

Der Knowledge-Service orchestriert die Dokumentenaufnahme, das Chunking, das Embedding (über den Embedder-Service) und die Abfrage. Das eigentliche Speicher- und Such-Backend ist einsteckbar:

AdapterBackendGeeignet für
@objectstack/knowledge-memoryIn-ProcessEntwicklung, Demos, kleine KBs
@objectstack/knowledge-ragflowRAGFlowHochwertiges OSS-RAG mit Chunking + Reranking
import { KnowledgeServicePlugin } from '@objectstack/service-knowledge';
import { KnowledgeRagflowPlugin } from '@objectstack/knowledge-ragflow';

kernel.use(new KnowledgeServicePlugin({ defaultTopK: 10 }));
kernel.use(new KnowledgeRagflowPlugin({
  endpoint: process.env.RAGFLOW_ENDPOINT, // e.g. http://localhost:9380
  apiKey:   process.env.RAGFLOW_API_KEY,
}));

Indizierte Wissensdatenbanken werden zu erstklassigen Objekten — fragen Sie sie aus Flows ab, machen Sie sie in Console sichtbar, hängen Sie sie als Retrieval-Kontext an AI-Assistenten an.

MCP — Model Context Protocol

ObjectOS kann sich selbst als Tool-Server für AI-Agents (Claude Desktop, IDEs, eigene Agents) über das offene Model Context Protocol bereitstellen.

import { MCPServerPlugin } from '@objectstack/plugin-mcp-server';

kernel.use(new MCPServerPlugin({
  transport: 'stdio', // or 'http'
  autoStart: true,
}));

Agents entdecken und rufen ObjectOS-Tools über MCP auf — abhängig von den Berechtigungen des aufrufenden Benutzers. Der Server überbrückt die Tool-Registry des AI-Service, einschließlich universeller Tools wie list_objects, describe_object, query_records, get_record und aggregate_data.

Betriebsgarantien

  • Keine zwingende Cloud-Abhängigkeit. Verwenden Sie Ollama für Chat + Ollama-Embedder + Memory-Knowledge — vollständig air-gapped.
  • Live austauschbar. Ändern Sie den Provider in Console; neue Anfragen nutzen den neuen Provider beim nächsten Aufruf. Kein Neustart.
  • Konfiguration pro Mandant. Jede Environment hat ihre eigenen AI-Einstellungen. Mandant A auf OpenAI, Mandant B auf Anthropic — dieselbe Laufzeit.
  • Audit-Log-Einträge. Jede Konversation, jeder Tool-Call und jede Embedder-Anfrage kann auditiert werden (@objectstack/plugin-audit).
  • Kostenbewusst. Token-Zahlen und Provider-IDs fließen in das Audit-Log für Chargeback / Kostenanalyse.

Wie es weitergeht

On this page