DocUA's picture
Підключено Gemini, але потребує агентної роботи
435589f
raw
history blame
3.56 kB
from tools.web_search import DuckDuckGoSearchTool
from tools.final_answer import FinalAnswerTool
from tools.healthcare_llm_visualizer import HealthcareLLMVisualizerTool
from Gradio_UI import GradioUI
from agent import ResearchAgent
from model_init import ModelInitializer # Новий імпорт
import os
from dotenv import load_dotenv
import logging
from pathlib import Path
# Налаштування логування
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('research_agent.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# Завантаження змінних середовища
load_dotenv()
def initialize_tools():
"""Ініціалізація всіх доступних інструментів"""
logger.info("Ініціалізація інструментів...")
try:
tools = [
DuckDuckGoSearchTool(
max_results=int(os.getenv('MAX_SEARCH_RESULTS', 10))
),
FinalAnswerTool(),
HealthcareLLMVisualizerTool()
]
logger.info("Інструменти успішно ініціалізовано")
return tools
except Exception as e:
logger.error(f"Помилка ініціалізації інструментів: {e}")
raise
def initialize_model(model_key=None):
"""Ініціалізація моделі"""
logger.info("Ініціалізація мовної моделі...")
try:
config_path = Path("models_config.json")
model_initializer = ModelInitializer(config_path)
model = model_initializer.initialize_model(model_key)
if model_key:
logger.info(f"Модель ініціалізовано: {model_key}")
else:
logger.info("Ініціалізовано модель за замовчуванням")
return model, model_initializer
except Exception as e:
logger.error(f"Помилка ініціалізації моделі: {e}")
raise
def main():
"""Головна точка входу в програму"""
try:
logger.info("Запуск Research Agent...")
# Ініціалізація компонентів
tools = initialize_tools()
model, model_initializer = initialize_model()
# Ініціалізація дослідницького агента
agent = ResearchAgent(
model=model,
tools=tools,
max_steps=int(os.getenv('MAX_STEPS', 10)),
verbosity_level=int(os.getenv('VERBOSITY_LEVEL', 1))
)
# Додавання model_initializer до агента для можливості зміни моделі
agent.model_initializer = model_initializer
# Запуск інтерфейсу
logger.info("Запуск Gradio інтерфейсу...")
ui = GradioUI(agent)
ui.launch(
debug=os.getenv('DEBUG_MODE', 'False').lower() == 'true',
share=os.getenv('SHARE_GRADIO', 'True').lower() == 'true',
server_name=os.getenv('GRADIO_SERVER_NAME', '0.0.0.0'),
server_port=int(os.getenv('GRADIO_SERVER_PORT', 7860))
)
except Exception as e:
logger.error(f"Помилка запуску програми: {e}")
raise
if __name__ == "__main__":
main()