Learnix-AI-Lab commited on
Commit
834a8f4
·
verified ·
1 Parent(s): daa2ca2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -7,14 +7,14 @@ from pypdf import PdfReader
7
  from smolagents import CodeAgent, DuckDuckGoSearchTool, InferenceClientModel, tool
8
  import spaces
9
 
10
- # ১. মডেল সেটআপ
11
  HF_TOKEN = os.getenv("HF_TOKEN")
12
  model = InferenceClientModel(
13
- model_id="Qwen/Qwen2.5-Coder-1.5B-Instruct",
14
  token=HF_TOKEN
15
  )
16
 
17
- # ২. কাস্টম ফাইল রিডার টুলস
18
  @tool
19
  def read_pdf_content(file_path: str) -> str:
20
  """Reads and extracts text from a PDF file.
@@ -27,7 +27,7 @@ def read_pdf_content(file_path: str) -> str:
27
  text = ""
28
  for p in reader.pages:
29
  text += p.extract_text() or ""
30
- return text[:3000] if text else "No text found."
31
  except Exception as e:
32
  return f"Error reading PDF: {e}"
33
 
@@ -48,14 +48,17 @@ def inspect_image(file_path: str) -> str:
48
  gaia_agent = CodeAgent(
49
  tools=[DuckDuckGoSearchTool(), read_pdf_content, inspect_image],
50
  model=model,
51
- max_steps=5,
52
  additional_authorized_imports=["math", "statistics", "re", "json", "datetime"]
53
  )
54
 
 
 
 
 
 
55
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
56
 
57
- # ZeroGPU রিকোয়ারমেন্ট মেটাতে @spaces.GPU যুক্ত করা হলো
58
- @spaces.GPU
59
  def solve_single_task(question: str, file_path: str = None) -> str:
60
  prompt = f"Question: {question}\n"
61
  if file_path:
@@ -63,8 +66,10 @@ def solve_single_task(question: str, file_path: str = None) -> str:
63
  prompt += "Provide ONLY the concise final answer without explanations, reasoning, or 'FINAL ANSWER' prefix."
64
  try:
65
  raw = str(gaia_agent.run(prompt)).strip()
66
- return re.sub(r'^(FINAL ANSWER|Answer)[:\s]*', '', raw, flags=re.IGNORECASE).strip()
67
- except Exception:
 
 
68
  return "N/A"
69
 
70
  def run_and_submit_all(profile: gr.OAuthProfile | None):
@@ -116,7 +121,7 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
116
  }
117
 
118
  try:
119
- sub_resp = requests.post(submit_url, json=submit_data, timeout=30)
120
  sub_resp.raise_for_status()
121
  result_json = sub_resp.json()
122
  score = result_json.get("score", "N/A")
@@ -138,4 +143,5 @@ with gr.Blocks() as demo:
138
  )
139
 
140
  if __name__ == "__main__":
 
141
  demo.launch()
 
7
  from smolagents import CodeAgent, DuckDuckGoSearchTool, InferenceClientModel, tool
8
  import spaces
9
 
10
+ # ১. কোর্স অনুমোদিত এবং নির্ভরযোগ্য ৩২বি মডেল
11
  HF_TOKEN = os.getenv("HF_TOKEN")
12
  model = InferenceClientModel(
13
+ model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
14
  token=HF_TOKEN
15
  )
16
 
17
+ # ২. কাস্টম টুলস
18
  @tool
19
  def read_pdf_content(file_path: str) -> str:
20
  """Reads and extracts text from a PDF file.
 
27
  text = ""
28
  for p in reader.pages:
29
  text += p.extract_text() or ""
30
+ return text[:4000] if text else "No text found."
31
  except Exception as e:
32
  return f"Error reading PDF: {e}"
33
 
 
48
  gaia_agent = CodeAgent(
49
  tools=[DuckDuckGoSearchTool(), read_pdf_content, inspect_image],
50
  model=model,
51
+ max_steps=6,
52
  additional_authorized_imports=["math", "statistics", "re", "json", "datetime"]
53
  )
54
 
55
+ # ZeroGPU রিকোয়ারমেন্ট সন্তুষ্ট রাখার জন্য ডামি ফাংশন
56
+ @spaces.GPU
57
+ def _keep_zerogpu_alive():
58
+ return True
59
+
60
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
61
 
 
 
62
  def solve_single_task(question: str, file_path: str = None) -> str:
63
  prompt = f"Question: {question}\n"
64
  if file_path:
 
66
  prompt += "Provide ONLY the concise final answer without explanations, reasoning, or 'FINAL ANSWER' prefix."
67
  try:
68
  raw = str(gaia_agent.run(prompt)).strip()
69
+ ans = re.sub(r'^(FINAL ANSWER|Answer)[:\s]*', '', raw, flags=re.IGNORECASE).strip()
70
+ return ans if ans else "N/A"
71
+ except Exception as e:
72
+ print(f"Agent Error: {e}")
73
  return "N/A"
74
 
75
  def run_and_submit_all(profile: gr.OAuthProfile | None):
 
121
  }
122
 
123
  try:
124
+ sub_resp = requests.post(submit_url, json=submit_data, timeout=40)
125
  sub_resp.raise_for_status()
126
  result_json = sub_resp.json()
127
  score = result_json.get("score", "N/A")
 
143
  )
144
 
145
  if __name__ == "__main__":
146
+ _keep_zerogpu_alive()
147
  demo.launch()