|  |  | @@ -14,23 +14,25 @@ ErrorHandlerFn = Callable[[BaseException | None, str | None, dict | None], None] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | def perform_variable_replacements( | 
		
	
		
			
			|  |  |  | input: str, history: list[dict]=[], variables: dict | None ={} | 
		
	
		
			
			|  |  |  | input: str, history: list[dict] | None = None, variables: dict | None = None | 
		
	
		
			
			|  |  |  | ) -> str: | 
		
	
		
			
			|  |  |  | """Perform variable replacements on the input string and in a chat log.""" | 
		
	
		
			
			|  |  |  | if history is None: | 
		
	
		
			
			|  |  |  | history = [] | 
		
	
		
			
			|  |  |  | if variables is None: | 
		
	
		
			
			|  |  |  | variables = {} | 
		
	
		
			
			|  |  |  | result = input | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | def replace_all(input: str) -> str: | 
		
	
		
			
			|  |  |  | result = input | 
		
	
		
			
			|  |  |  | if variables: | 
		
	
		
			
			|  |  |  | for entry in variables: | 
		
	
		
			
			|  |  |  | result = result.replace(f"{{{entry}}}", variables[entry]) | 
		
	
		
			
			|  |  |  | for k, v in variables.items(): | 
		
	
		
			
			|  |  |  | result = result.replace(f"{{{k}}}", v) | 
		
	
		
			
			|  |  |  | return result | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | result = replace_all(result) | 
		
	
		
			
			|  |  |  | for i in range(len(history)): | 
		
	
		
			
			|  |  |  | entry = history[i] | 
		
	
		
			
			|  |  |  | for i, entry in enumerate(history): | 
		
	
		
			
			|  |  |  | if entry.get("role") == "system": | 
		
	
		
			
			|  |  |  | history[i]["content"] = replace_all(entry.get("content") or "") | 
		
	
		
			
			|  |  |  | entry["content"] = replace_all(entry.get("content") or "") | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return result | 
		
	
		
			
			|  |  |  | 
 |