in aidial_adapter_bedrock/llm/tools/tools_config.py [0:0]
def from_request(cls, request: AzureChatCompletionRequest) -> Self | None:
validate_messages(request)
if request.functions is not None:
functions = request.functions
function_call = request.function_call
tool_ids = None
elif request.tools is not None:
functions = [
ToolsConfig._get_function_from_tool(tool)
for tool in request.tools
]
function_call = ToolsConfig.tool_choice_to_function_call(
request.tool_choice
)
tool_ids = collect_tool_ids(request.messages)
else:
functions = []
function_call = None
tool_ids = None
if function_call is None:
function_call = "auto" if functions else "none"
required, selected = ToolsConfig.filter_functions(
function_call, functions
)
if selected == []:
return None
return cls(functions=selected, required=required, tool_ids=tool_ids)