UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

158 lines (130 loc) 5.91 kB
# Потоковая передача мышления Метод `streamChatWithThinking()` позволяет получать не только финальный ответ модели, но и её размышления в процессе формирования ответа. Этот подход даёт более глубокое понимание логики модели и возможность видеть её работу в режиме реального времени. ## Быстрый старт ```javascript const { CodeSolverSDK } = require('solver-sdk'); async function example() { // Инициализация SDK const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'ваш-ключ-api' }); // Сообщения для отправки const messages = [ { role: 'user', content: 'Объясни, как работает квантовая криптография' } ]; // Опции запроса const options = { model: 'claude-3-7-sonnet-20240229', thinking: true, // Включаем передачу мышления temperature: 0.7 }; // Обработчик потоковых данных const handleStream = (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('Ответ завершён'); } }; try { // Отправляем запрос с потоковым мышлением await sdk.chat.streamChatWithThinking( messages, options, handleStream ); } catch (error) { // Обработка ошибок соединения if (error.code === 'CONNECTION_ERROR') { console.error('Проблема с подключением к серверу'); } // Обработка прочих ошибок else { console.error('Произошла ошибка:', error.message); } } } example(); ``` ## Метод streamChatWithThinking ### Синтаксис ```javascript sdk.chat.streamChatWithThinking(messages, options, callback) ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|----------| | `messages` | Array | Массив сообщений для отправки модели | | `options` | Object | Параметры запроса, включая модель и флаг `thinking: true` | | `callback` | Function | Функция обратного вызова для обработки событий потока | ### Возвращаемое значение Промис, который разрешается объектом с информацией о соединении: ```javascript { status: 'streaming', socketId: 'socket_12345678', provider: 'AnthropicProviderAdapter', model: 'claude-3-7-sonnet-20240229' } ``` ## Примеры использования ### Обработка мышления и ответа с выводом в UI ```javascript // Предполагаем наличие элементов UI для вывода мышления и ответа const thinkingElement = document.getElementById('thinking-output'); const responseElement = document.getElementById('response-output'); // Обработчик потока const handleStream = (eventType, data) => { if (eventType === 'content_block_delta') { // Обработка мышления if (data.delta?.type === 'thinking_delta') { thinkingElement.textContent += data.delta.thinking; } // Обработка ответа else if (data.delta?.type === 'text_delta') { responseElement.textContent += data.delta.text; } } }; // Отправка запроса sdk.chat.streamChatWithThinking( [{ role: 'user', content: userInput }], { model: 'claude-3-7-sonnet-20240229', thinking: true }, handleStream ); ``` ### Обработка ошибок ```javascript try { await sdk.chat.streamChatWithThinking( messages, options, handleStream ); } catch (error) { // Обработка ошибок соединения if (error.code === 'CONNECTION_ERROR') { console.error('Проблема с подключением к серверу'); } // Обработка прочих ошибок else { console.error('Произошла ошибка:', error.message); } } ``` ## Рекомендации по использованию - **Включайте режим мышления** только когда это необходимо (опция `thinking: true`), так как это увеличивает объем передаваемых данных - **Используйте буферизацию** при отображении потоковых данных в UI, чтобы снизить нагрузку на рендеринг - **Обрабатывайте все типы событий**, особенно `error` и `message_stop` - **Учитывайте объем данных** - поток мышления может быть очень большим для сложных запросов ## Ограничения - Не все модели поддерживают режим мышления (убедитесь, что используете совместимую модель) - Требуется стабильное интернет-соединение для потоковой передачи