Реалізація 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 товаров по [сума]. Скидка для заказов > 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="""Клиент запрашивает кредит. Данные: доход [доход]/мес, расходы [расход]/мес, кредитная история — 1 просрочка 2 года назад (7 дней), текущих кредитов нет, стаж работы 3 года. Одобрить ли кредит на [сума] на 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 для ваших задач.