Astreus

LLM

Interface unifiée pour plusieurs fournisseurs de LLM avec routage automatique Découvrez les schémas de configuration, les API et les exemples pratiques...

Interface unifiée pour plusieurs fournisseurs de LLM avec routage automatique

Vue d'ensemble

La couche d'abstraction LLM offre une intégration transparente avec plusieurs fournisseurs d'IA, vous permettant de basculer entre OpenAI, Claude, Gemini et Ollama sans changer votre code. Elle gère les implémentations spécifiques à chaque fournisseur, le formatage des messages et le streaming, tout en offrant une API cohérente pour tous les fournisseurs.

Fournisseurs pris en charge

Astreus prend en charge quatre fournisseurs de LLM majeurs avec routage automatique des modèles :

Les exemples sélectionnent les modèles explicitement ; les valeurs par défaut toujours prises en charge restent inchangées. Les modèles retirés des API natives nécessitent de sélectionner explicitement un modèle actuel de remplacement.

OpenAI

Identifiants actuels pour l’API directe:

  • gpt-6-astra
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-5.6-luna
  • Clé API : définissez la variable d'environnement OPENAI_API_KEY

Pour les requêtes directes à OpenAI, les appels d’outils de GPT-6 Astra nécessitent l’API Responses. L’adaptateur gère ce protocole ; les passerelles compatibles OpenAI configurées utilisent Chat Completions. Ne définissez ni temperature ni top_p pour GPT-6 Astra. Consultez le guide des modèles OpenAI.

Anthropic Claude

Identifiants actuels pour l’API directe:

  • claude-fable-5-1
  • claude-opus-5
  • claude-sonnet-5
  • claude-haiku-4-5-20251001
  • Clé API : définissez la variable d'environnement ANTHROPIC_API_KEY

Google Gemini

Les 12 modèles pris en charge :

  • Latest : gemini-2.5-pro, gemini-2.5-pro-deep-think, gemini-2.5-flash, gemini-2.5-flash-lite
  • Stable : 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
  • Clé API : définissez la variable d'environnement GEMINI_API_KEY

Ollama (local)

Les 31 modèles pris en charge :

  • Latest : deepseek-r1, deepseek-v3, deepseek-v2.5, deepseek-coder, deepseek-coder-v2, qwen3, qwen2.5-coder, llama3.3, gemma3, phi4
  • Populaire : mistral-small, codellama, llama3.2, llama3.1, qwen2.5, gemma2, phi3, mistral, codegemma, wizardlm2
  • Additionnel : dolphin-mistral, openhermes, deepcoder, stable-code, wizardcoder, magicoder, solar, yi, zephyr, orca-mini, vicuna
  • Configuration : définissez OLLAMA_BASE_URL (par défaut : http://localhost:11434)

Configuration

1

Variables d'environnement

Configurez vos clés API et paramètres :

Fournissez uniquement les identifiants du fournisseur utilisé via l’environnement du shell ou un gestionnaire de secrets. Les commandes ci-dessous lisent les valeurs déjà présentes dans l’environnement ; elles ne contiennent aucune clé API.

# 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

Configuration de l'agent

Spécifiez le modèle lors de la création des agents :

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
});

Modèles hébergés gratuits via OpenRouter

OpenRouter utilise l’adaptateur openai existant, pas un cinquième fournisseur. Configurez l’URL de la passerelle et la clé correspondante avant de créer un agent ou une instance LLM. OPENROUTER_API_KEY est votre variable d’environnement, affectée à OPENAI_API_KEY pour l’adaptateur.

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

Au 2026-09-13, le catalogue de modèles OpenRouter indiquait un prix nul pour les tokens d’entrée et de sortie, ainsi que la prise en charge des outils, pour ces identifiants :

  • 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);

L’accès hébergé gratuit comporte des limites de requêtes et de disponibilité ; il n’est pas illimité. Si un modèle gratuit est indisponible, gérez l’erreur ou choisissez explicitement un autre modèle gratuit ; Astreus ne bascule pas automatiquement vers des modèles payants. Une licence gratuite du framework ne rend pas les API hébergées gratuites, et Ollama en local nécessite toujours du matériel et de l’électricité.

Ces identifiants préfixés nécessitent l’endpoint OpenRouter. Pour revenir à OpenAI en direct, rétablissez ensemble OPENAI_BASE_URL=https://api.openai.com/v1 et une clé émise par OpenAI. Modifier l’URL de base affecte toutes les requêtes utilisant cette instance de l’adaptateur.

Consulter les modèles sans identifiants

getModelsByProvider lit le catalogue local du framework sans identifiants API ni clients authentifiés. Cela ne garantit ni l’accès de votre compte ni la disponibilité actuelle d’un modèle hébergé.

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

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

Exemples d'utilisation

Utilisation basique du LLM

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);

Réponses en streaming

// 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);
  }
}

Appel de fonctions

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}`);
  });
}

Options LLM

Configurez le comportement du LLM avec ces options :

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
}

Détails des paramètres

  • temperature : facultatif et dépendant du modèle. Omettez-le pour GPT-6 Astra ; tous les modèles n’acceptent pas les paramètres d’échantillonnage.
  • maxTokens : nombre maximum de tokens dans la réponse (varie selon le modèle)
  • stream : active le streaming en temps réel pour les réponses longues
  • systemPrompt : définit le comportement et le contexte du modèle
  • tools : active les capacités d'appel de fonctions

Fonctionnalités par fournisseur

FonctionnalitéOpenAIClaudeGeminiOllama
Streaming✅✅✅✅
Appel de fonctions✅✅LimitéLimité
Vision✅✅✅✅
Embeddings✅❌✅✅
Utilisation de tokens✅✅Limité✅
URL de base personnalisée✅✅❌✅
Modèles locaux❌❌❌✅

Modèles Vision

Chaque fournisseur prend en charge des modèles spécifiques pour l'analyse d'images :

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

Modèles d'embedding

Pour la base de connaissances et la recherche sémantique :

OpenAI Embeddings

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

Gemini Embeddings

  • text-embedding-004
  • embedding-001

Ollama Embeddings

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

Note : Claude/Anthropic ne prend pas en charge les embeddings. Utilisez OpenAI ou Gemini pour la génération d'embeddings.

Variables d'environnement supplémentaires

# 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"

Guide de sélection du modèle

Pour la génération de code

  • Meilleur : gpt-4o, claude-3-5-sonnet-20241022, deepseek-coder
  • Rapide : gpt-4o-mini, claude-3-5-haiku-20241022

Pour les tâches de raisonnement

  • Meilleur : claude-opus-4-20250514, gpt-6-astra, o3
  • Équilibré : claude-sonnet-4-20250514, gpt-4o

Pour l'écriture créative

  • Meilleur : gpt-6-astra, claude-3-opus-20240229
  • Rapide : gemini-2.5-pro, gpt-4o-mini

Pour la confidentialité/l'usage local

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

Dernière mise à jour : 13 septembre 2026