Skip to content

Инструменты и агенты

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.