Универсальный ИИ-агент для всестороннего анализа вопросов с использованием Python, LangGraph, LangChain и Ollama с моделью Gemma3.
- Глубокий анализ вопросов: Агент разбивает сложные вопросы на отдельные аспекты и исследует каждый из них
- Интеллектуальный поиск: Использует DuckDuckGo для поиска актуальной информации в интернете
- Анализ веб-страниц: Загружает и анализирует содержимое веб-страниц по URL
- Циклическая обработка: Систематически исследует каждый аспект вопроса
- Синтез результатов: Объединяет все найденные данные в структурированный отчет
- Расширяемость: Легко добавлять новые инструменты и возможности
- Python 3.8+
- LangChain - фреймворк для работы с языковыми моделями
- LangGraph - создание агентов с состояниями и циклами
- Ollama - локальный запуск языковых моделей
- Gemma3 - мощная языковая модель от Google
- DuckDuckGo Search - поиск в интернете
- BeautifulSoup - парсинг HTML
- Клонируйте репозиторий:
git clone <repository-url>
cd universal-ai-agent- Установите зависимости:
pip install -r requirements.txt- Настройте Ollama:
# Установите Ollama (https://ollama.ai/)
ollama pull gemma2:9b- Создайте файл конфигурации:
cp .env.example .env
# Отредактируйте .env при необходимостиpython main.pypython main.py "Как искусственный интеллект изменит образование?"# Запустить все примеры
python examples.py all
# Интерактивный выбор примера
python examples.py interactive
# Запустить конкретный пример
python examples.py 1- UniversalAgent - главный класс агента
- WebSearchTool - инструмент поиска в интернете
- URLContentTool - инструмент загрузки веб-страниц
- AgentState - состояние агента для LangGraph
[Анализ вопроса] → [Исследование аспекта] → [Продолжить?]
↓
[Синтез результатов] → [Завершение]
- Анализ: Агент анализирует вопрос и разбивает его на аспекты
- Исследование: Для каждого аспекта выполняется поиск и анализ данных
- Синтез: Все результаты объединяются в итоговый отчет
Настройки в файле 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Для добавления нового инструмента:
- Создайте класс инструмента в
tools/ - Добавьте метод в
UniversalAgent._create_*_tool() - Зарегистрируйте инструмент в
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 serveollama pull gemma2:9b- Проверьте интернет-соединение
- Увеличьте
request_timeoutв конфигурации
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Создайте Pull Request
MIT License
При возникновении проблем создайте Issue в репозитории.
Создано с ❤️ опытным сеньор-программистом с 20-летним стажем