Инструменты и агенты
run_tool_loop берёт на себя весь цикл: вызывает модель, выполняет запрошенные
инструменты через dispatch и повторяет до финального ответа без tool-вызовов.
def get_weather(city: str) -> str:
return f"В {city} сейчас 20°C"
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Текущая погода в городе",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
llms = llmbroker.Broker("llms.toml")
reply = llmbroker.run_tool_loop(
llms,
[{"role": "user", "content": "Какая погода в Москве?"}],
tools=tools,
dispatch={"get_weather": get_weather},
)
print(reply.text)
Асинхронная версия — await llmbroker.arun_tool_loop(...) поверх
AsyncBroker.
Для ручного управления циклом chat(messages, tools=...) возвращает результат
с tool_calls.