Что такое цепочка запросов
Понятие последовательного выполнения запросов и передачи информации
«Что такое цепочка запросов» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Предел возможностей одного промпта
Один промпт может многое, но его возможности ограничены. Сложные задачи, требующие нескольких специализированных подзадач, очень длинного контекста или итеративного уточнения, часто выходят за пределы того, с чем один промпт может надёжно справиться.
Признаки того, что Вы достигли предела возможностей одного промпта:
- Модель пропускает шаги в многошаговой задаче
- Качество снижается в последующих частях длинной задачи
- Результат слишком длинный, чтобы поместиться в одном контекстном окне
- Для разных частей задачи требуются разные компетенции или стили
Что такое цепочка промптов
Цепочка промптов — это последовательное выполнение, при котором результат каждого промпта становится входными данными следующего. Вместо одного большого промпта, пытающегося сделать всё, Вы разбиваете задачу на специализированные шаги.
Шаг 1 → результат → Шаг 2 → результат → Шаг 3 → итоговый результат
Каждый шаг можно оптимизировать независимо, использовать разные модели или применять разные ограничения.
Простой пример цепочки
Рассмотрим написание публикации для блога. Вместо одного промпта Вы объединяете в цепочку три:
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def call(prompt):
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=1000,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
# Step 1: Generate outline
outline = call('Create a 5-point outline for a blog post about prompt engineering for beginners.')
# Step 2: Expand outline into draft
draft = call(f'Write a full blog post based on this outline:\n\n{outline}')
# Step 3: Edit for clarity
final = call(f'Edit this blog post for clarity and conciseness. Remove jargon:\n\n{draft}')
print(final[:500])Когда цепочки полезны: сложность задачи
Цепочки особенно эффективны, когда задача слишком сложна для качественного выполнения одним промптом. Разбиение сложной задачи на специализированные шаги позволяет каждому шагу хорошо справляться с узкой задачей.
Пример: анализ отзывов клиентов в большом объёме
- Шаг 1: Извлечь все упомянутые проблемы (извлечение)
- Шаг 2: Распределить каждую проблему по категориям (классификация)
- Шаг 3: Расставить приоритеты по частоте и серьёзности (ранжирование)
- Шаг 4: Написать резюме для руководства (синтез)
Для каждого шага используется сфокусированный промпт, оптимизированный под соответствующую подзадачу.
Когда цепочки полезны: качество благодаря специализации
Специализированные промпты превосходят универсальные промпты в своих конкретных подзадачах. Цепочка позволяет использовать подходящий стиль промпта на каждом этапе:
# Each step uses a prompt optimized for its role
step1_prompt_template = '''
<task>Extract all named entities from the text below. Return JSON:
{"people": [], "companies": [], "locations": []}</task>
<text>{text}</text>
'''
step2_prompt_template = '''
<task>For each company in the list below, classify it as:
startup, enterprise, government, or nonprofit.
Return JSON: [{"company": str, "type": str}]</task>
<companies>{companies}</companies>
'''
# Each prompt is simpler, more focused, and easier to debug
# than a single prompt trying to do both tasks at once.
print('Specialized prompts per step.')Когда цепочки полезны: ограничения контекстного окна
Даже при больших контекстных окнах (более 100 тыс. токенов) обработка очень длинных документов за один раз снижает качество из-за эффекта «потери в середине». Цепочки предлагают решение:
- Шаг 1: Обработать каждый фрагмент независимо → получить краткое изложение или извлечение данных для каждого фрагмента
- Шаг 2: Объединить результаты обработки фрагментов → синтезировать итоговый ответ
Этот паттерн сопоставления и сведения — основополагающая стратегия построения цепочек для длинных документов.
def map_reduce_summarize(document, chunk_size=3000):
chunks = [document[i:i+chunk_size] for i in range(0, len(document), chunk_size)]
# Map: summarize each chunk
summaries = []
for i, chunk in enumerate(chunks):
summary = call(f'Summarize this section of a document in 3 bullet points:\n\n{chunk}')
summaries.append(summary)
# Reduce: synthesize all summaries
combined = '\n\n'.join(f'Section {i+1}:\n{s}' for i, s in enumerate(summaries))
final = call(f'Combine these section summaries into a single executive summary:\n\n{combined}')
return finalСинхронные и параллельные цепочки
Цепочки не всегда линейны. Некоторые шаги можно выполнять параллельно, если они независимы:
import concurrent.futures
def parallel_step(topics):
# Each topic can be researched in parallel — they do not depend on each other
def research_topic(topic):
return call(f'List 5 key facts about: {topic}')
with concurrent.futures.ThreadPoolExecutor() as executor:
results = list(executor.map(research_topic, topics))
# Then synthesize in a sequential step
combined = '\n\n'.join(f'{t}:\n{r}' for t, r in zip(topics, results))
synthesis = call(f'Write a comparative analysis of these topics:\n\n{combined}')
return synthesis
print('Parallel steps can reduce total latency.')Цепочки и агенты
Цепочки промптов и агенты ИИ связаны, но различаются:
- Цепочки: заранее заданный детерминированный процесс. Последовательность шагов фиксирована. Их проще тестировать, отлаживать и прогнозировать.
- Агенты: динамический процесс. Модель определяет следующий шаг на основе результата. Это более гибкий, но менее управляемый и сложнее отлаживаемый подход.
Для большинства боевых сценариев начинайте с цепочек. Используйте агентов только тогда, когда задача действительно открытая и структуру цепочки нельзя определить заранее.
Вопросы стоимости при использовании цепочек
Каждый шаг цепочки — отдельный вызов API (call) со своей стоимостью. Проектируйте цепочки с учётом затрат:
- Используйте более дешёвые и компактные модели для простых шагов (извлечение данных, классификация)
- Оставляйте дорогие модели (GPT-4o, Claude Opus) для шагов, требующих глубокого рассуждения
- Кешируйте промежуточные результаты, чтобы не запускать повторно дорогие шаги для одинаковых входных данных
- Быстро завершайте работу при ошибке — проверяйте результат каждого шага перед передачей следующему
import anthropic
import functools
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
@functools.lru_cache(maxsize=128)
def cached_call(prompt, model='claude-haiku-4-5'):
r = client.messages.create(
model=model,
max_tokens=500,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
# Cheap model for extraction, expensive for synthesis
def smart_chain(text):
entities = cached_call(f'Extract entities from: {text}', model='claude-haiku-4-5')
synthesis = cached_call(f'Analyze these entities: {entities}', model='claude-opus-4-5')
return synthesisДокументирование цепочки
Хорошо документированную цепочку проще сопровождать. Используйте простую структуру для описания каждого шага:
chain_spec = {
'name': 'Blog Post Generator',
'steps': [
{
'id': 'step_1',
'name': 'Outline Generation',
'model': 'claude-haiku-4-5',
'input': 'topic (string)',
'output': 'outline (string, 5 bullet points)',
'prompt_template': 'outline_prompt.txt'
},
{
'id': 'step_2',
'name': 'Draft Writing',
'model': 'claude-opus-4-5',
'input': 'outline from step_1',
'output': 'draft (string, ~800 words)',
'prompt_template': 'draft_prompt.txt'
},
{
'id': 'step_3',
'name': 'Editorial Polish',
'model': 'claude-haiku-4-5',
'input': 'draft from step_2',
'output': 'final post (string)',
'prompt_template': 'polish_prompt.txt'
}
]
}
print('Chain documented with step specs.')Цепочка из реального проекта: конкурентный анализ
Практическая цепочка из трёх шагов для конкурентного анализа:
def competitive_analysis_chain(competitor_list, product_description):
# Step 1: Research each competitor (parallel)
def research(competitor):
return call(f'List key features, pricing model, and target market for: {competitor}')
with concurrent.futures.ThreadPoolExecutor() as ex:
research_results = dict(zip(competitor_list, ex.map(research, competitor_list)))
# Step 2: Compare against our product
comparison_input = '\n\n'.join(f'{k}:\n{v}' for k, v in research_results.items())
comparison = call(f'Compare these competitors against our product:\nOur product: {product_description}\n\nCompetitors:\n{comparison_input}')
# Step 3: Strategic recommendations
recommendations = call(f'Based on this competitive analysis, provide 3 strategic recommendations:\n\n{comparison}')
return recommendationsБыстрая проверка
Какой сценарий лучше всего подходит для цепочки промптов, а не для одного промпта?
Цепочки промптов — основные выводы
Цепочки промптов — основа рабочих систем ИИ:
- Последовательное выполнение, при котором результат каждого шага передаётся следующему промпту как входные данные
- Специализация: для каждого шага используется промпт, оптимизированный под узкую подзадачу
- Ограничения контекстного окна решаются с помощью паттернов сопоставления и сведения
- Независимые шаги можно выполнять параллельно, чтобы уменьшить задержку
- Такие системы более предсказуемы и удобны для отладки, чем полностью агентные системы
- Оптимизируйте затраты, используя более дешёвые модели для простых шагов и дорогие модели для сложного рассуждения
- Всегда документируйте цепочку, указывая идентификаторы шагов, спецификации входных и выходных данных и назначенные модели
Часто задаваемые вопросы
Урок «Что такое цепочка запросов» бесплатный?
Да — полный текст урока «Что такое цепочка запросов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Что такое цепочка запросов»?
Понятие последовательного выполнения запросов и передачи информации Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Что такое цепочка запросов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое цепочка запросов
- Шаблоны «вывод — ввод»
- Цепочки последовательных преобразований
- Обработка ошибок в цепочках запросов