Spaces:
Sleeping
Sleeping
import gradio as gr | |
import random | |
from smolagents import GradioUI, CodeAgent, LiteLLMModel | |
from tools import DuckDuckGoSearchTool, WeatherInfoTool, HubStatsTool | |
from retriever import load_guest_dataset | |
import os | |
import logging | |
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type | |
import litellm | |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
logger = logging.getLogger(__name__) | |
class RetryLiteLLMModel(LiteLLMModel): | |
def generate(self, *args, **kwargs): | |
"""Переопределение метода generate с повторными попытками""" | |
return super().generate(*args, **kwargs) | |
# Model wrapper | |
try: | |
model = RetryLiteLLMModel( | |
model_id="gemini/gemini-2.0-flash-lite", | |
api_key=os.environ['GEMINI_API_TOKEN'] | |
) | |
logger.info("Successfully initialized LiteLLM model") | |
except KeyError as e: | |
logger.error("GEMINI_API_TOKEN not set in environment variables") | |
raise | |
except Exception as e: | |
logger.error(f"Failed to initialize model: {str(e)}") | |
raise | |
# Tools initialization | |
search_tool = DuckDuckGoSearchTool() | |
weather_info_tool = WeatherInfoTool() | |
hub_stats_tool = HubStatsTool() | |
guest_info_tool = load_guest_dataset() | |
alfred = CodeAgent( | |
tools=[guest_info_tool, weather_info_tool, hub_stats_tool, search_tool], | |
model=model, | |
add_base_tools=True, | |
planning_interval=3 | |
) | |
if __name__ == "__main__": | |
logger.info("Launching Gradio UI...") | |
GradioUI(alfred).launch() |