|
|
|
|
@ -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}'"
|
|
|
|
|
)
|
|
|
|
|
|