From d445f3967d1d8cc1e405a3e0684ec4d9f09463f8 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Fri, 9 Aug 2024 17:39:49 -0700 Subject: [PATCH] correctly add modified tool names to cache --- litellm/llms/prompt_templates/factory.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/litellm/llms/prompt_templates/factory.py b/litellm/llms/prompt_templates/factory.py index db655c01d0d..6c055300606 100644 --- a/litellm/llms/prompt_templates/factory.py +++ b/litellm/llms/prompt_templates/factory.py @@ -1,3 +1,4 @@ +import copy import json import re import traceback @@ -2310,13 +2311,20 @@ def make_valid_bedrock_tool_name(input_tool_name: str) -> str: # If the string is empty, return a default valid identifier if input_tool_name is None or len(input_tool_name) == 0: return input_tool_name - + bedrock_tool_name = copy.copy(input_tool_name) # If it doesn't start with a letter, prepend 'a' - if not input_tool_name[0].isalpha(): - input_tool_name = "a" + input_tool_name + if not bedrock_tool_name[0].isalpha(): + bedrock_tool_name = "a" + bedrock_tool_name # Replace any invalid characters with underscores - valid_string = "".join(replace_invalid(char) for char in input_tool_name) + valid_string = "".join(replace_invalid(char) for char in bedrock_tool_name) + + if input_tool_name != valid_string: + # passed tool name was formatted to become valid + # store it internally so we can use for the response + litellm.bedrock_tool_name_mappings.set_cache( + key=valid_string, value=input_tool_name + ) return valid_string