Batnini commited on
Commit
bdb3160
·
verified ·
1 Parent(s): 5a03de9

Update tools/tool_agent.py

Browse files
Files changed (1) hide show
  1. tools/tool_agent.py +31 -30
tools/tool_agent.py CHANGED
@@ -1,31 +1,32 @@
1
- from transformers import pipeline
2
- import json
3
-
4
- class ToolCallingAgent:
5
- def __init__(self):
6
- # Small CPU-friendly model
7
- self.model = pipeline(
8
- "text-generation",
9
- model="gpt2", # Replace with small model you want
10
- device=-1,
11
- torch_dtype="float32"
 
 
 
 
12
  )
13
-
14
- def generate(self, prompt, tools):
15
- try:
16
- tools_json = json.dumps(tools, ensure_ascii=False)
17
- prompt = f"""Respond ONLY with JSON for one tool call from the following list: {tools_json}\nUser input: {prompt}"""
18
-
19
- response = self.model(
20
- prompt,
21
- max_new_tokens=100,
22
- do_sample=False
23
- )
24
-
25
- # Try to find JSON in output
26
- text = response[0]['generated_text']
27
- json_start = text.find("{")
28
- json_end = text.rfind("}") + 1
29
- return json.loads(text[json_start:json_end])
30
- except Exception as e:
31
- return {"tool_name": "error", "parameters": {"message": f"Failed to process request: {str(e)}"}}
 
1
+ def generate(self, prompt, tools):
2
+ try:
3
+ tools_json = json.dumps(tools, ensure_ascii=False)
4
+ prompt = f"""أنت مساعد ذكي. اختر أداة واحدة من القائمة التالية ثم أعد النتيجة كـ JSON فقط:
5
+ {tools_json}
6
+
7
+ مدخل المستخدم: {prompt}
8
+
9
+ صيغة الإخراج المطلوبة:
10
+ {{"tool_name": "اسم_الأداة", "parameters": {{"param": "القيمة"}}}}"""
11
+
12
+ response = self.model(
13
+ prompt,
14
+ max_new_tokens=150,
15
+ do_sample=False
16
  )
17
+
18
+ text = response[0]['generated_text']
19
+
20
+ # Extract JSON from text
21
+ json_start = text.find("{")
22
+ json_end = text.rfind("}") + 1
23
+ parsed = json.loads(text[json_start:json_end])
24
+
25
+ # Fallback if JSON missing keys
26
+ if "tool_name" not in parsed:
27
+ parsed = {"tool_name": "error", "parameters": {"message": "لم يتم التعرف على الأداة"}}
28
+
29
+ return parsed
30
+
31
+ except Exception as e:
32
+ return {"tool_name": "error", "parameters": {"message": f"فشل المعالجة: {str(e)}"}}