UNPKG

@nomyx/assistant

Version:

A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)

112 lines (111 loc) 5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenRouterProviderError = exports.OpenRouterProvider = void 0; const BaseProvider_1 = require("../BaseProvider"); const config_1 = require("./config"); const cache_1 = require("./cache"); const chat_1 = require("./chat"); const streaming_1 = require("./streaming"); const embedding_1 = require("./embedding"); const tools_1 = require("./tools"); const errors_1 = require("./errors"); class OpenRouterProvider extends BaseProvider_1.BaseProvider { constructor(config, logger) { super(logger); this.config = new config_1.OpenRouterConfig(config, logger); this.cache = new cache_1.OpenRouterCache(); } async chat(messages, options, tools) { try { const cacheKey = { messages, options, tools }; if (this.cache.has(cacheKey)) { this.logger.debug('Cache hit for chat request'); return this.cache.get(cacheKey); } const processedMessages = await this.applyMiddleware(messages); const response = await (0, chat_1.chat)(this.config, processedMessages, options, tools); const processedResponse = await this.applyMiddlewareToResponse(response); if (processedResponse.toolCalls) { processedResponse.toolCalls = await this.applyMiddlewareToToolCalls(processedResponse.toolCalls); } this.cache.set(cacheKey, processedResponse); return processedResponse; } catch (error) { this.logger.error('Error in OpenRouterProvider chat', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleOpenRouterError)(error); } } async *streamChat(messages, options, tools) { try { const processedMessages = await this.applyMiddleware(messages); for await (const response of (0, streaming_1.streamChat)(this.config, processedMessages, options, tools)) { const processedResponse = await this.applyMiddlewareToResponse(response); if (processedResponse.toolCalls) { processedResponse.toolCalls = await this.applyMiddlewareToToolCalls(processedResponse.toolCalls); } yield processedResponse; } } catch (error) { this.logger.error('Error in OpenRouterProvider streamChat', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleOpenRouterError)(error); } } getCapabilities() { return { maxTokens: 4096, // This may vary depending on the specific model supportsFunctionCalling: true, supportsStreaming: true, supportedModels: ['gpt-3.5-turbo', 'gpt-4', 'claude-2', 'palm-2'], // Add more supported models maxSimultaneousCalls: 1, supportsSemanticCaching: false, }; } async embed(text) { try { return await (0, embedding_1.embed)(this.config, text); } catch (error) { this.logger.error('Error in OpenRouterProvider embed', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleOpenRouterError)(error); } } async embedBatch(texts) { try { return await (0, embedding_1.embedBatch)(this.config, texts); } catch (error) { this.logger.error('Error in OpenRouterProvider embedBatch', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleOpenRouterError)(error); } } convertToolSchema(schema) { return (0, tools_1.convertToolSchema)(schema); } convertToolCall(call) { return (0, tools_1.convertToolCall)(call); } clearCache() { this.cache.clear(); this.logger.debug('OpenRouterProvider cache cleared'); } } exports.OpenRouterProvider = OpenRouterProvider; __exportStar(require("./types"), exports); var errors_2 = require("./errors"); Object.defineProperty(exports, "OpenRouterProviderError", { enumerable: true, get: function () { return errors_2.OpenRouterProviderError; } });