Spaces:
Configuration error
Configuration error
| import gradio as gr | |
| import os | |
| import json | |
| import logging | |
| from agent import GAIAAgent, MemoryManager | |
| from tools import WebSearchTool, CalculatorTool, CodeExecutionTool | |
| # تكوين التسجيل | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| logger = logging.getLogger("GAIA-Agent-UI") | |
| # إنشاء الأدوات | |
| tools = [ | |
| WebSearchTool(), | |
| CalculatorTool(), | |
| CodeExecutionTool() | |
| ] | |
| # إنشاء العميل | |
| memory_manager = MemoryManager() | |
| agent = GAIAAgent( | |
| model_name="gpt-3.5-turbo", # يمكن استبدالها بنموذج مفتوح المصدر مثل Mistral | |
| tools=tools, | |
| memory_manager=memory_manager | |
| ) | |
| # استرجاع المهام المتاحة من GAIA | |
| def get_available_tasks(): | |
| # في بيئة حقيقية، سنقوم باسترجاع هذه المهام من معيار GAIA | |
| return [ | |
| "climate_research", | |
| "mathematical_problem", | |
| "online_shopping", | |
| "travel_planning", | |
| "code_debugging" | |
| ] | |
| # تنفيذ المهمة | |
| def run_task(task_name, max_steps=10): | |
| logger.info(f"بدء المهمة: {task_name}") | |
| # تعريف المهام | |
| tasks = { | |
| "climate_research": "ابحث عن أحدث الدراسات حول تأثير تغير المناخ على مستويات سطح البحر وقدم ملخصًا للنتائج الرئيسية.", | |
| "mathematical_problem": "حل المعادلة التالية: x^2 - 4x + 4 = 0 وشرح جميع الخطوات.", | |
| "online_shopping": "ابحث عن أفضل لابتوب للطلاب بميزانية 800 دولار وقدم ثلاثة خيارات مع مقارنة بينها.", | |
| "travel_planning": "خطط لرحلة مدتها 3 أيام إلى باريس، فرنسا. اقترح جدولًا زمنيًا والمعالم السياحية والمطاعم.", | |
| "code_debugging": "قم بتصحيح الكود التالي:\ndef fibonacci(n):\n if n <= 0:\n return []\n elif n == 1:\n return [0]\n result = [0, 1]\n for i in range(2, n):\n result.append(result[i-1] - result[i-2])\n return result" | |
| } | |
| # تنفيذ المهمة | |
| task_description = tasks.get(task_name, "مهمة غير معروفة") | |
| results = agent.run(task_description, max_steps=max_steps) | |
| # تنسيق النتائج | |
| output_log = [] | |
| for step in results["steps"]: | |
| output_log.append(f"### الخطوة {step['step_num']}:") | |
| output_log.append(f"**ملاحظة**: {step['observation']}") | |
| output_log.append(f"**تفكير**: {step['reasoning']}") | |
| output_log.append(f"**إجراء**: {step['action']}") | |
| if step.get('tool_output'): | |
| output_log.append(f"**نتيجة الأداة**: {step['tool_output']}") | |
| output_log.append("") | |
| output_log.append(f"### النتيجة النهائية:") | |
| output_log.append(results["final_answer"]) | |
| # إعادة تقييم | |
| evaluation = agent.evaluate_task_performance(task_description, results) | |
| output_log.append(f"\n### التقييم:") | |
| output_log.append(f"**النتيجة**: {evaluation['score']:.2f}%") | |
| output_log.append(f"**التعليق**: {evaluation['feedback']}") | |
| return "\n".join(output_log) | |
| # إنشاء واجهة المستخدم | |
| with gr.Blocks(title="عميل GAIA للذكاء الاصطناعي") as demo: | |
| gr.Markdown("# عميل GAIA للذكاء الاصطناعي") | |
| gr.Markdown("اختر مهمة من معيار GAIA لتنفيذها باستخدام العميل الذكي.") | |
| with gr.Row(): | |
| with gr.Column(): | |
| task_dropdown = gr.Dropdown( | |
| choices=get_available_tasks(), | |
| label="اختر المهمة" | |
| ) | |
| max_steps = gr.Slider( | |
| minimum=1, | |
| maximum=20, | |
| value=10, | |
| step=1, | |
| label="الحد الأقصى للخطوات" | |
| ) | |
| run_button = gr.Button("تشغيل العميل") | |
| with gr.Column(): | |
| output = gr.Markdown(label="مخرجات العميل") | |
| run_button.click( | |
| fn=run_task, | |
| inputs=[task_dropdown, max_steps], | |
| outputs=output | |
| ) | |
| demo.launch() |