needle-pi-coding-agent / integration /pi_tool_router.py
theabbie's picture
Publish Needle Pi coding-agent fine-tune
54c5de0 verified
Raw
History Blame Contribute Delete
1.05 kB
"""Route a short tool intent to Pi's live tool schemas with Needle."""
import json
import sys
from pathlib import Path
from needle import SimpleAttentionNetwork, generate, get_tokenizer, load_checkpoint
MODEL_ROOT = Path(__file__).resolve().parents[1]
params, config = load_checkpoint(MODEL_ROOT / "needle-pi-coding-agent.pkl")
model = SimpleAttentionNetwork(config)
tokenizer = get_tokenizer()
def main() -> None:
request = json.load(sys.stdin)
result = generate(
model,
params,
tokenizer,
query=request["intent"],
tools=json.dumps(request["tools"], separators=(",", ":")),
stream=False,
)
calls = json.loads(result)
if not isinstance(calls, list) or not calls:
raise ValueError("Needle returned no tool calls")
# Exa plans one step at a time. Running only Needle's first call keeps Pi's
# real tool result in the loop before either model chooses another action.
json.dump(calls[:1], sys.stdout, separators=(",", ":"))
if __name__ == "__main__":
main()