Работа в режиме рассуждений
Режим рассуждений повышает качество генерации, когда ответ на вопрос зависит от комбинации действий, порядка операций или неявных ограничений. Например:
-
в арифметических задачах с несколькими операциями:
(34 + 67) * 2 - 15 -
в логических задачах с условиями:
Если все А — Б, некоторые Б — В, то все ли А — В? -
при составлении маршрута:
Встреча в 14:00, дорога 45 минут, нужно прибыть за 10 минут
Генерация в режиме рассуждений расходует больше токенов. Токены, потраченные на рассуждения, оплачиваются согласно выбранному тарифу.
Функциональность доступна клиентам ООО «Салют для Бизнеса» при запросах к адресу https://api.giga.chat/.
В этом разделе вы узнаете как запускать модели GigaChat в режиме рассуждений в зависимости от версии эндпоинта /chat/completions.
Запуск модели в режиме рассуждений
Для запуска режима рассуждений, в запросе к эндпоинту /chat/completions задайте параметр effort, который отвечает за глубину рассуждений модели.
Это можно сделать по-разному, в зависимости от версии эндпоинта.
Запрос формата v2
Чтобы запустить ре жим рассуждений в запросе POST /v2/chat/completions передайте параметр model_options.reasoning.effort:
Для работы с запросами формата V2 используйте GigaChat SDK версии 0.2.2a3 и выше. Запрос можно сформировать в виде простого словаря или задать с помощью моделей.
from gigachat import GigaChat
from gigachat.models import ChatCompletionRequest, ChatMessage, ChatReasoning, ChatModelOptions
request_dict = {
"model": "GigaChat-2-Max",
"messages": [
{
"role": "user",
"content": [
{
"text": "Как полететь на луну?"
}
]
}
],
"model_options": {
"reasoning": {
"effort": "medium"
}
}
}
# Использование моделей для запуска рассуждений
request_model = ChatCompletionRequest(
model="GigaChat-2-Max",
messages=[
ChatMessage(
role="user",
content="Как полететь на луну?",
)
],
model_options=ChatModelOptions(
reasoning=ChatReasoning (
effort="medium"
),
),
)
with GigaChat(
base_url="https://api.giga.chat/v2",
credentials="<ключ_авторизации>",
scope="GIGACHAT_API_CORP",
verify_ssl_certs=False,
) as client:
response_dict = client.chat.create(request_dict)
response_model = client.chat.create(request_model)
print("Ответ на запрос со словарем:")
print(response_dict)
print("\nРассуждения:")
print(response_dict.messages[0].content[0].text)
print("\n" + "="*50 + "\n")
print("Ответ на запрос с моделями:")
print(response_model)
print("\nРассуждения:")
print(response_model.messages[0].content[0].text)
curl --request POST \
--url https://api.giga.chat/v2/chat/completions \
--header 'Authorization: Bearer <токен_доступа>' \
--header 'Content-Type: application/json' \
--data '{
"model": "GigaChat-2-Max",
"messages": [
{
"role": "user",
"content": [
{
"text": "Сравни REST, GraphQL и gRPC для микросервисной архитектуры высоконагруженной системы. Учитывай производительность, удобство разработки и обратную совместимость."
}
]
}
],
"model_options": {
"reasoning": {
"effort": "medium"
}
}
}'
Ответ модели будет включать два сообщения.
Описание рассуждений возвращается в отдельном сообщении с ролью reasoning.
{
"model": "GigaChat-2-Max:2.0.30.01",
"created_at": 1782481456,
"messages": [
{
"role": "reasoning",
"content": [
{
"text": "<Рассуждения>"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "<Ответ модели>"
}
]
}
],
"finish_reason": "stop",
"usage": {
"input_tokens": 60,
"input_tokens_details": {
"prompt_tokens": 60,
"cached_tokens": 3
},
"output_tokens": 1287,
"total_tokens": 1347
}
}
Запрос формата v1
Чтобы запустить режим рассуждений в запросе POST /v1/chat/completions передайте параметр reasoning_effort в корне сообщения:
Для отправки запросов формата V1 используйте GigaChat SDK версии 0.2.1 и выше. Запрос можно сформировать в виде простого словаря или задать с помощью моделей.
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole
request_dict = {
"model": "GigaChat-2-Max",
"messages": [
{
"role": "user",
"content": "Как полететь на луну?",
}
],
"reasoning_effort": "medium",
}
# Использование моделей для запуска рассуждений
request_model = Chat(
model="GigaChat-2-Max",
messages=[Messages(role=MessagesRole.USER, content="Как полететь на луну?")],
reasoning_effort="medium",
)
with GigaChat(
base_url="https://api.giga.chat/v1",
credentials="<ключ_авторизации>",
scope="GIGACHAT_API_CORP",
verify_ssl_certs=False,
) as client:
response_dict = client.chat(request_dict)
response_model = client.chat(request_model)
print("Ответ на запрос со словарем:")
print(response_dict)
print("\nРассуждения:")
print(response_dict.choices[0].message.reasoning_content)
print("\n" + "="*50 + "\n")
print("Ответ на запрос с моделями:")
print(response_model)
print("\nРассуждения:")
print(response_model.choices[0].message.reasoning_content)
curl --request POST \
--url https://api.giga.chat/v1/chat/completions \
--header 'Authorization: Bearer <токен_доступа>' \
--header 'Content-Type: application/json' \
--data '{
"model": "GigaChat-2-Max",
"reasoning_effort": "medium",
"messages": [
{
"role": "user",
"content": "Как полететь на луну?"
}
]
}'
При запросе в формате V1 описание рассуждений возвращается в сообщении с ролью assistant в поле reasoning_content:
{
"choices": [
{
"message": {
"content": "<Ответ модели>",
"role": "assistant",
"reasoning_content": "<Рассуждения>"
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1782475405,
"model": "GigaChat-2-Max:2.0.30.01",
"object": "chat.completions",
"usage": {
"prompt_tokens": 31,
"completion_tokens": 974,
"total_tokens": 1005,
"precached_prompt_tokens": 4
}
}
Потоковая генерация в режиме рассуждений
Вы можете одновременно включить режим рассуждений и потоковую генерацию токенов.
Для этого передайте в запросе параметр "stream": true.
При обработке ответа учитывайте, что формат потока событий отличается в разных версиях запроса.