🐛 fix: xai missing field parameters
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user