UNPKG

@llumiverse/drivers

Version:

LLM driver implementations. Currently supported are: openai, huggingface, bedrock, replicate.

64 lines 2.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnthropicDriver = void 0; const sdk_1 = __importDefault(require("@anthropic-ai/sdk")); const core_1 = require("@llumiverse/core"); const claude_messages_js_1 = require("../shared/claude-messages.js"); class AnthropicDriver extends core_1.AbstractDriver { provider = core_1.Providers.anthropic; client; constructor(opts) { super(opts); this.client = new sdk_1.default({ apiKey: opts.apiKey, ...(opts.baseURL ? { baseURL: opts.baseURL } : {}) }); } formatPrompt(segments, opts) { return (0, claude_messages_js_1.formatClaudePrompt)(segments, opts); } async requestTextCompletion(prompt, options) { const model_options = options.model_options; if (model_options?._option_id !== undefined && model_options?._option_id !== "anthropic-claude") { this.logger.debug({ options: options.model_options }, "Unexpected option id"); } return (0, claude_messages_js_1.executeClaudeCompletion)(this.client, prompt, options); } async requestTextCompletionStream(prompt, options) { const model_options = options.model_options; if (model_options?._option_id !== undefined && model_options?._option_id !== "anthropic-claude") { this.logger.debug({ options: options.model_options }, "Unexpected option id"); } return (0, claude_messages_js_1.streamClaudeCompletion)(this.client, prompt, options); } async listModels(_params) { const page = await this.client.models.list({ limit: 1000 }); return page.data.map((m) => ({ id: m.id, name: m.display_name ?? m.id, provider: core_1.Providers.anthropic, type: core_1.ModelType.Text, can_stream: true, })); } async validateConnection() { try { await this.client.models.list({ limit: 1 }); return true; } catch { return false; } } async generateEmbeddings(_opts) { throw new core_1.LlumiverseError('[anthropic] Anthropic does not support embeddings', false, { provider: core_1.Providers.anthropic, model: _opts.model ?? 'unknown', operation: 'execute' }, undefined); } buildStreamingConversation(prompt, result, toolUse, options) { return (0, claude_messages_js_1.buildClaudeStreamingConversation)(prompt, result, toolUse, options); } formatLlumiverseError(error, context) { return (0, claude_messages_js_1.formatAnthropicLlumiverseError)(error, context); } } exports.AnthropicDriver = AnthropicDriver; //# sourceMappingURL=index.js.map