Перейти к содержанию

Сохранение знаний (Knowledge Retention)

Метрика Knowledge Retention оценивает, насколько хорошо AI запоминает и использует контекст из предыдущих частей разговора. В многоходовых диалогах критически важно, чтобы ассистент помнил имя пользователя, его предпочтения, ранее упомянутые ограничения и другую существенную информацию.

Как это работает

Оценка проходит в три этапа:

  1. Форматирование диалога (Dialogue Formatting) -- формирует полную историю разговора в структурированном виде
  2. Оценка удержания (Retention Assessment) -- проверяет, запомнил ли AI контекст из ранних ходов и применяет ли его в более поздних ответах
  3. Генерация вердикта (Verdict Generation) -- выносит единый вердикт по общему качеству удержания контекста

Метрика обращает внимание не только на явное упоминание ранее сказанного, но и на неявное использование контекста (например, предложение блюда без арахиса, если пользователь упомянул аллергию).

Параметры

Параметр Тип По умолчанию Описание
model str обязательный Любая модель: "gpt-4o", "anthropic:claude-3-5-sonnet-latest", "google:gemini-2.0-flash", "ollama:llama3" или CustomLLMClient
threshold float 0.7 Минимальная оценка для прохождения
temperature float 0.5 Строгость агрегации

Обязательные поля

Требуется ConversationalEvalTestCase.

Использование

В этом примере пользователь в первом ходе сообщает своё имя и аллергию на арахис. Метрика проверяет, использует ли AI эту информацию в последующих ответах:

from eval_lib import (
    KnowledgeRetentionMetric,
    ConversationalEvalTestCase,
    EvalTestCase,
    evaluate_conversations,
)
import asyncio

conversation = ConversationalEvalTestCase(
    turns=[
        EvalTestCase(
            input="My name is Alice and I'm allergic to peanuts.",
            actual_output="Nice to meet you, Alice! I'll make note of your peanut allergy."
        ),
        EvalTestCase(
            input="Can you suggest a dessert?",
            actual_output="How about a chocolate lava cake? It's peanut-free, so it's safe for you, Alice!"
        ),
        EvalTestCase(
            input="What about a snack?",
            actual_output="I'd suggest fruit and cheese. No peanuts involved!"
            # AI remembers the allergy from turn 1
        ),
    ]
)

metric = KnowledgeRetentionMetric(model="gpt-4o", threshold=0.7)
results = asyncio.run(evaluate_conversations([conversation], [metric]))

В данном примере AI демонстрирует хорошее сохранение знаний: обращается к пользователю по имени и учитывает аллергию при каждой рекомендации.

Стоимость

2 вызова LLM API за одну оценку.

Когда использовать

Эта метрика особенно важна в следующих сценариях:

  • Длинные многоходовые диалоги -- где контекст из начала разговора может быть "забыт" на более поздних этапах
  • Персональные ассистенты -- которые должны помнить предпочтения, имя, историю взаимодействий пользователя
  • Сценарии клиентской поддержки -- где контекст проблемы должен сохраняться от хода к ходу, чтобы пользователю не приходилось повторяться
  • Любой диалоговый AI -- где потеря контекста ухудшает качество взаимодействия и вызывает раздражение пользователя