UNPKG

behemoth-cli

Version:

🌍 BEHEMOTH CLIv3.760.4 - Level 50+ POST-SINGULARITY Intelligence Trading AI

102 lines (85 loc) 2.67 kB
import { providerClientFactory, ChatCompletionMessage, ChatCompletionRequest } from './provider-clients.js'; export interface AIClientConfig { provider?: string; model?: string; temperature?: number; maxTokens?: number; } export class AIClient { private config: AIClientConfig; constructor(config: AIClientConfig = {}) { this.config = { provider: config.provider || 'groq', model: config.model, temperature: config.temperature || 0.7, maxTokens: config.maxTokens || 4096, ...config }; } async generateJSON<T = any>(prompt: string, systemPrompt?: string): Promise<T> { const messages: ChatCompletionMessage[] = []; if (systemPrompt) { messages.push({ role: 'system', content: systemPrompt }); } messages.push({ role: 'user', content: prompt }); const request: ChatCompletionRequest = { model: this.config.model || 'llama-3.3-70b-versatile', messages, temperature: this.config.temperature, max_tokens: this.config.maxTokens }; try { const provider = providerClientFactory.createProvider(this.config.provider!); const response = await provider.createChatCompletion(request); const content = response.choices[0]?.message?.content; if (!content) { throw new Error('No content received from AI provider'); } // Try to parse as JSON try { return JSON.parse(content) as T; } catch (parseError) { // If not valid JSON, wrap in an object return { content } as T; } } catch (error) { throw new Error(`AI generation failed: ${error}`); } } async generateText(prompt: string, systemPrompt?: string): Promise<string> { const messages: ChatCompletionMessage[] = []; if (systemPrompt) { messages.push({ role: 'system', content: systemPrompt }); } messages.push({ role: 'user', content: prompt }); const request: ChatCompletionRequest = { model: this.config.model || 'llama-3.3-70b-versatile', messages, temperature: this.config.temperature, max_tokens: this.config.maxTokens }; try { const provider = providerClientFactory.createProvider(this.config.provider!); const response = await provider.createChatCompletion(request); return response.choices[0]?.message?.content || ''; } catch (error) { throw new Error(`AI generation failed: ${error}`); } } } // Factory function for easy creation export function createAIClient(config?: AIClientConfig): AIClient { return new AIClient(config); }