macro_rules! chatbot_tool_registry {
(
server_tools: [$($server_tool:ty),* $(,)?],
client_tools: [$($client_tool:ty),* $(,)?],
action_tools: [$($action_tool:ty),* $(,)?] $(,)?
) => { ... };
}Expand description
Defines the chatbot tools the LLM can call, split by who produces the output of a call.
Both registries are generated from this one list: the definitions offered to the LLM, the dispatcher that runs a server tool, the check that decides a call suspends the turn instead, what a tool requires of its caller and the rendering of a client’s answer. A tool therefore cannot be advertised without being callable, and a tool’s kind is stated in one place rather than implied by which list it was pasted into.