Astreus

LLM

Einheitliche Schnittstelle für mehrere LLM-Provider mit automatischem Routing Lerne die Einrichtungsmuster, APIs und praktischen Beispiele kennen, die du...

Einheitliche Schnittstelle für mehrere LLM-Provider mit automatischem Routing

Übersicht

Die LLM-Abstraktionsschicht bietet nahtlose Integration mit mehreren KI-Providern und ermöglicht es dir, zwischen OpenAI, Claude, Gemini und Ollama zu wechseln, ohne deinen Code zu ändern. Sie verwaltet providerspezifische Implementierungen, Nachrichtenformatierung und Streaming und bietet dabei eine konsistente API über alle Provider hinweg.

Unterstützte Provider

Astreus unterstützt vier große LLM-Provider mit automatischem Modell-Routing:

Die Beispiele wählen Modelle ausdrücklich aus; weiterhin unterstützte Standardwerte bleiben unverändert. Für eingestellte Modelle der nativen APIs muss ausdrücklich ein aktuelles Ersatzmodell ausgewählt werden.

OpenAI

Aktuelle Modell-IDs für die direkte API:

  • gpt-6-astra
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-5.6-luna
  • API-Schlüssel: Setze die Umgebungsvariable OPENAI_API_KEY

Bei direkten OpenAI-Anfragen erfordern Tool-Aufrufe mit GPT-6 Astra die Responses API. Der Adapter übernimmt dieses Protokoll; konfigurierte OpenAI-kompatible Gateways nutzen Chat Completions. Setze für GPT-6 Astra weder temperature noch top_p. Siehe den OpenAI-Modellleitfaden.

Anthropic Claude

Aktuelle Modell-IDs für die direkte API:

  • claude-fable-5-1
  • claude-opus-5
  • claude-sonnet-5
  • claude-haiku-4-5-20251001
  • API-Schlüssel: Setze die Umgebungsvariable ANTHROPIC_API_KEY

Google Gemini

Alle 12 unterstützten Modelle:

  • Neueste: gemini-2.5-pro, gemini-2.5-pro-deep-think, gemini-2.5-flash, gemini-2.5-flash-lite
  • Stabil: gemini-2.0-flash, gemini-2.0-flash-thinking, gemini-2.0-flash-lite, gemini-2.0-pro-experimental, gemini-1.5-pro, gemini-1.5-flash, gemini-1.5-flash-8b, gemini-pro
  • API-Schlüssel: Setze die Umgebungsvariable GEMINI_API_KEY

Ollama (Lokal)

Alle 31 unterstützten Modelle:

  • Neueste: deepseek-r1, deepseek-v3, deepseek-v2.5, deepseek-coder, deepseek-coder-v2, qwen3, qwen2.5-coder, llama3.3, gemma3, phi4
  • Beliebt: mistral-small, codellama, llama3.2, llama3.1, qwen2.5, gemma2, phi3, mistral, codegemma, wizardlm2
  • Weitere: dolphin-mistral, openhermes, deepcoder, stable-code, wizardcoder, magicoder, solar, yi, zephyr, orca-mini, vicuna
  • Konfiguration: Setze OLLAMA_BASE_URL (Standard: http://localhost:11434)

Konfiguration

1

Umgebungsvariablen

Richte deine API-Schlüssel und Konfiguration ein:

Stelle nur die Zugangsdaten des verwendeten Providers über deine Shell-Umgebung oder einen Secret-Manager bereit. Die folgenden Befehle lesen vorhandene Umgebungswerte; sie enthalten keine API-Schlüssel.

# OpenAI
export OPENAI_API_KEY="${OPENAI_API_KEY:?Set OPENAI_API_KEY in your environment}"
export OPENAI_BASE_URL="https://api.openai.com/v1"  # Optional

# Anthropic Claude
export ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY:?Set ANTHROPIC_API_KEY in your environment}"
export ANTHROPIC_BASE_URL="https://api.anthropic.com"  # Optional

# Google Gemini
export GEMINI_API_KEY="${GEMINI_API_KEY:?Set GEMINI_API_KEY in your environment}"

# Ollama (Local)
export OLLAMA_BASE_URL="http://localhost:11434"  # Optional
2

