UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API (совместимо с браузером и Node.js), с поддержкой функциональности мышления (Thinking Mode)

169 lines (131 loc) 5.68 kB
# Работа с WebSocket соединениями В этом разделе описаны методы SDK для работы с WebSocket соединениями и потоковой передачей данных. ## Основы работы с WebSocket SDK предоставляет высокоуровневое API для работы с WebSocket, интегрированное в основные классы: ```javascript const { CodeSolverSDK } = require('solver-sdk'); const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'your-api-key' }); // Получение WebSocket клиента const wsClient = sdk.getWebSocketClient(); // Подключение к пространству имен рассуждений await wsClient.connectToReasoning('reasoning-id'); // Подписка на события wsClient.on('content_block_delta', (data) => { if (data.delta?.type === 'thinking_delta') { console.log('Фрагмент мышления:', data.delta.thinking); } }); // Отключение wsClient.disconnect(WebSocketNamespace.REASONING); ``` ## Модули с поддержкой WebSocket ### Чат и рассуждения ```javascript // Подключение WebSocket для чата await sdk.chat.connectWebSocket(); // Подписка на события sdk.chat.on('message_start', (data) => { console.log('Начало сообщения:', data); }); sdk.chat.on('content_block_delta', (data) => { if (data.delta?.type === 'thinking_delta') { console.log('Фрагмент мышления:', data.delta.thinking); } }); // Отключение await sdk.chat.disconnectWebSocket(); ``` ### Зависимости ```javascript // Подключение к пространству имен зависимостей await sdk.dependencies.connectWebSocket(projectId); // Подписка на события зависимостей sdk.dependencies.on('dependency_update', (data) => { console.log('Обновление зависимостей:', data); }); // Отключение await sdk.dependencies.disconnectWebSocket(); ``` ### Проекты и индексация ```javascript // Подключение к пространству имен проектов await sdk.projects.connectWebSocket(); // Подписка на события индексации sdk.projects.on('indexing_progress', (data) => { console.log('Прогресс индексации:', data.progress); }); // Отключение await sdk.projects.disconnectWebSocket(); ``` ## Поддерживаемые события Основные события, на которые можно подписаться: | Событие | Описание | Примечание | |---------|----------|------------| | `message_start` | Начало сообщения | { id, model, type } | | `content_block_start` | Начало блока контента | { content_block: { type }, index } | | `content_block_delta` | Дельта блока контента | См. документацию для типов дельт | | `content_block_stop` | Конец блока контента | { content_block: { type }, index } | | `message_stop` | Конец сообщения | { id, type, stop_reason } | | `error` | Ошибка | { message, code, ... } | ## Потоковая передача мышления Самый простой способ получать мышление — использовать метод `streamChatWithThinking`: ```javascript // Обработчик событий const handleEvent = (eventType, data) => { if (eventType === 'content_block_delta' && data.delta?.type === 'thinking_delta') { console.log('Мышление:', data.delta.thinking); } else if (eventType === 'content_block_delta' && data.delta?.type === 'text_delta') { console.log('Ответ:', data.delta.text); } else if (eventType === 'message_stop') { console.log('Завершение ответа'); } }; // Отправка запроса с потоковым мышлением const messages = [ { role: 'user', content: 'Объясни квантовую механику' } ]; const options = { model: 'claude-3-7-sonnet-20240229', thinking: true, temperature: 0.7 }; const response = await sdk.chat.streamChatWithThinking( messages, options, handleEvent ); ``` ## Обработка ошибок ```javascript try { await sdk.chat.streamChatWithThinking( messages, options, handleEvent ); } catch (error) { if (error.code === 'CONNECTION_ERROR') { console.error('Ошибка подключения:', error.message); } else { console.error('Произошла ошибка:', error.message); } } ``` ## Настройка WebSocket ```javascript // Настройка параметров WebSocket при создании SDK const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'your-api-key', websocket: { reconnect: true, // Автоматическое переподключение reconnectAttempts: 5, // Максимальное количество попыток rejectUnauthorized: false // Для самоподписанных сертификатов } }); ``` ## Дополнительная информация Для детального описания всех возможностей WebSocket, смотрите [руководство по мышлению](./features/THINKING.md) и примеры в директории [examples/websocket](../examples/websocket).