/** * API-Hilfsmodul für Chat-Anfragen * Verwendet das Backend für sichere AI API Aufrufe */ import { ChatMessage } from '../services/openai'; import { sendChatCompletion, ChatCompletionResponse, TokenUsage } from './backendApi'; // Re-export types for backward compatibility export type { TokenUsage }; // Rückgabetyp für die Chat-Anfrage export type ChatRequestResult = { content: string; usage: TokenUsage; }; /** * Sendet eine Chat-Anfrage über das Backend * @param messages Array von Nachrichten * @param temperature Kreativität (0.0 - 1.0) * @param maxTokens Maximale Token in der Antwort * @param config Model-Konfiguration (für modelId Extraktion) * @returns Die Antwort des Modells als Text mit Tokennutzung */ export async function sendChatRequest( messages: ChatMessage[], temperature: number = 0.7, maxTokens: number = 800, config: { endpoint?: string; apiKey?: string; deployment: string; apiVersion?: string; } ): Promise { console.log('sendChatRequest via Backend:', { messagesCount: messages.length, deployment: config.deployment, temperature, maxTokens, }); try { // Map deployment name to model ID const modelId = getModelIdFromDeployment(config.deployment); // Send request through backend const result = await sendChatCompletion( messages, modelId, temperature, maxTokens ); return { content: result.content, usage: result.usage, }; } catch (error) { console.error('Fehler beim Backend API-Aufruf:', error); // Return user-friendly error message const errorMessage = error instanceof Error ? error.message : 'Unbekannter Fehler'; return `Es konnte keine Antwort generiert werden. Bitte stelle sicher, dass das Backend läuft. Fehler: ${errorMessage}`; } } /** * Maps deployment names to model IDs * This ensures backward compatibility with existing code */ function getModelIdFromDeployment(deployment: string): string { const deploymentToModelId: Record = { 'gpt-o3-mini-se': '550e8400-e29b-41d4-a716-446655440000', 'gpt-4o-mini-se': '550e8400-e29b-41d4-a716-446655440004', 'gpt-4o-se': '550e8400-e29b-41d4-a716-446655440005', }; const modelId = deploymentToModelId[deployment]; if (!modelId) { console.warn(`Unknown deployment: ${deployment}, using default model`); return '550e8400-e29b-41d4-a716-446655440000'; // Default to GPT-O3-Mini } return modelId; }