Agent-Konfiguration

Gib das Modell beim Erstellen von Agenten an:

import { Agent } from '@astreus-ai/astreus';

const agent = await Agent.create({
  name: 'MyAgent',
  model: 'gpt-6-astra',  // Explicit selection, not a default change
  maxTokens: 2000
});

Kostenlose gehostete Modelle über OpenRouter

OpenRouter nutzt den bestehenden openai-Adapter, keinen fünften Provider. Setze die Gateway-URL und den zugehörigen Schlüssel, bevor du einen Agenten oder eine LLM-Instanz erstellst. OPENROUTER_API_KEY ist deine Umgebungsvariable und wird dem OPENAI_API_KEY des Adapters zugewiesen.

export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_API_KEY="${OPENROUTER_API_KEY:?Set OPENROUTER_API_KEY in your environment}"

Am 2026-09-13 verzeichnete der OpenRouter-Modellkatalog für diese IDs Ein- und Ausgabetokenpreise von null sowie Tool-Unterstützung:

  • openrouter/free
  • nvidia/nemotron-3.5-lightning:free
  • google/gemma-4-31b-it:free
  • google/gemma-4-26b-a4b-it:free
import { Agent } from '@astreus-ai/astreus';

const agent = await Agent.create({
  name: 'HostedFreeAgent',
  model: 'openrouter/free',
  maxTokens: 1000
});

const response = await agent.ask('Explain how a hash table works.');
console.log(response);

Kostenloser gehosteter Zugriff unterliegt Anfrage- und Verfügbarkeitslimits und ist nicht unbegrenzt. Ist ein kostenloses Modell nicht verfügbar, behandle den Fehler oder wähle ausdrücklich ein anderes kostenloses Modell; Astreus wechselt nicht automatisch zu kostenpflichtigen Modellen. Eine kostenlose Framework-Lizenz macht gehostete APIs nicht kostenlos, und lokales Ollama benötigt weiterhin Hardware und Strom.

Diese IDs mit Namensraum erfordern den OpenRouter-Endpunkt. Für direkte OpenAI-Nutzung stelle OPENAI_BASE_URL=https://api.openai.com/v1 und einen von OpenAI ausgestellten Schlüssel gemeinsam wieder her. Eine Änderung der Basis-URL betrifft alle Anfragen über diese Adapterinstanz.

Modelle ohne Zugangsdaten abfragen

getModelsByProvider liest den lokalen Framework-Katalog ohne API-Zugangsdaten oder authentifizierte Clients. Das bestätigt weder den Zugriff deines Kontos noch die aktuelle Verfügbarkeit eines gehosteten Modells.

import { getModelsByProvider } from '@astreus-ai/astreus';

const modelIds = getModelsByProvider('openai');
console.log(modelIds);

Verwendungsbeispiele

Grundlegende LLM-Verwendung

import { getLLM } from '@astreus-ai/astreus';

const llm = getLLM();

// Generate response
const response = await llm.generateResponse({
  model: 'claude-sonnet-5',
  messages: [{ role: 'user', content: 'Explain quantum computing' }],
  maxTokens: 1000
});

console.log(response.content);

Streaming-Antworten

// Stream response in real-time
for await (const chunk of llm.generateStreamResponse({
  model: 'gpt-6-astra',
  messages: [{ role: 'user', content: 'Write a story about AI' }],
  stream: true
})) {
  if (!chunk.done) {
    process.stdout.write(chunk.content);
  }
}

Funktionsaufrufe

const response = await llm.generateResponse({
  model: 'gpt-6-astra',
  messages: [{ role: 'user', content: 'What\'s the weather in Tokyo?' }],
  tools: [{
    type: 'function',
    function: {
      name: 'get_weather',
      description: 'Get current weather information',
      parameters: {
        type: 'object',
        properties: {
          location: { 
            type: 'string',
            description: 'City name'
          }
        },
        required: ['location']
      }
    }
  }]
});

// Handle tool calls
if (response.toolCalls) {
  response.toolCalls.forEach(call => {
    console.log(`Tool: ${call.function.name}`);
    console.log(`Args: ${call.function.arguments}`);
  });
}

LLM-Optionen

Konfiguriere das LLM-Verhalten mit diesen Optionen:

