🐛 fix: xai missing field parameters

This commit is contained in:
Soulter
2025-04-12 09:47:11 +08:00
parent 344a486fd7
commit 7231403e16
2 changed files with 13 additions and 5 deletions
+5 -3
View File
@@ -339,7 +339,7 @@ class FuncCall:
]
logger.info(f"已关闭 MCP 服务 {name}")
def get_func_desc_openai_style(self) -> list:
def get_func_desc_openai_style(self, omit_empty_parameter_field = True) -> list:
"""
获得 OpenAI API 风格的**已经激活**的工具描述
"""
@@ -356,8 +356,10 @@ class FuncCall:
"description": f.description,
},
}
if f.parameters.get("properties"):
func_["function"]["parameters"] = f.parameters
func_["function"]["parameters"] = f.parameters
if not f.parameters.get("properties") and omit_empty_parameter_field:
# 如果 properties 为空,并且 omit_empty_parameter_field 为 True,则删除 parameters 字段
del func_["function"]["parameters"]
_l.append(func_)
return _l
@@ -87,7 +87,10 @@ class ProviderOpenAIOfficial(Provider):
async def _query(self, payloads: dict, tools: FuncCall) -> LLMResponse:
if tools:
tool_list = tools.get_func_desc_openai_style()
omit_empty_param_field = "grok" not in payloads.get("model", "").lower()
tool_list = tools.get_func_desc_openai_style(
omit_empty_parameter_field=omit_empty_param_field
)
if tool_list:
payloads["tools"] = tool_list
@@ -121,7 +124,10 @@ class ProviderOpenAIOfficial(Provider):
) -> AsyncGenerator[LLMResponse, None]:
"""流式查询API,逐步返回结果"""
if tools:
tool_list = tools.get_func_desc_openai_style()
omit_empty_param_field = "grok" not in payloads.get("model", "").lower()
tool_list = tools.get_func_desc_openai_style(
omit_empty_parameter_field=omit_empty_param_field
)
if tool_list:
payloads["tools"] = tool_list