|
|
@@ -674,20 +674,21 @@ func GeminiToOpenAIRequest(geminiRequest *dto.GeminiChatRequest, info *relaycomm
|
|
|
var tools []dto.ToolCallRequest
|
|
|
for _, tool := range geminiRequest.GetTools() {
|
|
|
if tool.FunctionDeclarations != nil {
|
|
|
- // 将 Gemini 的 FunctionDeclarations 转换为 OpenAI 的 ToolCallRequest
|
|
|
- functionDeclarations, ok := tool.FunctionDeclarations.([]dto.FunctionRequest)
|
|
|
- if ok {
|
|
|
- for _, function := range functionDeclarations {
|
|
|
- openAITool := dto.ToolCallRequest{
|
|
|
- Type: "function",
|
|
|
- Function: dto.FunctionRequest{
|
|
|
- Name: function.Name,
|
|
|
- Description: function.Description,
|
|
|
- Parameters: function.Parameters,
|
|
|
- },
|
|
|
- }
|
|
|
- tools = append(tools, openAITool)
|
|
|
+ functionDeclarations, err := common.Any2Type[[]dto.FunctionRequest](tool.FunctionDeclarations)
|
|
|
+ if err != nil {
|
|
|
+ common.SysError(fmt.Sprintf("failed to parse gemini function declarations: %v (type=%T)", err, tool.FunctionDeclarations))
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for _, function := range functionDeclarations {
|
|
|
+ openAITool := dto.ToolCallRequest{
|
|
|
+ Type: "function",
|
|
|
+ Function: dto.FunctionRequest{
|
|
|
+ Name: function.Name,
|
|
|
+ Description: function.Description,
|
|
|
+ Parameters: function.Parameters,
|
|
|
+ },
|
|
|
}
|
|
|
+ tools = append(tools, openAITool)
|
|
|
}
|
|
|
}
|
|
|
}
|