Spaces:
Runtime error
Runtime error
| from typing import Optional, List, Dict | |
| from .llm import BluLLM, make_messages | |
| from .rag import search as rag_search | |
| from .tools import calc, read_file | |
| from .utils import violates_safety | |
| SYSTEM_PROMPT = """You are Blu, a multilingual, tool-using assistant. | |
| Rules: | |
| 1) For math, call the calculator tool. | |
| 2) For file questions, call the file reader. | |
| 3) If --rag is enabled (context provided), use it to ground answers and cite filenames. | |
| 4) Be concise by default; switch to step-by-step for complex tasks. | |
| 5) Refuse unsafe requests politely.""" | |
| def run_blu( | |
| query: str, | |
| use_rag: bool = False, | |
| rag_query: Optional[str] = None, | |
| llm: Optional[BluLLM] = None, | |
| peft_adapter: Optional[str] = None, | |
| ) -> str: | |
| if violates_safety(query): | |
| return "Sorry, I can’t help with that." | |
| llm = llm or BluLLM() | |
| context = None | |
| if use_rag: | |
| rq = rag_query or query | |
| hits = rag_search(rq, k=4) | |
| if hits: | |
| context = "\n\n".join([f"[Source: {p}]\n{t}" for (p, t) in hits]) | |
| if any(k in query.lower() for k in ["calc:", "calculate", "evaluate"]): | |
| expr = query.split(":",1)[1].strip() if ":" in query else query | |
| tool_out = calc(expr) | |
| query = f"I computed `{expr}` and got `{tool_out}`. Please explain the steps briefly." | |
| if query.lower().startswith("read ") or query.lower().startswith("open "): | |
| path = query.split(" ",1)[1].strip() | |
| tool_out = read_file(path) | |
| query = f"I opened {path}. Contents snippet:\n{tool_out}\nNow answer the question above based on this." | |
| msgs = make_messages(query, system_text=SYSTEM_PROMPT, context=context) | |
| answer = llm.chat(msgs) | |
| if use_rag and context: | |
| answer += "\n\n(Sources consulted above.)" | |
| return answer | |