gaia-agent / app.py
melassy's picture
Upload 6 files
ae459ff verified
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()