/** * Fireworks AI LLM Provider * * Implements LLMProvider interface for Fireworks AI models. * Extends OpenAICompatibleProvider for shared functionality. * * @example * ```typescript * const provider = createFireworksProvider({ * model: 'accounts/fireworks/models/llama-v3p1-70b-instruct', * apiKey: process.env.FIREWORKS_API_KEY * }); * ``` * * @remarks * - Requires valid Fireworks AI API key * - Default model is accounts/fireworks/models/llama-v3p1-8b-instruct * - Supports Llama, Mixtral, and fine-tuned models */ import type { ChatOptions } from './types.js'; import { ProviderError } from '../errors.js'; import { OpenAICompatibleProvider } from './openai-compatible.js'; /** * Configuration for FireworksProvider */ export interface FireworksProviderConfig { /** Fireworks AI API key (falls back to FIREWORKS_API_KEY env var) */ apiKey?: string; /** Base URL for Fireworks API (default: https://api.fireworks.ai/inference) */ baseUrl?: string; /** Default model to use (default: accounts/fireworks/models/llama-v3p1-8b-instruct) */ model?: string; /** Default max tokens (default: 4096) */ maxTokens?: number; /** Request timeout in milliseconds (default: 120000) */ timeout?: number; /** Optional token estimator (e.g., tiktoken) for debug payload */ estimateTokens?: (text: string) => number; } /** * Fireworks AI LLM Provider * * Provides streaming chat completion using Fireworks AI. * Supports Llama, Mixtral, and custom fine-tuned models. */ export declare class FireworksProvider extends OpenAICompatibleProvider { readonly name = "fireworks"; private readonly apiKey; constructor(config?: FireworksProviderConfig); /** * Fireworks AI authentication with Bearer token */ protected getAuthHeaders(): Record; /** * Fireworks AI chat completions endpoint (OpenAI-compatible) */ protected getEndpointPath(): string; /** * Fireworks AI uses standard OpenAI body format */ protected buildProviderSpecificBody(_options?: ChatOptions): Record; /** * Extract cache statistics from Fireworks response headers. * Fireworks returns cache stats in headers rather than the JSON body. * @see https://docs.fireworks.ai/guides/prompt-caching */ protected extractCacheStatsFromHeaders(headers: Headers): { cacheReadTokens?: number; }; /** * Map HTTP errors with Fireworks AI-specific messages */ protected mapHttpError(status: number, body: string, _model: string): ProviderError; /** * Map connection errors with Fireworks AI-specific messages */ protected mapConnectionError(_error: Error): ProviderError; } /** * Create a Fireworks AI provider instance * * @example * ```typescript * // Using environment variable (FIREWORKS_API_KEY) * const provider = createFireworksProvider(); * * // With explicit API key * const provider = createFireworksProvider({ apiKey: 'fw_...' }); * * // With custom model * const provider = createFireworksProvider({ * model: 'accounts/fireworks/models/llama-v3p1-70b-instruct' * }); * ``` */ export declare function createFireworksProvider(config?: FireworksProviderConfig): FireworksProvider;