| @@ -1,4 +1,5 @@ | |||
| import math | |||
| import re | |||
| from typing import Mapping, List, Dict, Any, Optional | |||
| from langchain import PromptTemplate | |||
| @@ -178,13 +179,20 @@ class MultiDatasetRouterChain(Chain): | |||
| route = self.router_chain.route(inputs) | |||
| if not route.destination: | |||
| destination = '' | |||
| if route.destination: | |||
| pattern = r'\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b' | |||
| match = re.search(pattern, route.destination, re.IGNORECASE) | |||
| if match: | |||
| destination = match.group() | |||
| if not destination: | |||
| return {"text": ''} | |||
| elif route.destination in self.dataset_tools: | |||
| return {"text": self.dataset_tools[route.destination].run( | |||
| elif destination in self.dataset_tools: | |||
| return {"text": self.dataset_tools[destination].run( | |||
| route.next_inputs['input'] | |||
| )} | |||
| else: | |||
| raise ValueError( | |||
| f"Received invalid destination chain name '{route.destination}'" | |||
| f"Received invalid destination chain name '{destination}'" | |||
| ) | |||