interface LLMRequestOptions {
  model: string;              // Required: Model identifier
  messages: LLMMessage[];     // Required: Conversation history
  temperature?: number;       // Model-dependent; omit for GPT-6 Astra
  maxTokens?: number;         // Max output tokens (default: 4096)
  stream?: boolean;           // Enable streaming responses
  systemPrompt?: string;      // System instructions
  tools?: Tool[];             // Function calling tools
}

Parameter-Details

  • temperature: Optional und modellabhängig. Für GPT-6 Astra weglassen; nicht jedes Modell akzeptiert Sampling-Parameter.
  • maxTokens: Maximale Anzahl an Tokens in der Antwort (je nach Modell unterschiedlich)
  • stream: Aktiviert Echtzeit-Streaming für lange Antworten
  • systemPrompt: Legt Verhalten und Kontext für das Modell fest
  • tools: Aktiviert Funktionsaufruf-Fähigkeiten

Provider-Funktionen

FeatureOpenAIClaudeGeminiOllama
Streaming✅✅✅✅
Function Calling✅✅EingeschränktEingeschränkt
Vision✅✅✅✅
Embeddings✅❌✅✅
Token Usage✅✅Eingeschränkt✅
Custom Base URL✅✅❌✅
Local Models❌❌❌✅

Vision-Modelle

Jeder Provider unterstützt bestimmte Modelle für die Bildanalyse:

OpenAI Vision

  • gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-4-vision-preview
  • gpt-4o-2024-08-06, gpt-4o-2024-05-13

Claude Vision

  • claude-3-5-sonnet-20241022, claude-3-5-sonnet-20240620
  • claude-3-opus-20240229, claude-3-sonnet-20240229, claude-3-haiku-20240307

Gemini Vision

  • gemini-1.5-pro, gemini-1.5-flash
  • gemini-1.0-pro-vision-latest, gemini-pro-vision

Ollama Vision

  • llava, llava:7b, llava:13b, llava:34b
  • llava-llama3, llava-phi3, moondream

Embedding-Modelle

Für Wissensdatenbanken und semantische Suche:

OpenAI Embeddings

  • text-embedding-3-large (3072 Dimensionen)
  • text-embedding-3-small (1536 Dimensionen)
  • text-embedding-ada-002 (1536 Dimensionen)

Gemini Embeddings

  • text-embedding-004
  • embedding-001

Ollama Embeddings

  • nomic-embed-text, mxbai-embed-large
  • all-minilm, snowflake-arctic-embed

Hinweis: Claude/Anthropic unterstützt keine Embeddings. Verwende OpenAI oder Gemini für die Embedding-Generierung.

Weitere Umgebungsvariablen

# Dedicated embedding API keys (optional)
OPENAI_EMBEDDING_API_KEY="your-embedding-key"
OPENAI_EMBEDDING_BASE_URL="https://api.openai.com/v1"
GEMINI_EMBEDDING_API_KEY="your-gemini-embedding-key"

# Dedicated vision API keys (optional)
OPENAI_VISION_API_KEY="your-vision-key"
OPENAI_VISION_BASE_URL="https://api.openai.com/v1"
ANTHROPIC_VISION_API_KEY="your-anthropic-vision-key"
ANTHROPIC_VISION_BASE_URL="https://api.anthropic.com"
GEMINI_VISION_API_KEY="your-gemini-vision-key"

Leitfaden zur Modellauswahl

Für Code-Generierung

  • Am besten: gpt-4o, claude-3-5-sonnet-20241022, deepseek-coder
  • Schnell: gpt-4o-mini, claude-3-5-haiku-20241022

Für Reasoning-Aufgaben

  • Am besten: claude-opus-4-20250514, gpt-6-astra, o3
  • Ausgewogen: claude-sonnet-4-20250514, gpt-4o

Für kreatives Schreiben

  • Am besten: gpt-6-astra, claude-3-opus-20240229
  • Schnell: gemini-2.5-pro, gpt-4o-mini

Für Datenschutz/lokale Nutzung

  • Am besten: deepseek-r1, llama3.3, qwen3
  • Code: deepseek-coder, codellama

Zuletzt aktualisiert: 13. September 2026