Merge remote-tracking branch 'origin/main' into dev

This commit is contained in:
Gabriel Almeida 2023-05-27 09:38:52 -03:00
commit b42b4e5868
6 changed files with 249 additions and 218 deletions

View file

@ -110,7 +110,7 @@ class ChatManager:
start_resp = ChatResponse(message=None, type="start", intermediate_steps="")
await self.send_json(client_id, start_resp)
is_first_message = len(self.chat_history.get_history(client_id=client_id)) == 0
is_first_message = len(self.chat_history.get_history(client_id=client_id)) <= 1
# Generate result and thought
try:
logger.debug("Generating result and thought")

View file

@ -36,7 +36,7 @@ class AgentNode(Node):
#! Cannot deepcopy VectorStore, VectorStoreRouter, or SQL agents
if self.node_type in ["VectorStoreAgent", "VectorStoreRouterAgent", "SQLAgent"]:
return self._built_object
return deepcopy(self._built_object)
return self._built_object
class ToolNode(Node):
@ -81,7 +81,7 @@ class PromptNode(Node):
self.params["input_variables"] = list(set(self.params["input_variables"]))
self._build()
return deepcopy(self._built_object)
return self._built_object
class ChainNode(Node):
@ -105,13 +105,29 @@ class ChainNode(Node):
#! Cannot deepcopy SQLDatabaseChain
if self.node_type in ["SQLDatabaseChain"]:
return self._built_object
return deepcopy(self._built_object)
return self._built_object
class LLMNode(Node):
built_node_type = None
class_built_object = None
def __init__(self, data: Dict):
super().__init__(data, base_type="llms")
def build(self, force: bool = False) -> Any:
# LLM is different because some models might take up too much memory
# or time to load. So we only load them when we need them.ß
if self.node_type == self.built_node_type:
return self.class_built_object
if not self._built or force:
self._build()
self.built_node_type = self.node_type
self.class_built_object = self._built_object
# Avoid deepcopying the LLM
# that are loaded from a file
return self._built_object
class ToolkitNode(Node):
def __init__(self, data: Dict):
@ -132,7 +148,7 @@ class WrapperNode(Node):
if "headers" in self.params:
self.params["headers"] = eval(self.params["headers"])
self._build()
return deepcopy(self._built_object)
return self._built_object
class DocumentLoaderNode(Node):

View file

@ -134,7 +134,13 @@ def instantiate_documentloader(class_object, params):
def instantiate_textsplitter(class_object, params):
documents = params.pop("documents")
try:
documents = params.pop("documents")
except KeyError as e:
raise ValueError(
"The source you provided did not load correctly or was empty."
"Try changing the chunk_size of the Text Splitter."
) from e
text_splitter = class_object(**params)
return text_splitter.split_documents(documents)

View file

@ -50,10 +50,23 @@ export function TabsProvider({ children }: { children: ReactNode }) {
return newNodeId.current;
}
function save() {
if (flows.length !== 0)
let Saveflows = [...flows];
if (Saveflows.length !== 0)
Saveflows.forEach((flow) => {
if(flow.data && flow.data?.nodes) flow.data?.nodes.forEach((node) => {
console.log(node.data.type)
Object.keys(node.data.node.template).forEach((key) => {
console.log(node.data.node.template[key].type)
if(node.data.node.template[key].type==="file"){
console.log(node.data.node.template[key])
node.data.node.template[key].content = "";
}
})
})
})
window.localStorage.setItem(
"tabsData",
JSON.stringify({ tabIndex, flows, id})
JSON.stringify({ tabIndex, flows:Saveflows, id})
);
}
useEffect(() => {