@llumiverse/drivers
Version:
LLM driver implementations. Currently supported are: openai, huggingface, bedrock, replicate.
64 lines • 2.85 kB
JavaScript
;
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