import React, { useEffect, useState } from 'react'; import { backendApi } from '../../services/apiClient'; import { Bot, Loader2 } from 'lucide-react'; export const AISection: React.FC = () => { const [enabled, setEnabled] = useState(false); const [url, setUrl] = useState(''); const [apiKey, setApiKey] = useState(''); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); useEffect(() => { backendApi .getAIChatSettings() .then((data) => { setEnabled(data.enabled !== false); setUrl(data.url || ''); setApiKey(data.apiKey || ''); }) .catch(() => { setEnabled(false); setUrl(''); setApiKey(''); }) .finally(() => setLoading(false)); }, []); const handleSave = async () => { setSaving(true); try { await backendApi.saveAIChatSettings({ enabled, url: url.trim(), apiKey: apiKey.trim(), }); window.dispatchEvent(new CustomEvent('mkd-ai-status-changed')); alert('Настройки ИИ сохранены'); } catch (e: unknown) { const msg = e && typeof e === 'object' && 'message' in e ? String((e as { message: string }).message) : 'Ошибка сохранения'; alert(msg); } finally { setSaving(false); } }; if (loading) { return (
Включение чата с ИИ и настройка адреса API (OpenAI-совместимый) и токена
URL эндпоинта Chat Completions (OpenAI-совместимый)