From 8025ad06613d844ef7eb23909df3b73aced4ba43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=A6=82=E5=BD=92=E5=8E=BB?= Date: Mon, 2 Jun 2025 18:08:53 +0800 Subject: [PATCH] Fixes #20534: Allow $ref in parameter for custom tools (#20535) Co-authored-by: Peter Xin --- api/core/tools/utils/parser.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/api/core/tools/utils/parser.py b/api/core/tools/utils/parser.py index f72291783a..3f844e8234 100644 --- a/api/core/tools/utils/parser.py +++ b/api/core/tools/utils/parser.py @@ -55,6 +55,13 @@ class ApiBasedToolSchemaParser: # convert parameters parameters = [] if "parameters" in interface["operation"]: + for i, parameter in enumerate(interface["operation"]["parameters"]): + if "$ref" in parameter: + root = openapi + reference = parameter["$ref"].split("/")[1:] + for ref in reference: + root = root[ref] + interface["operation"]["parameters"][i] = root for parameter in interface["operation"]["parameters"]: tool_parameter = ToolParameter( name=parameter["name"],