UNPKG

@dev-fastn-ai/ucl-sdk

Version:

Fastn UCL SDK - A robust TypeScript SDK for integrating AI agents with Fastn UCL

178 lines 6.74 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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.LLMService = exports.GeminiProvider = exports.ClaudeProvider = exports.OpenAIProvider = void 0; const errors_1 = require("../utils/errors"); class OpenAIProvider { constructor(config) { this.config = config; } async invoke(message) { try { const { default: OpenAI } = await Promise.resolve().then(() => __importStar(require('openai'))); const openai = new OpenAI({ apiKey: this.config.apiKey, baseURL: 'https://api.openai.com/v1' }); const response = await openai.chat.completions.create({ model: this.config.model || 'gpt-3.5-turbo', temperature: this.config.temperature || 0.1, max_tokens: this.config.maxTokens || 1000, messages: [ { role: 'system', content: "You are a helpful assistant." }, { role: 'user', content: message } ] }); const result = response.choices[0]?.message?.content; if (!result) { throw new errors_1.LLMError('No response from OpenAI'); } return result; } catch (error) { throw new errors_1.LLMError(`OpenAI chat completion failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } } } exports.OpenAIProvider = OpenAIProvider; class ClaudeProvider { constructor(config) { this.config = config; } async invoke(message) { try { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': this.config.apiKey, 'anthropic-version': '2023-06-01' }, body: JSON.stringify({ model: this.config.model || 'claude-3-sonnet-20240229', max_tokens: this.config.maxTokens || 1000, temperature: this.config.temperature || 0.1, messages: [ { role: 'user', content: message } ] }) }); if (!response.ok) { throw new Error(`Claude API error: ${response.status}`); } const data = await response.json(); const result = data.content[0]?.text; if (!result) { throw new errors_1.LLMError('No response from Claude'); } return result; } catch (error) { throw new errors_1.LLMError(`Claude chat completion failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } } } exports.ClaudeProvider = ClaudeProvider; class GeminiProvider { constructor(config) { this.config = config; } async invoke(message) { try { const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${this.config.model || 'gemini-pro'}:generateContent`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.config.apiKey}` }, body: JSON.stringify({ contents: [{ parts: [{ text: message }] }], generationConfig: { temperature: this.config.temperature || 0.1, maxOutputTokens: this.config.maxTokens || 1000 } }) }); if (!response.ok) { throw new Error(`Gemini API error: ${response.status}`); } const data = await response.json(); const result = data.candidates[0]?.content?.parts[0]?.text; if (!result) { throw new errors_1.LLMError('No response from Gemini'); } return result; } catch (error) { throw new errors_1.LLMError(`Gemini chat completion failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } } } exports.GeminiProvider = GeminiProvider; class LLMService { constructor(config) { this.provider = this.createProvider(config); } createProvider(config) { switch (config.provider) { case 'openai': return new OpenAIProvider(config); case 'claude': return new ClaudeProvider(config); case 'gemini': return new GeminiProvider(config); default: throw new errors_1.LLMError(`Unsupported LLM provider: ${config.provider}`); } } async invoke(message) { return this.provider.invoke(message); } } exports.LLMService = LLMService; //# sourceMappingURL=llm-service.js.map