Spaces:
Runtime error
Runtime error
from Component import * | |
class State: | |
""" | |
Sub-scenes of role activities, responsible for storing the tasks that each role needs to do | |
""" | |
def __init__(self, **kwargs): | |
self.next_states = {} | |
self.name = kwargs["name"] | |
self.environment_prompt = ( | |
kwargs["environment_prompt"] if "environment_prompt" in kwargs else "" | |
) | |
self.roles = kwargs["roles"] if "roles" in kwargs else (list(kwargs["agent_states"].keys()) if "agent_states" in kwargs else [0]) | |
if len(self.roles) == 0: | |
self.roles = [0] | |
self.begin_role = ( | |
kwargs["begin_role"] if "begin_role" in kwargs else self.roles[0] | |
) | |
self.begin_query = kwargs["begin_query"] if "begin_query" in kwargs else None | |
self.is_begin = True | |
self.summary_prompt = ( | |
kwargs["summary_prompt"] if "summary_prompt" in kwargs else None | |
) | |
self.current_role = self.begin_role | |
self.components = ( | |
self.init_components(kwargs["agent_states"]) | |
if "agent_states" in kwargs | |
else {} | |
) | |
self.index = ( | |
self.roles.index(self.begin_role) if self.begin_role in self.roles else 0 | |
) | |
self.chat_nums = 0 | |
def init_components(self, agent_states_dict: dict): | |
agent_states = {} | |
for role, components in agent_states_dict.items(): | |
component_dict = {} | |
for component, component_args in components.items(): | |
if component: | |
# "role" "style" | |
if component == "style": | |
component_dict["style"] = StyleComponent(component_args["role"]) | |
# "task" | |
elif component == "task": | |
component_dict["task"] = TaskComponent(component_args["task"]) | |
# "rule" | |
elif component == "rule": | |
component_dict["rule"] = RuleComponent(component_args["rule"]) | |
# "demonstration" | |
elif component == "demonstrations": | |
component_dict["demonstrations"] = DemonstrationComponent( | |
component_args["demonstrations"] | |
) | |
# "output" | |
elif component == "output": | |
component_dict["output"] = OutputComponent( | |
component_args["output"] | |
) | |
elif component == "last": | |
component_dict["last"] = LastComponent( | |
component_args["last_prompt"] | |
) | |
# "demonstrations" | |
elif component == "cot": | |
component_dict["cot"] = CoTComponent( | |
component_args["demonstrations"] | |
) | |
elif component == "CustomizeComponent": | |
component_dict["CustomizeComponent"] = CustomizeComponent( | |
component_args["template"], component_args["keywords"] | |
) | |
elif component == "system" : | |
component_dict["system"] = SystemComponent( | |
component_args["system_prompt"] | |
) | |
# =================================================================================# | |
# "output" | |
elif component == "StaticComponent": | |
component_dict["StaticComponent"] = StaticComponent( | |
component_args["output"] | |
) | |
# "top_k" "type" "knowledge_base" "system_prompt" "last_prompt" | |
elif component == "KnowledgeBaseComponent": | |
component_dict["tool"] = KnowledgeBaseComponent( | |
component_args["top_k"], | |
component_args["type"], | |
component_args["knowledge_path"], | |
) | |
elif component == "CategoryRequirementsComponent": | |
component_dict[ | |
"CategoryRequirementsComponent" | |
] = CategoryRequirementsComponent( | |
component_args["information_path"] | |
) | |
elif component == "FunctionComponent": | |
component_dict["FunctionComponent"] = FunctionComponent(component_args[""]) | |
# "short_memory_extract_words" "long_memory_extract_words" "system_prompt" "last_prompt" | |
elif component == "ExtractComponent": | |
component_dict["ExtractComponent"] = ExtractComponent( | |
component_args["extract_words"], | |
component_args["system_prompt"], | |
component_args["last_prompt"], | |
) | |
elif component == "WebSearchComponent": | |
component_dict["WebSearchComponent"] = WebSearchComponent( | |
component_args["engine_name"], component_args["api"] | |
) | |
elif component == "WebCrawlComponent": | |
component_dict["WebCrawlComponent"] = WebCrawlComponent( | |
component_args["name"] | |
) | |
elif component == "CodeComponent": | |
component_dict["CodeComponent"] = CodeComponent( | |
component_args["file_name"], component_args["keyword"] | |
) | |
# ==================================================== | |
else: | |
continue | |
agent_states[role] = component_dict | |
return agent_states | |