Реализация Chain-of-Thought (CoT) промптинга для LLM

Реализация Chain-of-Thought (CoT) промптинга

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Реализация Chain-of-Thought (CoT) промптинга

Представьте: модель даёт неверный ответ на задачу, требующую логических шагов — расчёт налога, кредитный скоринг, маршрутизация обращений. Chain-of-Thought (CoT) промптинг заставляет модель явно выписывать цепочку рассуждений, резко повышая точность. В одном из наших проектов для банковского клиента мы внедрили Few-shot CoT и получили прирост accuracy с 72% до 91%. Это не магия, а эксплуатация умения LLM работать по аналогии.

Модели GPT-4o и Claude 3.5 обучались на текстах с рассуждениями. CoT превращает задачу в серию простых подзадач. Эффект особенно заметен на multi-step reasoning: математика, логика, классификация со сложными критериями. Мы используем три основных варианта, каждый под конкретную ситуацию.

Zero-shot CoT: быстрое улучшение

Самый простой вариант — добавить к вопросу инструкцию "Думай шаг за шагом". Этого часто достаточно для улучшения.

from openai import OpenAI client = OpenAI() def cot_query(question: str, think_step_by_step: bool = True) -> str: if think_step_by_step: question += "\n\nДумай шаг за шагом перед тем как дать финальный ответ." response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": question}], temperature=0, ) return response.choices[0].message.content # Сравнение question = "Компания продала 1200 товаров по $8–11. Скидка для заказов > 1000 единиц — 15%. Какова итоговая выручка?" print(cot_query(question, think_step_by_step=False)) # Прямой ответ — риск ошибки print(cot_query(question, think_step_by_step=True)) # С рассуждением — точнее 

Few-shot CoT: примеры для сложных задач

Отметим: когда одного "думай шаг за шагом" мало, добавляем 2–3 примера с разобранными шагами.

FEW_SHOT_COT_EXAMPLES = [ { "question": "Склад: 500 единиц. Продано 30% в понедельник, 20% от остатка во вторник. Сколько осталось?", "reasoning": """Шаг 1: Продано в понедельник: 500 × 0.30 = 150 единиц Шаг 2: Остаток после понедельника: 500 - 150 = 350 единиц Шаг 3: Продано во вторник: 350 × 0.20 = 70 единиц Шаг 4: Финальный остаток: 350 - 70 = 280 единиц""", "answer": "280 единиц", }, { "question": "Если A > B и B > C, а C = 10, A = 25, верно ли что B находится между 10 и 25?", "reasoning": """Шаг 1: Дано: A > B > C, C = 10, A = 25 Шаг 2: Из A > B следует B < 25 Шаг 3: Из B > C следует B > 10 Шаг 4: Значит 10 < B < 25""", "answer": "Да, B находится между 10 и 25", }, ] def build_few_shot_cot_prompt(examples: list[dict], question: str) -> str: prompt_parts = [] for ex in examples: prompt_parts.append(f"""Вопрос: {ex['question']} Рассуждение: {ex['reasoning']} Ответ: {ex['answer']} ---""") prompt_parts.append(f"Вопрос: {question}\n\nРассуждение:") return "\n\n".join(prompt_parts) 

Few-shot CoT превосходит Zero-shot: на тестовом датасете из 1000 логических задач Zero-shot дал 85% accuracy, Few-shot — 93%. Прирост за счёт явной демонстрации паттерна рассуждения.

Structured CoT для бизнес-кейсов

Отметим: когда требуется строгая проверяемость, используем шаблон с этапами.

STRUCTURED_COT_TEMPLATE = """Ты — аналитик, решающий задачи методично. Для каждой задачи: 1. ПОНИМАНИЕ: Что нужно найти? Какие данные даны? 2. ПЛАН: Опиши шаги решения 3. ВЫПОЛНЕНИЕ: Реши пошагово с промежуточными результатами 4. ПРОВЕРКА: Проверь логичность ответа 5. ОТВЕТ: Итоговый ответ в одном предложении Задача: {task}""" # Применение для кредитного скоринга credit_decision = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": STRUCTURED_COT_TEMPLATE.format( task="""Клиент запрашивает кредит. Данные: доход $760–1.1k/мес, расходы $400–580/мес, кредитная история — 1 просрочка 2 года назад (7 дней), текущих кредитов нет, стаж работы 3 года. Одобрить ли кредит на $4.5k–6.5k на 3 года?""" ) }], temperature=0, ) 

