UNPKG

@nomyx/assistant

Version:

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

59 lines (58 loc) 2.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.chat = chat; const axios_1 = __importDefault(require("axios")); const utils_1 = require("./utils"); async function chat(config, messages, options, tools) { const logger = config.getLogger(); try { const requestBody = { model: config.getModel(), messages: (0, utils_1.convertMessages)(messages, config.getModel()), max_tokens: options.maxTokens, temperature: options.temperature, }; if (tools && tools.length > 0) { requestBody.tools = tools .map(tool => (0, utils_1.convertToolSchema)(tool.getSchema())) .map(schema => ({ type: 'function', function: schema })); requestBody.tool_choice = 'auto'; } const response = await axios_1.default.post('https://api.openai.com/v1/chat/completions', requestBody, { headers: { 'Authorization': `Bearer ${config.getApiKey()}`, 'Content-Type': 'application/json', }, }); logger.debug('OpenAI response received', { content: response.data.choices[0].message?.content, toolCalls: response.data.choices[0].message?.tool_calls }); const providerResponse = { content: response.data.choices[0].message?.content || '', toolCalls: (0, utils_1.convertToolCalls)(response.data.choices[0].message?.tool_calls), usage: (0, utils_1.convertUsage)(response.data.usage), }; return providerResponse; } catch (error) { handleError(config, error); throw error; } } function handleError(config, error) { const logger = config.getLogger(); if (axios_1.default.isAxiosError(error)) { logger.error('OpenAIProvider: API request failed:', { status: error.response?.status, message: error.message, data: error.response?.data }); } else { logger.error('OpenAIProvider: Unexpected error:', error); } }