docs: adding docstrings

This commit is contained in:
ogabrielluiz 2023-03-09 12:21:13 -03:00
commit 26e06bcabf
2 changed files with 16 additions and 12 deletions

View file

@ -11,6 +11,7 @@ from langflow_backend.utils import payload
def load_flow_from_json(path: str):
"""Load flow from json file"""
with open(path, "r") as f:
flow_graph = json.load(f)
data_graph = flow_graph["data"]
@ -22,6 +23,7 @@ def load_flow_from_json(path: str):
def replace_zero_shot_prompt_with_prompt_template(nodes):
"""Replace ZeroShotPrompt with PromptTemplate"""
for node in nodes:
if node["data"]["type"] == "ZeroShotPrompt":
# Build Prompt Template
@ -37,6 +39,8 @@ def replace_zero_shot_prompt_with_prompt_template(nodes):
def process_data_graph(data_graph: Dict[str, Any]):
"""Process data graph by extracting input variables and replacing ZeroShotPrompt with PromptTemplate,
then run the graph and return the result and thought."""
nodes = data_graph["nodes"]
# Substitute ZeroShotPrompt with PromptTemplate
nodes = replace_zero_shot_prompt_with_prompt_template(nodes)
@ -64,6 +68,7 @@ def process_data_graph(data_graph: Dict[str, Any]):
def load_langchain_type_from_config(config: Dict[str, Any]):
"""Load langchain type from config"""
# Get type list
type_list = get_type_list()
if config["_type"] in type_list["agents"]:
@ -77,6 +82,7 @@ def load_langchain_type_from_config(config: Dict[str, Any]):
def get_result_and_thought(extracted_json: Dict[str, Any], message: str):
"""Get result and thought from extracted json"""
# Get type list
try:
loaded = load_langchain_type_from_config(config=extracted_json)
@ -90,6 +96,7 @@ def get_result_and_thought(extracted_json: Dict[str, Any], message: str):
def build_prompt_template(prompt, tools):
"""Build PromptTemplate from ZeroShotPrompt"""
prefix = prompt["node"]["template"]["prefix"]["value"]
suffix = prompt["node"]["template"]["suffix"]["value"]
format_instructions = prompt["node"]["template"]["format_instructions"]["value"]

View file

@ -1,3 +1,4 @@
import contextlib
import re
@ -6,7 +7,7 @@ def extract_input_variables(data):
Extracts input variables from the template and adds them to the input_variables field.
"""
for node in data["nodes"]:
try:
with contextlib.suppress(Exception):
if "input_variables" in node["data"]["node"]["template"]:
if node["data"]["node"]["template"]["_type"] == "prompt":
variables = re.findall(
@ -22,8 +23,6 @@ def extract_input_variables(data):
else:
variables = []
node["data"]["node"]["template"]["input_variables"]["value"] = variables
except:
pass
return data
@ -31,16 +30,16 @@ def get_root_node(data):
"""
Returns the root node of the template.
"""
root = None
incoming_edges = {edge["source"] for edge in data["edges"]}
for node in data["nodes"]:
if node["id"] not in incoming_edges:
root = node
break
return root
return next(
(node for node in data["nodes"] if node["id"] not in incoming_edges), None
)
def build_json(root, nodes, edges):
"""
Builds a json from the nodes and edges
"""
edge_ids = [edge["source"] for edge in edges if edge["target"] == root["id"]]
local_nodes = [node for node in nodes if node["id"] in edge_ids]
@ -71,9 +70,7 @@ def build_json(root, nodes, edges):
if value["required"] and not children:
raise ValueError(f"No child with type {module_type} found")
values = [
build_json(child, nodes, edges) for child in children
]
values = [build_json(child, nodes, edges) for child in children]
value = list(values) if value["list"] else next(iter(values), None)
final_dict[key] = value
return final_dict