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) 4.81 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.AzureProviderError = exports.AzureProvider = 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 AzureProvider extends BaseProvider_1.BaseProvider { constructor(config, logger) { super(logger); this.config = new config_1.AzureConfig(config, logger); this.cache = new cache_1.AzureCache(); } 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 AzureProvider chat', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleAzureError)(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 AzureProvider streamChat', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleAzureError)(error); } } getCapabilities() { return { maxTokens: 4096, supportsFunctionCalling: true, supportsStreaming: true, supportedModels: ['gpt-35-turbo', 'gpt-4'], maxSimultaneousCalls: 1, supportsSemanticCaching: false, }; } async embed(text) { try { return await (0, embedding_1.embed)(this.config, text); } catch (error) { this.logger.error('Error in AzureProvider embed', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleAzureError)(error); } } async embedBatch(texts) { try { return await (0, embedding_1.embedBatch)(this.config, texts); } catch (error) { this.logger.error('Error in AzureProvider embedBatch', { error: error instanceof Error ? error.message : String(error) }); throw (0, errors_1.handleAzureError)(error); } } convertToolSchema(schema) { return (0, tools_1.convertToolSchema)(schema); } convertToolCall(call) { return (0, tools_1.convertToolCall)(call); } clearCache() { this.cache.clear(); this.logger.debug('AzureProvider cache cleared'); } } exports.AzureProvider = AzureProvider; __exportStar(require("./types"), exports); var errors_2 = require("./errors"); Object.defineProperty(exports, "AzureProviderError", { enumerable: true, get: function () { return errors_2.AzureProviderError; } });