📝 LLM и AI

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

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

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

Чат-бот 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)

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

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

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

🔗 Похожие

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

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

📝

Что такое ORM

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

📅 30.06.2026 👁️ 131
📝

httpx: современный HTTP-клиент для Python

httpx — HTTP-клиент нового поколения. Интерфейс похож на requests, но с поддержкой async/await из коробки.

📅 30.06.2026 👁️ 108
📝

Typer: CLI-приложения без boilerplate

Typer создаёт CLI из аннотаций типов Python. Никаких argparse, никакого ручного парсинга — только декораторы...

📅 30.06.2026 👁️ 88

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!