📝 LLM и AI

AI-агенты: ReAct loop и автономные действия

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
336
🌳
Уровень
Продвинутый

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их в ответе.

Чат-бот vs Агент

Чат-бот Агент
Источник данных Только обучение API, файлы, поиск
Действия Только текст Вызовы инструментов
Циклы Один запрос Несколько итераций
Применение Вопрос-ответ Автоматизация задач

ReAct паттерн

ReAct = Reasoning + Acting. Агент работает по циклу:

Вопрос пользователя
       ↓
  REASON: Claude анализирует — нужен ли инструмент?
       ↓
   ACT: Вызов инструмента (get_weather, read_file, ...)
       ↓
OBSERVE: Получаем результат инструмента
       ↓
  REASON: Claude анализирует результат
       ↓
  (повторяем пока не получим финальный ответ)
       ↓
 ANSWER: Финальный текстовый ответ

Простой агент

import anthropic

client = anthropic.Anthropic()

TOOLS = [
    {
        "name": "get_time",
        "description": "Возвращает текущее время",
        "input_schema": {"type": "object", "properties": {}}
    }
]

def get_time() -> str:
    from datetime import datetime
    return datetime.now().strftime("%H:%M:%S")

def run_agent(question: str) -> str:
    messages = [{"role": "user", "content": question}]

    while True:
        response = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=512,
            tools=TOOLS,
            messages=messages,
        )

        if response.stop_reason == "end_turn":
            return next(b.text for b in response.content if hasattr(b, "text"))

        messages.append({"role": "assistant", "content": response.content})
        results = []
        for block in response.content:
            if block.type == "tool_use":
                if block.name == "get_time":
                    result = get_time()
                results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result
                })
        messages.append({"role": "user", "content": results})

print(run_agent("Который сейчас час?"))

Типичные инструменты агентов

  • Веб-поиск — актуальная информация
  • Чтение файлов — локальные документы
  • HTTP-запросы — внешние API
  • Выполнение кода — вычисления
  • База данных — хранение и поиск данных

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Pydantic v2: валидация данных в Python

Pydantic — библиотека для проверки и преобразования данных через аннотации типов. Она часто используется в...

📅 30.06.2026 👁️ 330
📝

asyncio в Python: асинхронное программирование

asyncio — стандартная библиотека Python для асинхронного кода. Позволяет выполнять несколько задач «одновременно» в одном...

📅 30.06.2026 👁️ 318
📝

RAG: чат с документами через векторный поиск

RAG (Retrieval-Augmented Generation) — паттерн для работы с собственными документами. Вместо того чтобы переобучать модель,...

📅 30.06.2026 👁️ 315
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Нейросети в коде: 5 AI-проектов на Python с Claude Открыть программу курса