Skip to content

temaptz/ai-agent

Repository files navigation

Универсальный ИИ-агент

Универсальный ИИ-агент для всестороннего анализа вопросов с использованием Python, LangGraph, LangChain и Ollama с моделью Gemma3.

🚀 Возможности

  • Глубокий анализ вопросов: Агент разбивает сложные вопросы на отдельные аспекты и исследует каждый из них
  • Интеллектуальный поиск: Использует DuckDuckGo для поиска актуальной информации в интернете
  • Анализ веб-страниц: Загружает и анализирует содержимое веб-страниц по URL
  • Циклическая обработка: Систематически исследует каждый аспект вопроса
  • Синтез результатов: Объединяет все найденные данные в структурированный отчет
  • Расширяемость: Легко добавлять новые инструменты и возможности

🛠 Технологии

  • Python 3.8+
  • LangChain - фреймворк для работы с языковыми моделями
  • LangGraph - создание агентов с состояниями и циклами
  • Ollama - локальный запуск языковых моделей
  • Gemma3 - мощная языковая модель от Google
  • DuckDuckGo Search - поиск в интернете
  • BeautifulSoup - парсинг HTML

📦 Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd universal-ai-agent
  1. Установите зависимости:
pip install -r requirements.txt
  1. Настройте Ollama:
# Установите Ollama (https://ollama.ai/)
ollama pull gemma2:9b
  1. Создайте файл конфигурации:
cp .env.example .env
# Отредактируйте .env при необходимости

🚀 Использование

Интерактивный режим

python main.py

Обработка конкретного вопроса

python main.py "Как искусственный интеллект изменит образование?"

Примеры использования

# Запустить все примеры
python examples.py all

# Интерактивный выбор примера
python examples.py interactive

# Запустить конкретный пример
python examples.py 1

🏗 Архитектура

Основные компоненты

  1. UniversalAgent - главный класс агента
  2. WebSearchTool - инструмент поиска в интернете
  3. URLContentTool - инструмент загрузки веб-страниц
  4. AgentState - состояние агента для LangGraph

Граф состояний

[Анализ вопроса] → [Исследование аспекта] → [Продолжить?]
                                    ↓
                              [Синтез результатов] → [Завершение]

Процесс работы

  1. Анализ: Агент анализирует вопрос и разбивает его на аспекты
  2. Исследование: Для каждого аспекта выполняется поиск и анализ данных
  3. Синтез: Все результаты объединяются в итоговый отчет

⚙️ Конфигурация

Настройки в файле config.py:

# Ollama настройки
ollama_base_url = "http://localhost:11434"
ollama_model = "gemma2:9b"

# Настройки поиска
duckduckgo_max_results = 10
request_timeout = 30

# Настройки агента
max_iterations = 5
max_aspects_per_question = 10

🔧 Добавление новых инструментов

Для добавления нового инструмента:

  1. Создайте класс инструмента в tools/
  2. Добавьте метод в UniversalAgent._create_*_tool()
  3. Зарегистрируйте инструмент в self.tools

Пример:

def _create_custom_tool(self):
    def custom_function(param: str) -> str:
        # Ваша логика
        return result
    
    return {
        "name": "custom_tool",
        "description": "Описание инструмента",
        "function": custom_function
    }

📊 Примеры результатов

Агент возвращает структурированные результаты:

{
    "original_question": "Ваш вопрос",
    "analysis_results": {
        "motivation": "Анализ мотивации",
        "aspects": ["аспект1", "аспект2"],
        "research_questions": ["вопрос1", "вопрос2"]
    },
    "final_insights": {
        "summary": "Краткий ответ",
        "key_conclusions": ["вывод1", "вывод2"],
        "insights": ["инсайт1", "инсайт2"],
        "recommendations": ["рекомендация1"],
        "confidence": "высокий"
    }
}

🐛 Устранение неполадок

Ollama не запущен

ollama serve

Модель не найдена

ollama pull gemma2:9b

Ошибки поиска

  • Проверьте интернет-соединение
  • Увеличьте request_timeout в конфигурации

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Создайте Pull Request

📄 Лицензия

MIT License

📞 Поддержка

При возникновении проблем создайте Issue в репозитории.


Создано с ❤️ опытным сеньор-программистом с 20-летним стажем

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages