Управление многократными разговорами
Тема дорожной карты · Claude от Anthropic
Управление многократными разговорами с Claude позволяет поддерживать связный и логически последовательный диалог через несколько вызовов API. Это особенно важно, когда требуется поддерживать сложные и длительные диалоги, так как Claude не хранит состояние диалога между запросами. Вместо этого, вы должны самостоятельно управлять массивом сообщений, добавляя каждый новый ход user и assistant перед каждым вызовом messages.create. Это обеспечивает передачу полной истории сообщений в каждом запросе, что позволяет Claude поддерживать контекст разговора.
Управление размером окна контекста является ключевым аспектом управления многократными разговорами. Это достигается путем суммирования старых ходов, используя system-промпты для постоянных инструкций и удаляя нерелевантную историю. Это помогает поддерживать актуальность и релевантность диалога, а также уменьшает затраты на токены.
Как это работает
Управление многократными разговорами включает в себя использование prompt caching, которое может снизить стоимость запросов на 90% на повторяющемся контексте благодаря использованию cache_control. Компиляция истории разговора при заполнении контекста также помогает управлять размером окна контекста. Кроме того, можно использовать цитирования для возврата source-спанов для factual утверждений, что особенно важно для юридических и исследовательских задач.
Структурированный output, такой как JSON-режим с схемами, позволяет получать типизированные ответы, что упрощает парсинг и использование данных. Batch API позволяет выполнять асинхронную обработку больших объемов данных, что делает его идеальным для bulk-обработки и ETL-процессов. Batching сообщений, то есть отправка нескольких turns в одном запросе, также может уменьшить количество вызовов API и стоимость запросов.
Когда применять
Prompt caching можно использовать практически с самого начала разработки приложения, так как system-промпты и few-shot примеры могут быть кешированы, что значительно снижает стоимость запросов. Batch API особенно полезен для bulk-обработки, таких как overnight ETL или большие job-классификации, где полцены и отсутствие rate-лимита могут значительно уменьшить затраты.
Citations особенно важны, когда factuality играет ключевую роль, например, в юридических вопросах, исследовательских задачах или ответах клиентам. RAG (retrieval-augmented generation) может быть использован, когда знания превышают размер окна контекста или когда важно поддерживать свежесть информации после некоторого срока.
Типичные ошибки
Типичные ошибки при управлении многократными разговорами включают кеширование промптов с переменным содержимым, что приводит к каждому запросу быть cache miss. Это можно избежать, разделением стабильного и динамического контента. Batch API может ожидать до 24 часов для завершения, поэтому важно учитывать это при планировании времени выполнения задач. Цитирования могут быть включены, но не показаны юзеру, что приводит к потере токенов. Также важно проводить оценку качества при использовании RAG, чтобы избежать нерелевантных результатов.