""" Основной файл приложения для запуска агента и интерфейса GAIA benchmark. """ import os import logging import gradio as gr from typing import Dict, List, Any, Optional, Tuple # Импорт компонентов агента from agent_implementation import AgentController from gaia_integration import GAIABenchmark, create_gaia_gradio_interface # Настройка логирования logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler("app.log"), logging.StreamHandler() ] ) logger = logging.getLogger("app") # Проверка наличия токена hf_token = os.environ.get("HF_TOKEN") if not hf_token: logger.warning("HF_TOKEN not found in environment variables") print("WARNING: HF_TOKEN not found in environment variables") def process_question(question: str) -> str: """ Обработка вопроса с помощью агента. Args: question: Вопрос для обработки Returns: Ответ на вопрос """ if not question: return "Please enter a question." try: # Создание агента agent = AgentController( model_name="gpt-3.5-turbo", username="user" ) # Обработка вопроса answer = agent.process_question(question) return answer except Exception as e: logger.error(f"Error processing question: {e}") return f"Error: {str(e)}" def create_gradio_interface(): """ Создание интерфейса Gradio. Returns: Интерфейс Gradio """ # Создание агента agent = AgentController( model_name="gpt-3.5-turbo", username="user" ) # Создание интерфейса with gr.Blocks() as demo: gr.Markdown("# Hugging Face Agent with Tools") with gr.Tab("Agent"): with gr.Row(): with gr.Column(): question_input = gr.Textbox(label="Question", placeholder="Enter your question here...") submit_button = gr.Button("Submit") with gr.Column(): answer_output = gr.Textbox(label="Answer") submit_button.click(fn=process_question, inputs=question_input, outputs=answer_output) with gr.Tab("GAIA Benchmark"): # Создание интерфейса для GAIA benchmark gaia_interface = create_gaia_gradio_interface(agent, hf_token) # Интеграция интерфейса GAIA benchmark # Примечание: в данной реализации интерфейс создается внутри функции create_gaia_gradio_interface # и возвращается как часть основного интерфейса return demo def main(): """Основная функция для запуска приложения.""" demo = create_gradio_interface() demo.launch() if __name__ == "__main__": main()