import fetch from 'node-fetch'; // Определяем интерфейс AiResponse для лучшей типобезопасности interface AiResponse { response_text: string; confidence?: number; model_name?: string; } interface GeminiResponse { candidates: { content: { parts: { text: string; }[]; }[]; }[]; } // Функция для вызова AI модели с использованием токена и URL export async function callAiModel(query: string, token: string, url: string): Promise<any> { try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ query: query }) }); if (!response.ok) { throw new Error(`Ошибка при запросе к AI модели: ${response.status} ${response.statusText}`); } const data = await response.json(); return data; } catch (error) { console.error('Ошибка при вызове AI модели:', error); throw error; // Пробрасываем ошибку для обработки на верхнем уровне } } // Функции для вызова каждой AI модели // Временные реализации, возвращающие заглушки export const callAiModel1 = async (query: string, token: string): Promise<AiResponse> => { // TODO: Реализовать вызов AI Model 1 с использованием токена // Временная заглушка console.log("Вызов AI Model 1 с query:", query); return { response_text: 'Ответ от модели 1' }; }; export const callAiModel2 = async (query: string, token: string): Promise<AiResponse> => { const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent'; try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ query: query }) }); if (!response.ok) { throw new Error(`Ошибка при запросе к AI модели 2: ${response.status} ${response.statusText}`); } const data: GeminiResponse = await response.json() as GeminiResponse; console.log("Gemini API Response:", data); // Выводим ответ для отладки const response_text = data.candidates[0].content[0].parts[0].text; return { response_text: response_text, model_name: 'gemini-2.0-flash' }; } catch (error) { console.error('Ошибка при вызове AI модели 2:', error); throw error; } }; export const callAiModel3 = async (query: string, token: string): Promise<AiResponse> => { // TODO: Реализовать вызов AI Model 3 с использованием токена // Временная заглушка console.log("Вызов AI Model 3 с query:", query); return { response_text: 'Ответ от модели 3' }; }; JS import fetch from 'node-fetch'; // Определяем интерфейс AiResponse для лучшей типобезопасности interface AiResponse { response_text: string; confidence?: number; model_name?: string; } interface GeminiResponse { candidates: { content: { parts: { text: string; }[]; }[]; }[]; } // Функция для вызова AI модели с использованием токена и URL export async function callAiModel(query: string, token: string, url: string): Promise<any> { try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ query: query }) }); if (!response.ok) { throw new Error(`Ошибка при запросе к AI модели: ${response.status} ${response.statusText}`); } const data = await response.json(); return data; } catch (error) { console.error('Ошибка при вызове AI модели:', error); throw error; // Пробрасываем ошибку для обработки на верхнем уровне } } // Функции для вызова каждой AI модели // Временные реализации, возвращающие заглушки export const callAiModel1 = async (query: string, token: string): Promise<AiResponse> => { // TODO: Реализовать вызов AI Model 1 с использованием токена // Временная заглушка console.log("Вызов AI Model 1 с query:", query); return { response_text: 'Ответ от модели 1' }; }; export const callAiModel2 = async (query: string, token: string): Promise<AiResponse> => { const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent'; try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ query: query }) }); if (!response.ok) { throw new Error(`Ошибка при запросе к AI модели 2: ${response.status} ${response.statusText}`); } const data: GeminiResponse = await response.json() as GeminiResponse; console.log("Gemini API Response:", data); // Выводим ответ для отладки const response_text = data.candidates[0].content[0].parts[0].text; return { response_text: response_text, model_name: 'gemini-2.0-flash' }; } catch (error) { console.error('Ошибка при вызове AI модели 2:', error); throw error; } }; export const callAiModel3 = async (query: string, token: string): Promise<AiResponse> => { // TODO: Реализовать вызов AI Model 3 с использованием токена // Временная заглушка console.log("Вызов AI Model 3 с query:", query); return { response_text: 'Ответ от модели 3' }; }; { "questions": [{ "parts": [{"text": "Analyze the most relevant programming languages for quantitative trading on the EU exchange, considering performance and available libraries."}] }] } JS { "questions": [{ "parts": [{"text": "Analyze the most relevant programming languages for quantitative trading on the EU exchange, considering performance and available libraries."}] }] } Пока пытаюсь настроить только callAiModel2.
Что-то не то передаешь в тело запроса. Открой лучше документацию апи и глянь, что нужно конкретно передавать