Агенты и паттерн ReAct
Урок объясняет, как агент в цикле рассуждает и вызывает инструменты до решения задачи.
Агент — связка модели и набора инструментов, где модель в цикле сама решает, какой инструмент вызвать на каждом шаге, пока не получит ответ.
От одного вызова к циклу
Tool calling из прошлого урока — это один шаг. Но реальная задача может требовать нескольких: сначала найти, потом посчитать, потом сверить. Агент превращает разовый вызов в цикл: модель рассуждает, выбирает инструмент, видит результат, снова рассуждает — и так до финального ответа.
Паттерн ReAct
Самый известный паттерн агента — ReAct (Reasoning + Acting). Модель чередует мысль и действие:
Thought: нужно перемножить 23 и 17
Action: multiply(a=23, b=17)
Observation: 391
Thought: теперь у меня есть результат
Final Answer: 391Сам управляющий цикл агента концептуально прост — это «думай-действуй-наблюдай», пока не готово:
def agent_loop(goal, tools, max_steps=5):
log = []
for step in range(max_steps):
# упрощённо: «модель» выбирает инструмент по ключевому слову
if "умнож" in goal and "multiply" in tools:
result = tools["multiply"](23, 17)
log.append(f"Action multiply = {result}")
return result, log
log.append("Thought: не знаю инструмент")
break
return None, log
tools = {"multiply": lambda a, b: a * b}
answer, log = agent_loop("нужно умножить числа", tools)
print("Ответ:", answer)
print("\n".join(log))Вывод:
Ответ: 391 Action multiply = 391
Как работает под капотом
Исполнитель агента (в современном LangChain это обычно граф на базе LangGraph) гоняет цикл: отправляет модели запрос с описанием инструментов, получает либо tool_calls, либо финальный ответ. Если пришёл вызов — исполнитель выполняет инструмент, добавляет результат (observation) в историю и снова зовёт модель. Цикл идёт, пока модель не вернёт ответ без вызовов или не упрётся в лимит шагов. Лимит шагов критичен: без него агент может зациклиться.
Частые ошибки
- Нет лимита шагов. Агент способен крутиться в цикле и сжигать токены — всегда ставьте предел.
- Слишком много инструментов. Чем их больше, тем чаще модель ошибается в выборе; давайте только нужные.
- Брать агента там, где хватит цепочки. Если порядок шагов известен заранее — фиксированная цепочка надёжнее и дешевле.
Итог
- Агент — это цикл «рассуждение → действие → наблюдение» поверх модели и инструментов.
- ReAct чередует мысли и вызовы инструментов до финального ответа.
- Исполнитель повторяет вызовы, пока модель не ответит или не кончится лимит шагов.
- Лимит шагов и минимум инструментов — обязательная страховка.