Skip to main content

Using providers

Providers are the lowest layer of JorEl. They map between the various LLM APIs and JorEl's unified interface. JorEl ships with providers for OpenAI, Anthropic, Groq, Grok, Google Vertex AI, and Ollama. You can also write your own provider to support additional LLM APIs.

Structure of a provider

Each provider must implement the LlmCoreProvider interface. This interface defines the methods that JorEl uses to interact with the provider.

interface LlmCoreProvider {
readonly name: string;

generateResponse(model: string, messages: CoreLlmMessage[], config?: LlmGenerationConfig): Promise<LlmResponse>;

generateResponseStream(
model: string,
messages: CoreLlmMessage[],
config?: LlmGenerationConfig,
): AsyncGenerator<LlmStreamResponseChunk | LlmStreamResponse | LlmStreamResponseWithToolCalls, void, unknown>;

getAvailableModels(): Promise<string[]>;

createEmbedding(model: string, text: string): Promise<number[]>;
}

The LlmGenerationConfig interface is defined as follows:

import {LogService, LogLevel, LlmToolKit, LlmToolChoice} from "jorel";

interface LlmGenerationConfig {
temperature?: number;
maxTokens?: number;
json?: boolean;
tools?: LlmToolKit;
toolChoice?: LlmToolChoice;
logLevel?: LogLevel;
logger?: LogService;
}

Available providers

JorEl ships with the following providers:

  • AnthropicProvider
  • GoogleVertexAiProvider
  • GrokProvider
  • GroqProvider
  • OllamaProvider
  • OpenAIProvider