Spaces:
Runtime error
Runtime error
| import os | |
| from utils import sanitize_answer, download_file | |
| from typing import Optional | |
| class LLMInterface: | |
| def __init__(self): | |
| provider = os.environ.get("LLM_PROVIDER", "openai") | |
| self.provider = provider | |
| if provider == "openai": | |
| import openai | |
| self.client = openai | |
| else: | |
| # optionally support HF Inference here | |
| raise NotImplementedError("HF Inference not implemented") | |
| def chat(self, system: str, user: str, max_tokens: int = 256) -> str: | |
| if self.provider == "openai": | |
| resp = self.client.ChatCompletion.create( | |
| model=os.environ.get("OPENAI_MODEL", "gpt-4o-mini"), | |
| messages=[ | |
| {"role": "system", "content": system}, | |
| {"role": "user", "content": user}, | |
| ], | |
| temperature=0.0, | |
| max_tokens=max_tokens, | |
| ) | |
| return resp.choices[0].message.content | |
| else: | |
| raise RuntimeError("LLM provider not supported") | |
| class Agent: | |
| def __init__(self, llm: Optional[LLMInterface] = None): | |
| self.llm = llm or LLMInterface() | |
| def build_prompt(self, task: dict) -> (str, str): | |
| system = ( | |
| "You are a strict QA assistant. Return exactly the correct answer, " | |
| "no explanation, no prefixes, no suffixes, only one line." | |
| ) | |
| user = f"Task ID: {task.get('task_id')}\nQuestion: {task.get('question')}\n" | |
| if task.get("has_file"): | |
| user += "This task has a file; download it if needed and process it.\n" | |
| user += "Output only the final answer on one line." | |
| return system, user | |
| def answer_task(self, task: dict) -> str: | |
| system, user = self.build_prompt(task) | |
| raw = self.llm.chat(system, user, max_tokens=256) | |
| return sanitize_answer(raw) | |