UNPKG

@llumiverse/drivers

Version:

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

72 lines 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClaudeModelDefinition = exports.NON_GLOBAL_ANTHROPIC_MODELS = exports.ANTHROPIC_REGIONS = void 0; const core_1 = require("@llumiverse/core"); const claude_messages_js_1 = require("../../shared/claude-messages.js"); exports.ANTHROPIC_REGIONS = { us: "us-east5", europe: "europe-west1", global: "global", }; exports.NON_GLOBAL_ANTHROPIC_MODELS = [ "claude-3-5", "claude-3", ]; /** * Parse a VertexAI model path (e.g. "locations/us-east5/claude-3-5-sonnet") into * its region and model name components. */ function resolveVertexAIModelPath(options) { const splits = options.model.split("/"); let region; if (splits[0] === "locations" && splits.length >= 2) { region = splits[1]; } const modelName = splits[splits.length - 1]; return { modelName, region, options: { ...options, model: modelName } }; } class ClaudeModelDefinition { model; constructor(modelId) { this.model = { id: modelId, name: modelId, provider: 'vertexai', type: core_1.ModelType.Text, can_stream: true, }; } async createPrompt(_driver, segments, options) { return (0, claude_messages_js_1.formatClaudePrompt)(segments, options); } async requestTextCompletion(driver, prompt, options) { const { region, options: resolvedOptions } = resolveVertexAIModelPath(options); const client = await driver.getAnthropicClient(region); const model_options = resolvedOptions.model_options; if (model_options?._option_id !== undefined && model_options?._option_id !== "vertexai-claude" && model_options?._option_id !== "text-fallback") { driver.logger.debug({ options: resolvedOptions.model_options }, "Unexpected option id"); } return (0, claude_messages_js_1.executeClaudeCompletion)(client, prompt, resolvedOptions); } async requestTextCompletionStream(driver, prompt, options) { const { region, options: resolvedOptions } = resolveVertexAIModelPath(options); const client = await driver.getAnthropicClient(region); const model_options = resolvedOptions.model_options; if (model_options?._option_id !== undefined && model_options?._option_id !== "vertexai-claude" && model_options?._option_id !== "text-fallback") { driver.logger.debug({ options: resolvedOptions.model_options }, "Unexpected option id"); } return (0, claude_messages_js_1.streamClaudeCompletion)(client, prompt, resolvedOptions); } isClaudeErrorRetryable(error, httpStatusCode, errorType) { return (0, claude_messages_js_1.isClaudeErrorRetryable)(error, httpStatusCode, errorType); } formatLlumiverseError(_driver, error, context) { return (0, claude_messages_js_1.formatAnthropicLlumiverseError)(error, context); } } exports.ClaudeModelDefinition = ClaudeModelDefinition; //# sourceMappingURL=claude.js.map