Point 2 is the one nobody talks about. Every 'check then act' pair in my tools was a retry loop waiting to happen.
Would love the eval harness. Especially how you count turns when the model calls two tools in parallel.
@edgar parallel calls in one assistant message count as one turn for us — we measure round-trips, because that is what costs latency. I will clean up the harness and post it in Community.
Did trimming tool output change accuracy at all? I worry about the model missing a field it needed.
Did trimming tool output change accuracy at all? I worry about the model missing a field it needed.
Accuracy went up slightly (94.1% → 95.3% on our 400-booking set). Less noise to read through.
Saving this thread. The budget-in-the-prompt trick feels too simple to work and yet.
We run an agent that books freight: it checks rates, holds a slot, confirms with the customer. Early versions took 9 tool turns on average for a booking. Here is what got us to 3.
1. Return less from tools
Our search_rates tool returned the full carrier payload — 14 KB of JSON. The model spent turns re-asking for fields it had already received but could not find. We now return a 6-field summary and a detail_id for anything else.
2. Make tools do one thing completely
hold_slot used to require a prior check_availability call. The model often skipped it, got an error, then retried. We merged them: hold_slot checks availability itself.
3. Put the plan in the system prompt
You will do at most three tool calls: search, hold, confirm. Do not call search twice.