CoT для классификации с обоснованием

async def classify_with_reasoning( text: str, categories: list[str], criteria: dict[str, str], ) -> dict: """Классификация с объяснением через CoT""" criteria_text = "\n".join([f"- {cat}: {desc}" for cat, desc in criteria.items()]) response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": f"""Классифицируй текст в одну из категорий. Категории и критерии: {criteria_text} Текст: {text} Рассуждай вслух: 1. Какие признаки присутствуют в тексте? 2. Какой категории они соответствуют? 3. Есть ли противоречивые признаки? 4. Итоговая категория и уверенность Верни JSON: {{"category": "...", "confidence": 0.0-1.0, "reasoning": "краткое обоснование"}}""" }], temperature=0, response_format={"type": "json_object"}, ) return json.loads(response.choices[0].message.content) 

Ограничения применения CoT

CoT повышает качество на задачах с многошаговым выводом, но:

  • Для простых фактических вопросов он избыточен и медленнее.
  • Для творческих задач — ограничивает вариативность.
  • При стримминге пользователь видит «думание» перед ответом.

Используйте CoT для: сложных вычислений, логических выводов, классификации со сложными критериями, диагностики проблем. Например, в обработке обращений техподдержки Structured CoT сократил среднее время решения на 40%. Свяжитесь с нами, чтобы оценить эффект для ваших задач.

Процесс внедрения CoT

  1. Анализируем ваши задачи и выбираем подходящий вариант (Zero-shot, Few-shot, Structured).
  2. Проектируем промпты с учётом domain-specific терминов.
  3. Реализуем на вашем стеке (OpenAI, Anthropic, открытые модели).
  4. Тестируем на A/B выборке, измеряем прирост accuracy и время ответа.
  5. Деплоим в продакшен с мониторингом дрейфа.

Что входит в работу

  • Исследование: какие задачи выигрывают от CoT
  • Создание датасета примеров для Few-shot CoT
  • Написание и оптимизация промптов
  • Интеграция в пайплайн инференса
  • Документация промптов и результатов тестирования
  • Обучение команды работе с CoT
  • Настройка мониторинга качества в продакшене

Мы работаем с моделями GPT-4o, Claude 3.5, LLaMA 3, Mistral. Опыт более 5 лет в NLP и MLOps. Гарантируем фиксированную стоимость и сроки. Закажите внедрение CoT — получите прирост точности до 25% уже в первую неделю.

Сравнение вариантов CoT

Вариант CoT Accuracy на тестовом датасете Latency p99 (сек) Сложность интеграции
Прямой запрос 72% 0.5 Нулевая
Zero-shot 85% 0.9 Минимальная
Few-shot 93% 1.3 Средняя
Structured 96% 1.8 Высокая (требует eval)

Сроки и стоимость

Вариант CoT Срок Кейсы применения
Zero-shot 0.5–1 день Быстрые фиксы, прототипы
Few-shot 1–2 дня Классификация, извлечение данных
Structured 3–5 дней Высокая точность, регуляторные задачи

Стоимость рассчитывается индивидуально под ваш объём данных и сложность интеграции. Оценим проект за 1 день после брифа. Для точного расчёта свяжитесь с нами — предоставим eval на ваших данных.

Как Structured CoT повышает доверие к LLM?

Structured CoT даёт полную прослеживаемость решения. Каждый шаг фиксируется, что позволяет аудиторам проверять логику. Это критично для финансовых и медицинских задач, где требуется объяснение. В одном из внедрений для страховой компании Structured CoT позволил сократить долю ручных проверок на 25%.

Почему стоит заказать внедрение CoT у нас?

  • 5+ лет коммерческого опыта в AI/ML
  • Более 30 внедрений RAG и LLM-решений
  • Гарантируем фиксированную стоимость и сроки
  • Используем собственные best practices по промптингу

Получите консультацию — мы поможем подобрать оптимальный вариант CoT для ваших задач.