
Привет, Хабр!
Недавно я выпустил на OZON авторскую коллекцию интеллектуальных вопросов, отобранных из базы ЧГК, квизов и тематических пабликов. Я постарался собрать не просто интересные и «красивые» задачи, а такие, которые можно решить логически — без знания редких фактов.
Со временем мне пришла в голову мысль: а как с такими задачами справятся современные большие языковые модели (LLM)? Особенно те, которые ориентированы не просто на выдачу ответов, а на рассуждение.
Решил устроить мини-эксперимент и проверить!
Условия эксперимента:
60 текстовых вопросов на русском языке.
(Если вопрос представлял собой дуплет/триплет — я добавлял пояснение в промт.)Вопросы подавались в чат-режиме, без дополнительного контекста.
Функция поиска в интернете была отключена, чтобы исключить подглядывание в базу.
Результаты
Модель |
Правильных ответов |
Доля правильных ответов, % |
Место |
OpenAI o3 |
43 |
72 |
1 |
Gemini 2.5 pro |
42 |
70 |
2 |
Claude 3.7 Thinking |
25 |
42 |
3 |
DeepSeek R1 |
22 |
37 |
4 |
YandexGPT 4 pro (+рассуждение) |
21 |
35 |
5 |
Gemini 2.5 Flash |
17 |
28 |
6 |
GIGA CHAT 2 MAX |
16 |
27 |
7 |
P.S. Значения в таблице получены в рамках одного прогона — каждый вопрос задавался модели лишь один раз. Однако стоит учитывать, что у LLM есть параметр temperature, который управляет уровнем случайности в генерации ответа: чем выше значение, тем больше вариативность и «креативность» выдачи. Это напрямую влияет на выбор слов и логику рассуждения.
В идеале, чтобы получить более объективную картину, следовало бы запускать модель несколько раз на каждый вопрос, собирать распределение ответов и уже по нему вычислять, например, среднюю долю правильных решений.
Общие впечатления
? GigaChat 2 MAX: "вспоминающая", но не "рассуждающая"
GigaChat 2 MAX — единственная в списке модель, которую нельзя отнести к классу thinking-LLM. По сути, её ответы чаще всего основаны на прямом «вспоминании» фактов из обучающей выборки, а не на логическом выводе. Это особенно заметно в тех случаях, когда вопрос содержит реальные фамилии или узнаваемые формулировки.
Пример:
"Фридрих Фрёбель называл детей "божьими растениями". Он считается создателем первого... Чего?"
Правильный ответ: Детского сада
Вопрос звучит изящно, но если вы знаете, чем известен Фрёбель, — ответ даётся «в лоб». LLM, очевидно, просто узнала фамилию и сопоставила с известным фактом.
? Thinking-LLM: гипотезы, логика и немного магии
Все остальные протестированные модели можно условно отнести к "thinking-LLM" — они не просто выдают ответ, а проводят рассуждения. Часто можно наблюдать, как модель:
генерирует несколько гипотез;
перебирает их;
отвергает неверные;
находит финальную версию.
Именно эта цепочка делает их особенно интересными: они не только «вспоминают», но и строят вывод. Хотя стоит отметить, что порой встречаются случаи, когда модель угадывает правильный ответ, но объяснение к нему — полностью некорректно. Поэтому важно анализировать не только ответ, но и ход рассуждений.
Thinking-модели хорошо проявляют себя в задачах с нестандартной логикой, «чувством юмора» или зависимыми элементами (дуплеты, триплеты и т.п.).
Пример (юмор):
"Закончите шутку тремя словами: "А наш спонсор — отель «Развитие». Счастлив только тот, кто ...""
Правильный ответ: ... остановился в «Развитии»
На пару вопросов я получил настолько хорошие версии, что это может быть поводом переосмыслить или доработать формулировку вопроса.
Пример:
"ПЕРВЫЕ играют важную роль в экономике юга Чили. В книге чилийской писательницы Исабель Альенде говорится, что множество ПЕРВЫХ на склонах Анд похожи на ВТОРЫЕ, спустившиеся с высот до самой земли. Какие слова, начинающиеся на одну и ту же букву, заменены словами «ПЕРВАЯ» и «ВТОРОЕ»?"
Правильный ответ: овцы, облака (комментарий: пасущиеся на склонах овцы напоминали облака)
Одна из красивых версий от OpenAI o3: виноградники, водопады
При этом на по-настоящему нестандартные вопросы, особенно те, что требуют выйти за рамки обычной логики — модели, в целом, справляются хуже.
Пример (все модели ошиблись):
"Согласно шутке, «Муму» и «Дедушка Мазай и зайцы» — произведения из двух противоположных литературных жанров. Назовите оба этих жанра."
Правильный ответ: утопия и антиутопия
Вопрос требует не только знания произведений, но и нестандартного взгляда на жанры — что оказалось выше порога креативности большинства моделей.
? Повторные прогоны и распределение гипотез
Меня впечатлили результаты OpenAI o3 и Gemini 2.5 Pro — они существенно выделялись по точности и качеству объяснений. Чтобы получить более стабильную картину, я написал Python-скрипт, который по API вызывает Gemini 2.5 Pro:
каждый вопрос прогоняется по 5 раз без сохранения контекста (чтобы ответы были независимыми);
в промте я прошу сгенерировать 5 различных версий ответа, расположенных по убыванию уверенности.
Результаты:
Среднее количество правильных ответов по первым гипотезам: от 35 до 43 из 60.
Если же учитывать все гипотезы (25 на вопрос) и считать вопрос решённым, если среди них есть хотя бы один правильный — общее число правильных ответов выросло до 48 из 60 (80%)!
Подключение и взаимодействие по API с Gemini 2.5 pro
import os
import time
import logging
from typing import List, Tuple, Set
import pandas as pd
from google import genai #python >= 3.8
from google.genai import types
# ------------------------------------------------------------------
# 1. Константы
# ------------------------------------------------------------------
GEMINI_API_KEY = '' #ваш API-key
CSV_IN = "questions.txt" #две колонки: n- номер вопроса, question - текст вопроса
CSV_OUT = "answers_gemini.csv"
N_REPEATS = 5
RATE_LIMIT = 1 # сек между вызовами
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(message)s",
datefmt="%H:%M:%S",
)
# ------------------------------------------------------------------
# 2. Инициализация клиента
# ------------------------------------------------------------------
client = genai.Client(api_key=GEMINI_API_KEY)
# ------------------------------------------------------------------
# 3. Запрос к Gemini
# ------------------------------------------------------------------
def ask_llm(q_num: int, q_text: str) -> Tuple[str, int, float]:
system_instruction = (
"Вы — педантичный логик. "
"Придумайте пять разных вариантов ответов на вопрос "
"в порядке убывания степени уверенности в строго заданном формате:"
)
user_prompt = (
f"Вопрос №{q_num}.\n{q_text}\n"
"Формат ответа:\n"
"Гипотеза № <номер гипотезы>.\n"
"ОТВЕТ: <Ваш вывод>\n"
"ОБОСНОВАНИЕ: <2–3 предложения>"
)
t0 = time.perf_counter()
try:
response = client.models.generate_content(
model="gemini-2.5-pro",
config=types.GenerateContentConfig(
temperature=0.7,
#max_output_tokens=2048,
system_instruction=system_instruction
),
contents=[{"role": "user", "parts": [{"text": user_prompt}]}]
)
elapsed = round(time.perf_counter() - t0, 3)
# Извлечение текста
answer_txt = response.candidates[0].content.parts[0].text.strip()
return answer_txt, 0, elapsed
except Exception as e:
raise RuntimeError(f"Gemini error: {e}")
# ------------------------------------------------------------------
# 4. Основной цикл
# ------------------------------------------------------------------
def main() -> None:
df_in = pd.read_csv(CSV_IN, sep="\t", encoding="cp1251").dropna()
done: Set[Tuple[int, int]] = set()
if os.path.isfile(CSV_OUT):
df_done = pd.read_csv(CSV_OUT, encoding="utf-8-sig")
done = set(zip(df_done["N"], df_done["repeat"]))
logging.info("? Найдено %d уже сохранённых ответов → %s", len(done), CSV_OUT)
else:
logging.info("➕ CSV_OUT ещё не создан, начнём с нуля")
first_write = not os.path.isfile(CSV_OUT)
total_q = len(df_in)
for q_idx, row in enumerate(df_in.itertuples(index=False), start=1):
q_num, q_text = int(row.n), str(row.question)
for rep in range(1, N_REPEATS + 1):
if (q_num, rep) in done:
continue
logging.info("▶️ %d/%d | Вопрос №%s | попытка %s", q_idx, total_q, q_num, rep)
try:
ans, tokens, secs = ask_llm(q_num, q_text)
except Exception as exc:
logging.error("❌ Вопрос №%s, попытка %s: %s", q_num, rep, exc)
ans, tokens, secs = f"ERROR: {exc}", 0, 0.0
row_out = {
"N": q_num,
"repeat": rep,
"question": q_text,
"answer": ans,
"out_tokens": tokens,
"elapsed_sec": secs,
}
pd.DataFrame([row_out]).to_csv(
CSV_OUT,
mode="a",
header=first_write,
index=False,
encoding="utf-8-sig",
)
first_write = False
time.sleep(RATE_LIMIT)
logging.info("✅ Готово. Все результаты зафиксированы в %s", CSV_OUT)
if __name__ == "__main__":
main()
? Напоследок — идея: модели в связке
Мне кажется интересным следующее направление: запуск моделей в связке — одна генерирует гипотезы, другая их анализирует. Например, модель А предлагает 3 варианта, а модель B выбирает лучший или предлагает свою интерпретацию. Это своего рода имитация командной игры или брейншторма — где один игрок выдвигает идею, а другой уточняет или спорит.
Выводы
Результаты LLM на логических и «квизовых» вопросах — действительно впечатляют. Современные модели умеют не только вспоминать, но и строить рассуждения, формировать альтернативные гипотезы и порой даже предлагать более остроумные или точные формулировки, чем оригинал.
На мой взгляд, LLM уже можно использовать как ассистента при составлении интеллектуальных и логических задач. Вот несколько советов, как извлечь из этого максимум пользы:
Используйте "thinking-LLM" — такие как OpenAI o3 и Gemini 2.5 Pro (актуальные на момент написания статьи). У них лучшие цепочки рассуждений и гибкость мышления.
Читайте объяснения, а не только ответы. Даже если ответ правильный — путь к нему может многое сказать о качестве логики.
Запрашивайте несколько версий ответа. Это поможет найти неожиданные, но достойные альтернативные формулировки, которые могли бы улучшить или разнообразить ваш вопрос.
Задавайте один и тот же вопрос несколько раз. Поведение модели зависит от параметра temperature, который влияет на вариативность ответа. Повтор — это способ оценить устойчивость гипотез.
Комментарии (5)
mirwide
07.07.2025 21:20Правильный ответ: утопия и антиутопия
Знаменитый Томас Мор плавал в детстве как топор и за это его мать утопистом стала звать.
Вот вам ещё одна сложная задачка для LLM.
shaseer
07.07.2025 21:20Так как все эти вопросы есть в базе, и, соответственно, либо их можно нагуглить, либо модели напрямую обучалась на этих данных (возможно, что справедливы оба предположения), то это несколько обесценивает результаты исследования
На недавно прошедшем турнире по интеллектуальным играм Гёмбёц-6 поставили эксперимент - ЛЛМ отвечала на вопросы, написанные специально для этого турнира (их не было в интернете). По итогам турнира ЛЛМ ответила на 10 вопросов из 60 и заняла третье с конца место (34 место среди 36 команд)
У ЛЛМ могло бы быть ещё одно применение - для составления и подачи апелляций (если команда считает, что её ответ нужно зачесть как правильный, она может подать апелляцию). На недавнем ЧР по интеллектуальным играм ЛЛМ попытались использовать именно для этого, поскольку время составления и подачи апелляций было ограничено. ЛЛМ нагаллюцинировала в первом же предложении, апелляция была отклонена
fio
07.07.2025 21:20Доля правильных ответов у лучшей LLM 0.72
@DataVoyager можете оценить долю у команд ЧГК по тем же вопросам?
codecity
Тут еще вот в чем фишка. Все что было опубликовано - не требует решения - его можно просто воспроизводить из базы данных. Интерес представляет способность решать задачи, которые не были опубликованы и для которых нет готового решения.
В идеале создать алгоритм, который для каждого натурального числа генерит уникальную задачу, которую с легкостью решает средний человек - но с низкой вероятностью решает LLM.