File size: 3,000 Bytes
9b5b26a
 
c19d193
0bbfd20
6aae614
9b5b26a
fe6ddf4
9b5b26a
fe6ddf4
 
 
 
9b5b26a
51dc433
 
0bbfd20
9b5b26a
51dc433
 
9b5b26a
51dc433
 
0bbfd20
51dc433
 
 
fe6ddf4
 
 
 
 
 
 
9b5b26a
fe6ddf4
9b5b26a
 
0bbfd20
 
 
fe6ddf4
0bbfd20
9b5b26a
 
 
fe6ddf4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51dc433
 
0bbfd20
fe6ddf4
51dc433
8c01ffb
fe6ddf4
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import requests
import pytz
import yaml
import os
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool

# ----- تصحيح: إضافة الاستيراد الناقص لـ datetime -----
import datetime

# ----- تصحيح: إغلاق الأقواس الناقصة في أداة التلخيص -----
@tool
def summarize_text(text: str, max_length: int = 130) -> str:
    """تلخيص النصوص باستخدام نموذج BART من Hugging Face
    
    Args:
        text: النص الأصلي المراد تلخيصه
        max_length: الحد الأقصى لطول الملخص (افتراضي: 130 كلمة)
    """
    try:
        API_URL = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn"
        headers = {"Authorization": f"Bearer {os.environ['HF_TOKEN']}"}
        data = {
            "inputs": text,
            "parameters": {"max_length": max_length}
        }  # <--- إضافة القوس المفقود هنا
        response = requests.post(API_URL, headers=headers, json=data)
        response.raise_for_status()
        summary = response.json()[0]['summary_text']
        return f"الملخص: {summary}"
    except Exception as e:
        return f"خطأ في التلخيص: {str(e)}"

# ----- تصحيح: إضافة النقطة في نهاية الجملة الأولى من الـ Docstring -----
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """أداة لجلب الوقت الحالي في منطقة زمنية محددة.
    
    Args:
        timezone: سلسلة نصية تمثل منطقة زمنية صالحة (مثال: 'America/New_York')
    """
    try:
        tz = pytz.timezone(timezone)
        local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
        return f"The current local time in {timezone} is: {local_time}"
    except Exception as e:
        return f"Error fetching time for timezone '{timezone}': {str(e)}"

# ----- تصحيح: إضافة تعريف النموذج (model) -----
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    custom_role_conversions=None,
)

# ----- تصحيح: إضافة الأداة المُستوردة من الـ Hub -----
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

# ----- تصحيح: إغلاق الأقواس الناقصة في تعريف الوكيل -----
agent = CodeAgent(
    model=model,
    tools=[
        FinalAnswerTool(),  # <--- تصحيح: إضافة الأقواس ()
        DuckDuckGoSearchTool(),
        image_generation_tool,
        summarize_text,
        get_current_time_in_timezone
    ],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=yaml.safe_load(open("prompts.yaml"))
)

GradioUI(agent).launch()