Урок 8Практика

Создание AI-агентов

С нуля на коде

Проблема: Ты понимаешь концепции агентов, но как реально его построить? Какие части нужны? Как они соединяются? Это как знать, что делает машина, но не знать, как её собрать.

Решение: Сборка из компонентов

Создание агента -- как сборка робота из деталей. Каждая деталь имеет свою функцию, и вместе они создают нечто, что может думать и действовать. В основе лежит цикл ReAct -- думай, действуй, наблюдай. Инструменты подключаются через вызов функций, а фреймворки вроде LangChain предоставляют готовые строительные блоки.

Представьте это как сборку робота-ассистента:

  • 1. Мозг (LLM): ИИ-модель, которая думает и решает
  • 2. Инструкции (Системный промпт): Каким ассистентом он должен быть
  • 3. Руки (Инструменты): Что он реально может делать в мире
  • 4. Память: Как он помнит прошлые разговоры
  • 5. Органы чувств (Обработка ввода): Как он понимает твои запросы
  • 6. Голос (Форматирование вывода): Как он представляет ответы

Ключевые шаги создания агента

  • Определи цель: Что этот агент должен делать?
  • Напиши персону: Системный промпт с личностью и ограничениями
  • Добавь инструменты: Функции, которые агент может вызывать
  • Настрой цикл: Как агент думает → действует → наблюдает
  • Обработай ошибки: Что происходит, когда что-то идёт не так

Интересный факт: Простейший полезный агент можно создать примерно в 50 строках кода! Основной цикл прост: получить ввод → отправить в LLM с инструментами → выполнить вызовы → повторить. Всё остальное — это улучшение этого цикла: безопаснее, умнее, надёжнее.

Попробуйте сами!

Используй интерактивный конструктор ниже, чтобы собрать своего агента шаг за шагом. Добавляй компоненты, настраивай их и смотри, как они работают вместе!

Частые вопросы

Какие компоненты нужны AI-агенту?

Минимальный AI-агент включает: LLM для рассуждений, системный промпт с ролью, инструменты (API, базы данных, выполнение кода), цикл обработки ответов LLM и вызова инструментов, и память для сохранения контекста между взаимодействиями.

Использовать фреймворк типа LangChain или писать с нуля?

Начните с нуля для обучения и простых агентов — это даёт полный контроль и понимание. Используйте LangChain или LlamaIndex, когда нужны готовые интеграции (векторные БД, загрузчики документов) или быстрое построение сложных пайплайнов.

Как предотвратить бесконечный цикл AI-агента?

Установите максимум итераций (10-20 шагов), лимит по времени, отслеживание стоимости для остановки при превышении бюджета, используйте «final_answer» инструмент и логируйте каждый шаг для отладки.

Что такое паттерн ReAct для AI-агентов?

ReAct (Reasoning + Acting) — паттерн, где агент чередует мышление (рассуждение о действиях) и действие (вызов инструментов). Каждый цикл: LLM анализирует текущее состояние, выбирает действие, выполняет его, наблюдает результат и повторяет до завершения задачи.

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаНачинающийКод

Создай простого агента, который может отвечать на вопросы о файлах в директории.

Без техники
Без техники
Промпт
Напиши код, который отвечает на вопросы о файлах в директории.
Ответ
import os

def answer_question(directory, question):
    files = os.listdir(directory)
    if "сколько" in question.lower():
        return f"В директории {len(files)} файлов"
    elif "список" in question.lower():
        return ", ".join(files)
    else:
        return "Не понимаю вопрос"
Токены:25/85
Время:520ms
Качество:
С Создание агентов
С техникой
Промпт
Построй агента с циклом "think → act → observe" и определениями инструментов. Требования: - Агентный цикл (while loop) - Определения инструментов (tools) - Парсинг действий LLM - Возврат финального ответа Задача: агент для ответов на вопросы о файлах в директории.
Ответ
import os
from openai import OpenAI

# Определяем инструменты
tools = {
    "list_files": lambda dir: os.listdir(dir),
    "read_file": lambda path: open(path).read(),
    "file_info": lambda path: {
        "size": os.path.getsize(path),
        "modified": os.path.getmtime(path)
    }
}

tool_descriptions = [
    {"name": "list_files", "description": "Список файлов в директории", "params": ["directory"]},
    {"name": "read_file", "description": "Чтение файла", "params": ["filepath"]},
    {"name": "file_info", "description": "Информация о файле", "params": ["filepath"]}
]

def run_agent(question, directory):
    client = OpenAI()
    messages = [
        {"role": "system", "content": f"Ты агент с доступом к директории {directory}. Используй инструменты для ответа. Формат: ACTION: tool_name(args) или ANSWER: финальный ответ."},
        {"role": "user", "content": question}
    ]
    
    for step in range(5):  # макс 5 шагов
        response = client.chat.completions.create(
            model="gpt-4", messages=messages
        )
        text = response.choices[0].message.content
        
        if "ANSWER:" in text:
            return text.split("ANSWER:")[1].strip()
        
        if "ACTION:" in text:
            action = parse_action(text)
            result = tools[action.name](*action.args)
            messages.append({"role": "assistant", "content": text})
            messages.append({"role": "user", "content": f"Observation: {result}"})
    
    return "Не удалось найти ответ"
🧠Определяем инструменты: list_files, read_file, file_info
🧠Агентный цикл: LLM думает → выбирает действие → получает результат → повторяет
👁️Ключевое отличие от монолитного кода: LLM сам решает, какие инструменты вызвать
Агент может отвечать на любые вопросы о файлах, а не только на заранее запрограммированные
Токены:95/380
Время:3200ms
Качество:
Почему это работает

Монолитный подход требует if/else для каждого типа вопроса. Агентный цикл позволяет LLM самому выбирать инструменты, что делает систему гибкой и расширяемой.

1 / 2

Квиз по уроку

1 из 3

1.Что является критически важным при проектировании обработки ошибок для продакшн-агентов?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Связанные уроки:Function CallingMemory

Этот урок — часть структурированного курса по LLM.

Мой путь обучения