Рассуждения
Продвинутые возможности рассуждения с Responses API
Responses API поддерживает продвинутые возможности рассуждения, позволяя моделям показать свой внутренний процесс рассуждения с настраиваемыми уровнями усилий.
Настройка рассуждений
Настройте поведение рассуждений используя параметр reasoning
:
const response = await fetch('https://api.aitunnel.ru/v1/responses', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'o1-preview',
input: 'В чем смысл жизни?',
reasoning: {
effort: 'high'
},
max_output_tokens: 9000,
}),
});
const result = await response.json();
console.log(result);
import requests
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': 'В чем смысл жизни?',
'reasoning': {
'effort': 'high'
},
'max_output_tokens': 9000,
}
)
result = response.json()
print(result)
curl -X POST https://api.aitunnel.ru/v1/responses \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "o1-preview",
"input": "В чем смысл жизни?",
"reasoning": {
"effort": "high"
},
"max_output_tokens": 9000
}'
Уровни усилий рассуждения
Параметр effort
контролирует, сколько вычислительных усилий модель вкладывает в рассуждение:
Уровень усилий | Описание |
---|---|
minimal | Базовое рассуждение с минимальными вычислительными усилиями |
low | Легкое рассуждение для простых проблем |
medium | Сбалансированное рассуждение для умеренной сложности |
high | Глубокое рассуждение для сложных проблем |
Пример сложного рассуждения
Для сложных математических или логических задач:
const response = await fetch('https://api.aitunnel.ru/v1/responses', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'o1-preview',
input: [
{
type: 'message',
role: 'user',
content: [
{
type: 'input_text',
text: 'Был ли 1995 год 30 лет назад? Покажи свои рассуждения.',
},
],
},
],
reasoning: {
effort: 'high'
},
max_output_tokens: 9000,
}),
});
const result = await response.json();
console.log(result);
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': [
{
'type': 'message',
'role': 'user',
'content': [
{
'type': 'input_text',
'text': 'Был ли 1995 год 30 лет назад? Покажи свои рассуждения.',
},
],
},
],
'reasoning': {
'effort': 'high'
},
'max_output_tokens': 9000,
}
)
result = response.json()
print(result)
Рассуждения в контексте разговора
Включите рассуждения в многоходовые разговоры:
const response = await fetch('https://api.aitunnel.ru/v1/responses', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'o1-preview',
input: [
{
type: 'message',
role: 'user',
content: [
{
type: 'input_text',
text: 'Какой твой любимый цвет?',
},
],
},
{
type: 'message',
role: 'assistant',
id: 'msg_abc123',
status: 'completed',
content: [
{
type: 'output_text',
text: "У меня нет любимого цвета.",
annotations: []
}
]
},
{
type: 'message',
role: 'user',
content: [
{
type: 'input_text',
text: 'Сколько Земель поместится на Марсе?',
},
],
},
],
reasoning: {
effort: 'high'
},
max_output_tokens: 9000,
}),
});
const result = await response.json();
console.log(result);
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': [
{
'type': 'message',
'role': 'user',
'content': [
{
'type': 'input_text',
'text': 'Какой твой любимый цвет?',
},
],
},
{
'type': 'message',
'role': 'assistant',
'id': 'msg_abc123',
'status': 'completed',
'content': [
{
'type': 'output_text',
'text': "У меня нет любимого цвета.",
'annotations': []
}
]
},
{
'type': 'message',
'role': 'user',
'content': [
{
'type': 'input_text',
'text': 'Сколько Земель поместится на Марсе?',
},
],
},
],
'reasoning': {
'effort': 'high'
},
'max_output_tokens': 9000,
}
)
result = response.json()
print(result)
Стриминговые рассуждения
Включите стриминг, чтобы видеть развитие рассуждений в реальном времени:
const response = await fetch('https://api.aitunnel.ru/v1/responses', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'o1-preview',
input: 'Реши пошагово: Если поезд едет со скоростью 60 км/ч в течение 2,5 часов, какое расстояние он преодолеет?',
reasoning: {
effort: 'medium'
},
stream: true,
max_output_tokens: 9000,
}),
});
const reader = response.body?.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader!.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = line.slice(6);
if (data === '[DONE]') return;
try {
const parsed = JSON.parse(data);
if (parsed.type === 'response.reasoning.delta') {
console.log('Рассуждение:', parsed.delta);
}
} catch (e) {
// Пропускаем невалидный JSON
}
}
}
}
import requests
import json
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': 'Реши пошагово: Если поезд едет со скоростью 60 км/ч в течение 2,5 часов, какое расстояние он преодолеет?',
'reasoning': {
'effort': 'medium'
},
'stream': True,
'max_output_tokens': 9000,
},
stream=True
)
for line in response.iter_lines():
if line:
line = line.decode('utf-8')
if line.startswith('data: '):
data = line[6:]
if data == '[DONE]':
break
try:
parsed = json.loads(data)
if parsed.get('type') == 'response.reasoning.delta':
print('Рассуждение:', parsed.get('delta'))
except json.JSONDecodeError:
continue
Ответ с рассуждениями
Когда рассуждения включены, ответ содержит информацию о рассуждениях:
{
"id": "resp_1234567890",
"object": "response",
"created_at": 1234567890,
"model": "o1-preview",
"output": [
{
"type": "reasoning",
"id": "rs_abc123",
"encrypted_content": "gAAAAABotI9-FK1PbhZhaZk4yMrZw3XDI1AWFaKb9T0NQq7LndK6zaRB...",
"summary": [
"Сначала мне нужно определить текущий год",
"Затем вычислить разность с 1995 годом",
"Наконец, сравнить это с 30 годами"
]
},
{
"type": "message",
"id": "msg_xyz789",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Да. В 2025 году 1995 год был 30 лет назад. Фактически, на сегодняшний день (31 августа 2025 года) прошло ровно 30 лет с 31 августа 1995 года.",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 15,
"output_tokens": 85,
"output_tokens_details": {
"reasoning_tokens": 45
},
"total_tokens": 100
},
"status": "completed"
}
Структура ответа с рассуждениями
reasoning
- Объект с зашифрованным содержимым рассужденийencrypted_content
- Зашифрованный текст внутренних рассуждений моделиsummary
- Краткое изложение основных шагов рассужденияreasoning_tokens
- Количество токенов, использованных для рассуждений
Лучшие практики
- Выбирайте подходящие уровни усилий: Используйте
high
для сложных проблем,low
для простых задач - Учитывайте использование токенов: Рассуждения увеличивают потребление токенов
- Используйте стриминг: Для длинных цепочек рассуждений стриминг обеспечивает лучший пользовательский опыт
- Включайте контекст: Предоставляйте достаточный контекст для эффективного рассуждения модели
Совместимые модели
Рассуждения поддерживаются следующими моделями:
o1-preview
- Основная модель для рассужденийo1-mini
- Облегченная версия для простых задачo1-pro
- Продвинутая модель для сложных рассуждений
Примеры использования
Математические задачи
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': 'Найди площадь треугольника со сторонами 3, 4 и 5 см. Покажи все вычисления.',
'reasoning': {
'effort': 'medium'
}
}
)
Логические головоломки
response = requests.post(
'https://api.aitunnel.ru/v1/responses',
headers={
'Authorization': 'Bearer sk-aitunnel-xxx',
'Content-Type': 'application/json',
},
json={
'model': 'o1-preview',
'input': 'У тебя есть 12 шаров, один из которых тяжелее остальных. Как найти его за 3 взвешивания на весах?',
'reasoning': {
'effort': 'high'
}
}
)
Ограничения
- Рассуждения доступны только для определенных моделей (o1 серии)
- Увеличивают время ответа и стоимость запроса
- Содержимое рассуждений зашифровано и недоступно для чтения
- Качество рассуждений зависит от сложности задачи
Совет
Рассуждения особенно полезны для задач, требующих пошагового анализа: математических вычислений, логических выводов, планирования и решения сложных проблем.