Browse Source

fix: gemini model use some tools raise error (#9993)

tags/0.11.0
非法操作 1 year ago
parent
commit
12adcf8925
No account linked to committer's email address
1 changed files with 26 additions and 19 deletions
  1. 26
    19
      api/core/model_runtime/model_providers/google/llm/llm.py

+ 26
- 19
api/core/model_runtime/model_providers/google/llm/llm.py View File

@@ -116,26 +116,33 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
:param tools: tool messages
:return: glm tools
"""
return glm.Tool(
function_declarations=[
glm.FunctionDeclaration(
name=tool.name,
parameters=glm.Schema(
type=glm.Type.OBJECT,
properties={
key: {
"type_": value.get("type", "string").upper(),
"description": value.get("description", ""),
"enum": value.get("enum", []),
}
for key, value in tool.parameters.get("properties", {}).items()
},
required=tool.parameters.get("required", []),
),
function_declarations = []
for tool in tools:
properties = {}
for key, value in tool.parameters.get("properties", {}).items():
properties[key] = {
"type_": glm.Type.STRING,
"description": value.get("description", ""),
"enum": value.get("enum", []),
}

if properties:
parameters = glm.Schema(
type=glm.Type.OBJECT,
properties=properties,
required=tool.parameters.get("required", []),
)
for tool in tools
]
)
else:
parameters = None

function_declaration = glm.FunctionDeclaration(
name=tool.name,
parameters=parameters,
description=tool.description,
)
function_declarations.append(function_declaration)

return glm.Tool(function_declarations=function_declarations)

def validate_credentials(self, model: str, credentials: dict) -> None:
"""

Loading…
Cancel
Save