delcenjo's picture
Upload folder using huggingface_hub
1de7838 verified
Raw
History Blame Contribute Delete
1.83 kB
from .config import CHAT_MODEL, MAX_STEPS
from .tools import Toolbox
SYSTEM_PROMPT = (
"You are a data analyst. Answer the user's question about the shop database "
"using the available tools. Inspect the schema when unsure, write correct "
"SQLite queries and base every figure on tool results. Be concise."
)
class SQLAgent:
def __init__(self, model=CHAT_MODEL, max_steps=MAX_STEPS, db_path=None):
import anthropic
self.client = anthropic.Anthropic()
self.model = model
self.max_steps = max_steps
self.toolbox = Toolbox(db_path) if db_path else Toolbox()
def run(self, question, verbose=False):
messages = [{"role": "user", "content": question}]
for _ in range(self.max_steps):
response = self.client.messages.create(
model=self.model,
max_tokens=1024,
system=SYSTEM_PROMPT,
tools=Toolbox.DEFINITIONS,
messages=messages,
)
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
return "".join(block.text for block in response.content if block.type == "text")
tool_results = []
for block in response.content:
if block.type == "tool_use":
if verbose:
print(f" -> {block.name}({block.input})")
output = self.toolbox.execute(block.name, block.input)
tool_results.append(
{"type": "tool_result", "tool_use_id": block.id, "content": output}
)
messages.append({"role": "user", "content": tool_results})
return "Stopped: reached the maximum number of tool-use steps."