Astreus

LLM

Interfaccia unificata per più provider LLM con routing automatico Scopri i pattern di configurazione, le API e gli esempi pratici necessari per creare...

Interfaccia unificata per più provider LLM con routing automatico

Panoramica

Il livello di astrazione LLM offre un'integrazione fluida con più provider AI, permettendoti di passare da OpenAI, Claude, Gemini e Ollama senza modificare il tuo codice. Gestisce le implementazioni specifiche di ogni provider, la formattazione dei messaggi e lo streaming, offrendo al contempo un'API coerente su tutti i provider.

Provider supportati

Astreus supporta quattro provider LLM principali con routing automatico dei modelli:

OpenAI

Tutti i 14 modelli supportati:

  • Ultimi: gpt-4.5, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o4-mini, o4-mini-high, o3
  • Stabili: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-4, gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-instruct
  • Chiave API: imposta la variabile d'ambiente OPENAI_API_KEY

Anthropic Claude

Tutti i 9 modelli supportati:

  • Ultimi: claude-sonnet-4-20250514, claude-opus-4-20250514, claude-3.7-sonnet-20250224
  • Stabili: claude-3-5-sonnet-20241022, claude-3-5-sonnet-20240620, claude-3-5-haiku-20241022, claude-3-opus-20240229, claude-3-sonnet-20240229, claude-3-haiku-20240307
  • Chiave API: imposta la variabile d'ambiente ANTHROPIC_API_KEY

Google Gemini

Tutti i 12 modelli supportati:

  • Ultimi: gemini-2.5-pro, gemini-2.5-pro-deep-think, gemini-2.5-flash, gemini-2.5-flash-lite
  • Stabili: 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
  • Chiave API: imposta la variabile d'ambiente GEMINI_API_KEY

Ollama (locale)

Tutti i 31 modelli supportati:

  • Ultimi: deepseek-r1, deepseek-v3, deepseek-v2.5, deepseek-coder, deepseek-coder-v2, qwen3, qwen2.5-coder, llama3.3, gemma3, phi4
  • Popolari: mistral-small, codellama, llama3.2, llama3.1, qwen2.5, gemma2, phi3, mistral, codegemma, wizardlm2
  • Aggiuntivi: dolphin-mistral, openhermes, deepcoder, stable-code, wizardcoder, magicoder, solar, yi, zephyr, orca-mini, vicuna
  • Configurazione: imposta OLLAMA_BASE_URL (predefinito: http://localhost:11434)

Configurazione

1

Variabili d'ambiente

Configura le tue chiavi API e le impostazioni:

# OpenAI
export OPENAI_API_KEY="your-openai-key"
export OPENAI_BASE_URL="https://api.openai.com/v1"  # Optional

# Anthropic Claude
export ANTHROPIC_API_KEY="your-anthropic-key"
export ANTHROPIC_BASE_URL="https://api.anthropic.com"  # Optional

# Google Gemini
export GEMINI_API_KEY="your-gemini-key"

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

Configurazione dell'Agent

Specifica il modello quando crei gli agent:

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

const agent = await Agent.create({
  name: 'MyAgent',
  model: 'gpt-4.5',  // Model automatically routes to correct provider
  temperature: 0.7,
  maxTokens: 2000
});

Esempi di utilizzo

Utilizzo base dell'LLM

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

const llm = getLLM();

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

console.log(response.content);

Risposte in streaming

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

Chiamata a funzioni

const response = await llm.generateResponse({
  model: 'gpt-4o',
  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}`);
  });
}

Opzioni LLM

Configura il comportamento dell'LLM con queste opzioni:

interface LLMRequestOptions {
  model: string;              // Required: Model identifier
  messages: LLMMessage[];     // Required: Conversation history
  temperature?: number;       // Creativity level (0.0-1.0, default: 0.7)
  maxTokens?: number;         // Max output tokens (default: 4096)
  stream?: boolean;           // Enable streaming responses
  systemPrompt?: string;      // System instructions
  tools?: Tool[];             // Function calling tools
}

Dettagli dei parametri

  • temperature: controlla la casualità (0.0 = deterministico, 1.0 = molto creativo)
  • maxTokens: numero massimo di token nella risposta (varia in base al modello)
  • stream: abilita lo streaming in tempo reale per risposte lunghe
  • systemPrompt: imposta il comportamento e il contesto per il modello
  • tools: abilita le capacità di function calling

Funzionalità per provider

FunzionalitàOpenAIClaudeGeminiOllama
Streaming
Function CallingLimitatoLimitato
Vision
Embedding
Utilizzo dei tokenLimitato
Base URL personalizzato
Modelli locali

Modelli Vision

Ogni provider supporta modelli specifici per l'analisi delle immagini:

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

Modelli di Embedding

Per la knowledge base e la ricerca semantica:

OpenAI Embeddings

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

Gemini Embeddings

  • text-embedding-004
  • embedding-001

Ollama Embeddings

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

Nota: Claude/Anthropic non supporta gli embedding. Usa OpenAI o Gemini per la generazione di embedding.

Variabili d'ambiente aggiuntive

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

Guida alla selezione del modello

Per la generazione di codice

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

Per task di ragionamento

  • Migliori: claude-opus-4-20250514, gpt-4.5, o3
  • Bilanciati: claude-sonnet-4-20250514, gpt-4o

Per la scrittura creativa

  • Migliori: gpt-4.5, claude-3-opus-20240229
  • Veloci: gemini-2.5-pro, gpt-4o-mini

Per privacy/uso locale

  • Migliori: deepseek-r1, llama3.3, qwen3
  • Codice: deepseek-coder, codellama

Ultimo aggiornamento: 6 luglio 2026