Создание самоадаптирующегося целенаправленного AI-агента с помощью Google Gemini и фреймворка SAGE: полный гайд по коду
В этом руководстве показано, как создать самоадаптирующегося целенаправленного AI-агента с использованием Google Gemini и фреймворка SAGE, с акцентом на разбиение задач, выполнение и циклы обучения.
Обзор фреймворка SAGE
В этом руководстве рассматривается создание продвинутого AI-агента на основе фреймворка SAGE (Self-Adaptive Goal-oriented Execution), использующего API Google Gemini. Фреймворк объединяет четыре ключевых компонента: самооценку, адаптивное планирование, целенаправленное выполнение и интеграцию опыта. Это позволяет агенту разбивать сложные цели на управляемые задачи, систематично их выполнять и учиться на результатах для улучшения работы.
Основные компоненты и структура кода
Агент реализован на Python с использованием библиотеки google.generativeai для взаимодействия с моделью Gemini. Управление задачами осуществляется через класс данных Task с полями id, описание, приоритет, статус, зависимости и результат. Enum TaskStatus отслеживает состояния задач: ожидает, в работе, выполнена, неудача.
import google.generativeai as genai
import json
import time
from typing import Dict, List, Any, Optional
from dataclasses import dataclass, asdict
from enum import Enum
class TaskStatus(Enum):
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
FAILED = "failed"
@dataclass
class Task:
id: str
description: str
priority: int
status: TaskStatus = TaskStatus.PENDING
dependencies: List[str] = None
result: Optional[str] = None
def __post_init__(self):
if self.dependencies is None:
self.dependencies = []Класс SAGEAgent реализует логику агента. Он инициализируется с ключом API Gemini и моделью, хранит память и задачи, управляет контекстом и итерациями.
Самооценка
Агент оценивает текущий прогресс, ресурсы, пробелы, риски и рекомендации, генерируя JSON-ответ от модели Gemini на основе цели и контекста.
Адаптивное планирование
На основании самооценки агент динамически создаёт 3-4 выполнимые задачи с приоритетами и зависимостями, что обеспечивает гибкое и контекстно-зависимое разбиение задач.
Целенаправленное выполнение
Каждая задача выполняется поэтапно с запросом в Gemini на разбиение действий, последовательное выполнение, проверку результатов и формирование детального вывода.
Интеграция опыта
После выполнения задач агент извлекает уроки, анализируя ключевые инсайты, закономерности и корректировки, обновляя внутреннюю память для улучшения будущих итераций.
Полный цикл SAGE
Агент проводит несколько итераций цикла SAGE — оценка, планирование, выполнение и обучение — пока цель не будет достигнута или не исчерпаны максимальные итерации.
Пример использования
if __name__ == "__main__":
API_KEY = "Введите ваш API ключ"
try:
agent = SAGEAgent(API_KEY, model_name="gemini-1.5-flash")
goal = "Исследовать и создать подробное руководство по устойчивым практикам городского садоводства"
results = agent.execute_sage_cycle(goal, max_iterations=2)
print("\n" + "="*50)
print(" РЕЗЮМЕ ВЫПОЛНЕНИЯ SAGE")
print("="*50)
print(f"Цель: {results['goal']}")
print(f"Статус: {results['final_status']}")
print(f"Итераций: {len(results['iterations'])}")
for i, iteration in enumerate(results['iterations'], 1):
print(f"\nИтерация {i}:")
print(f" Оценка прогресса: {iteration['assessment'].get('progress_score', 0)}/100")
print(f" Создано задач: {iteration['tasks_generated']}")
print(f" Выполнено задач: {iteration['tasks_completed']}")
print("\n Записей памяти агента:", len(agent.memory))
print(" Всего обработано задач:", len(agent.tasks))
except Exception as e:
print(f"Демонстрация требует корректный API ключ Gemini. Ошибка: {e}")
print("Получите бесплатный API ключ на: https://makersuite.google.com/app/apikey")Выводы
Модульная архитектура позволяет создать самообучающегося AI-агента с возможностью сложного принятия решений и адаптивного управления задачами. Фреймворк легко расширяется для мультиагентных систем или специализированных областей за счёт возможностей генеративного AI Google Gemini.
Для полного кода, уроков и дополнительных материалов посетите GitHub и сообщества, указанные в оригинальной статье.
Switch Language
Read this article in English