Оценка, стоимость и безопасность агентов
Прежде чем доверить агенту работу, его нужно оценить, посчитать его стоимость и понять риски. Об этом — последний теоретический урок.
Оценка агента (evaluation) — измерение того, насколько хорошо агент решает задачи: чаще всего через долю успешно выполненных заданий на тестовом наборе.
Как оценивать агента
Агент сложнее обычной модели: он многошаговый, и «правильность» — это не один ответ, а успех всей задачи. Основные подходы:
- Success rate — доля задач, решённых верно (главная метрика).
- Проверка результата — объективный критерий: прошли ли тесты, верен ли итог, выполнены ли все требования.
- Эффективность — за сколько шагов и какой ценой решено (меньше шагов при том же успехе — лучше).
- LLM-as-judge — отдельная модель оценивает качество там, где нет объективной проверки (с осторожностью: судья тоже ошибается).
Считаем success rate
Простейшая оценка: прогнать агента по набору задач с известными ответами и посчитать долю верных.
# задача -> правильный ответ
test_set = {"2+2": "4", "10*5": "50", "100-1": "99"}
def agent(task):
# агент-заглушка: одну задачу решает неверно
wrong = {"10*5": "60"}
return wrong.get(task, str(eval(task)))
correct = 0
for task, expected in test_set.items():
got = agent(task)
ok = (got == expected)
correct += ok
print(f"{task:8} ожидали {expected:3} получили {got:3} -> {'верно' if ok else 'НЕВЕРНО'}")
rate = correct / len(test_set)
print(f"Success rate: {correct}/{len(test_set)} = {rate:.0%}")
Вывод:
2+2 ожидали 4 получили 4 -> верно 10*5 ожидали 50 получили 60 -> НЕВЕРНО 100-1 ожидали 99 получили 99 -> верно Success rate: 2/3 = 67%
Почему агенты дорогие и медленные
Один запрос пользователя = много вызовов LLM (мысль, действие, наблюдение, снова мысль…). Стоимость и латентность растут с числом шагов.
cost_per_call = 0.01 # условная цена одного вызова LLM
latency_per_call = 1.5 # секунд на вызов
for steps in [1, 3, 8]:
print(f"{steps} шаг(ов): цена ~${steps*cost_per_call:.2f}, "
f"задержка ~{steps*latency_per_call:.1f}с")
Вывод:
1 шаг(ов): цена ~$0.01, задержка ~1.5с 3 шаг(ов): цена ~$0.03, задержка ~4.5с 8 шаг(ов): цена ~$0.08, задержка ~12.0с
На масштабе это серьёзно: тысячи запросов по 8 шагов — заметные деньги и секунды ожидания. Поэтому оптимизируют число шагов, кешируют, берут модель подешевле для простых решений.
Риски безопасности
| Риск | Суть | Защита |
| Prompt injection | вредная инструкция во внешнем тексте | не доверять внешнему как команде |
| Утечка данных | агент выдаёт лишнее наружу | гардрейл выхода, ограничение данных |
| Опасные действия | необратимые шаги | права, человек-в-цикле |
| Зацикливание/расходы | бесконтрольные вызовы | лимиты шагов и бюджета |
Итог
- Главная метрика агента — success rate; опираться лучше на объективную проверку результата.
- Агенты дорогие и медленные: один запрос — много вызовов LLM; число шагов оптимизируют.
- Ключевые риски — prompt injection, утечки, опасные действия, расходы; на каждый есть защита из урока 6.3.
Проверьте себя
1. Какая метрика — главная при оценке агента?
AДлина ответа
BSuccess rate — доля задач, решённых верно
CЧисло использованных инструментов
DРазмер контекстного окна
2. Почему агенты дороже и медленнее одного вызова модели?
AОни используют более крупные модели всегда
BОдин запрос превращается в несколько вызовов LLM (мысль, действие, наблюдение…), и стоимость с задержкой растут с числом шагов
CИнструменты стоят денег сами по себе
DПарсинг текста очень медленный
3. С какой оговоркой стоит использовать LLM-as-judge для оценки?
AСудья всегда точнее объективной проверки
BСудья — тоже модель и может ошибаться, поэтому где можно лучше опираться на объективный критерий
CLLM-as-judge бесплатен
DЕго нельзя применять никогда