/** * Type-safe LLM (Large Language Model) vendor classes. */ import { type OpenAIPresetModel } from "../presets.js"; import type { LlmConfig } from "../types.js"; import { BaseLLM, type BaseLlmOptions } from "./base.js"; /** * Constructor options for OpenAI LLM. */ type OpenAICommonOptions = BaseLlmOptions & { /** OpenAI API key. Optional only for AgentKit-supported Agora-managed models. */ apiKey?: string; /** Model name (e.g., 'gpt-4o-mini', 'gpt-4', 'gpt-3.5-turbo') */ model: string; /** API endpoint URL */ url?: string; /** Maximum number of conversation history messages to cache */ maxHistory?: number; /** Sampling temperature (0.0–2.0) */ temperature?: number; /** Nucleus sampling (0.0–1.0) */ topP?: number; /** Maximum tokens to generate */ maxTokens?: number; /** System messages for the LLM */ systemMessages?: Record[]; /** Greeting message for the agent */ greetingMessage?: string; /** Failure message when LLM call fails */ failureMessage?: string; /** Input modalities (defaults to ["text"]) */ inputModalities?: string[]; /** Additional LLM parameters */ params?: Record; /** Custom headers forwarded to the LLM provider */ headers?: Record; }; export type OpenAIOptions = (OpenAICommonOptions & { apiKey: string; url: string; }) | (Omit & { apiKey?: undefined; model: OpenAIPresetModel; url?: undefined; vendor?: undefined; }); /** * OpenAI LLM vendor (and OpenAI-compatible APIs). * * @example * ```typescript * const llm = new OpenAI({ * apiKey: process.env.OPENAI_API_KEY, * model: 'gpt-4o', * url: 'https://api.openai.com/v1/chat/completions', * }); * ``` */ export declare class OpenAI extends BaseLLM { private readonly options; constructor(options: OpenAIOptions); toConfig(): LlmConfig; } /** * Constructor options for Azure OpenAI LLM. */ export interface AzureOpenAIOptions extends BaseLlmOptions { /** Azure OpenAI API key */ apiKey: string; /** Model/deployment name */ model: string; /** Azure resource name (e.g., 'my-resource'). Required when endpoint is not set. */ resourceName?: string; /** Full Azure base URL (e.g., for sovereign clouds or private endpoints). Takes precedence over resourceName. */ endpoint?: string; /** Deployment name in Azure */ deploymentName: string; /** Azure API version (defaults to '2024-08-01-preview') */ apiVersion?: string; /** Maximum number of conversation history messages to cache */ maxHistory?: number; /** Sampling temperature (0.0–2.0) */ temperature?: number; /** Nucleus sampling (0.0–1.0) */ topP?: number; /** Maximum tokens to generate */ maxTokens?: number; /** System messages for the LLM */ systemMessages?: Record[]; /** Greeting message for the agent */ greetingMessage?: string; /** Failure message when LLM call fails */ failureMessage?: string; /** Input modalities (defaults to ["text"]) */ inputModalities?: string[]; /** Additional LLM parameters */ params?: Record; /** Custom headers forwarded to the LLM provider */ headers?: Record; } /** * Azure OpenAI LLM vendor. * * @example * ```typescript * const llm = new AzureOpenAI({ * apiKey: process.env.AZURE_OPENAI_API_KEY, * model: 'gpt-4', * resourceName: 'my-azure-resource', * deploymentName: 'gpt-4-deployment', * }); * ``` */ export declare class AzureOpenAI extends BaseLLM { private readonly options; constructor(options: AzureOpenAIOptions); toConfig(): LlmConfig; } /** * Constructor options for Anthropic Claude LLM. */ export interface AnthropicOptions extends BaseLlmOptions { /** Anthropic API key */ apiKey: string; /** Model name (e.g., 'claude-3-5-sonnet-20241022', 'claude-3-opus-20240229') */ model: string; /** API endpoint URL */ url: string; /** Maximum number of conversation history messages to cache */ maxHistory?: number; /** Maximum tokens to generate */ maxTokens: number; /** Sampling temperature (0.0–1.0) */ temperature?: number; /** Nucleus sampling (0.0–1.0) */ topP?: number; /** System messages for the LLM */ systemMessages?: Record[]; /** Greeting message for the agent */ greetingMessage?: string; /** Failure message when LLM call fails */ failureMessage?: string; /** Input modalities (defaults to ["text"]) */ inputModalities?: string[]; /** Additional LLM parameters */ params?: Record; /** Custom headers forwarded to the LLM provider */ headers?: Record; } /** * Anthropic Claude LLM vendor. * * @example * ```typescript * const llm = new Anthropic({ * apiKey: process.env.ANTHROPIC_API_KEY, * model: 'claude-3-5-sonnet-20241022', * url: 'https://api.anthropic.com/v1/messages', * headers: { 'anthropic-version': '2023-06-01' }, * maxTokens: 1024, * }); * ``` */ export declare class Anthropic extends BaseLLM { private readonly options; constructor(options: AnthropicOptions); toConfig(): LlmConfig; } /** * Constructor options for Google Gemini LLM. */ export interface GeminiOptions extends BaseLlmOptions { /** Google API key */ apiKey: string; /** Model name (e.g., 'gemini-pro', 'gemini-pro-vision') */ model: string; /** Optional full API endpoint URL override. When omitted, AgentKit builds the official Gemini stream URL. */ url?: string; /** Maximum number of conversation history messages to cache */ maxHistory?: number; /** Sampling temperature (0.0–2.0) */ temperature?: number; /** Nucleus sampling (0.0–1.0) */ topP?: number; /** Top-k sampling */ topK?: number; /** Maximum output tokens to generate */ maxOutputTokens?: number; /** System messages for the LLM */ systemMessages?: Record[]; /** Greeting message for the agent */ greetingMessage?: string; /** Failure message when LLM call fails */ failureMessage?: string; /** Input modalities (defaults to ["text"]) */ inputModalities?: string[]; /** Additional LLM parameters */ params?: Record; /** Custom headers forwarded to the LLM provider */ headers?: Record; } /** * Google Gemini LLM vendor. * * @example * ```typescript * const llm = new Gemini({ * apiKey: process.env.GOOGLE_API_KEY, * model: 'gemini-pro', * }); * ``` */ export declare class Gemini extends BaseLLM { private readonly options; constructor(options: GeminiOptions); toConfig(): LlmConfig; } type OpenAIStyleOptions = BaseLlmOptions & { apiKey: string; model: string; url: string; maxHistory?: number; temperature?: number; topP?: number; maxTokens?: number; systemMessages?: Record[]; greetingMessage?: string; failureMessage?: string; inputModalities?: string[]; params?: Record; headers?: Record; }; export type GroqOptions = OpenAIStyleOptions; export declare class Groq extends BaseLLM { private readonly options; constructor(options: GroqOptions); toConfig(): LlmConfig; } export type CustomLLMOptions = OpenAIStyleOptions; export declare class CustomLLM extends BaseLLM { private readonly options; constructor(options: CustomLLMOptions); toConfig(): LlmConfig; } export interface VertexAILLMOptions extends BaseLlmOptions { apiKey: string; model: string; projectId: string; location: string; url?: string; maxHistory?: number; temperature?: number; topP?: number; topK?: number; maxOutputTokens?: number; systemMessages?: Record[]; greetingMessage?: string; failureMessage?: string; inputModalities?: string[]; params?: Record; headers?: Record; } export declare class VertexAILLM extends BaseLLM { private readonly options; constructor(options: VertexAILLMOptions); toConfig(): LlmConfig; } export interface AmazonBedrockOptions extends BaseLlmOptions { /** AWS access key ID. */ accessKey: string; /** AWS secret access key. */ secretKey: string; /** AWS region. */ region: string; model: string; maxHistory?: number; maxTokens?: number; temperature?: number; topP?: number; topK?: number; systemMessages?: Record[]; greetingMessage?: string; failureMessage?: string; inputModalities?: string[]; params?: Record; headers?: Record; } export declare class AmazonBedrock extends BaseLLM { private readonly options; constructor(options: AmazonBedrockOptions); toConfig(): LlmConfig; } export interface DifyOptions extends BaseLlmOptions { apiKey: string; url: string; model: string; user?: string; conversationId?: string; maxHistory?: number; systemMessages?: Record[]; greetingMessage?: string; failureMessage?: string; inputModalities?: string[]; params?: Record; headers?: Record; } export declare class Dify extends BaseLLM { private readonly options; constructor(options: DifyOptions); toConfig(): LlmConfig; } export {};