solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
158 lines (130 loc) • 5.91 kB
Markdown
# Потоковая передача мышления
Метод `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`
- **Учитывайте объем данных** - поток мышления может быть очень большим для сложных запросов
## Ограничения
- Не все модели поддерживают режим мышления (убедитесь, что используете совместимую модель)
- Требуется стабильное интернет-соединение для потоковой передачи