lionagi 0.0.316__py3-none-any.whl → 0.1.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. lionagi/core/__init__.py +19 -8
  2. lionagi/core/agent/__init__.py +0 -3
  3. lionagi/core/agent/base_agent.py +25 -30
  4. lionagi/core/branch/__init__.py +0 -4
  5. lionagi/core/branch/{base_branch.py → base.py} +12 -13
  6. lionagi/core/branch/branch.py +22 -19
  7. lionagi/core/branch/executable_branch.py +0 -347
  8. lionagi/core/branch/{branch_flow_mixin.py → flow_mixin.py} +5 -5
  9. lionagi/core/direct/__init__.py +10 -1
  10. lionagi/core/direct/cot.py +61 -26
  11. lionagi/core/direct/plan.py +10 -8
  12. lionagi/core/direct/predict.py +5 -5
  13. lionagi/core/direct/react.py +8 -8
  14. lionagi/core/direct/score.py +4 -4
  15. lionagi/core/direct/select.py +4 -4
  16. lionagi/core/direct/utils.py +7 -4
  17. lionagi/core/direct/vote.py +2 -2
  18. lionagi/core/execute/base_executor.py +47 -0
  19. lionagi/core/execute/branch_executor.py +296 -0
  20. lionagi/core/execute/instruction_map_executor.py +179 -0
  21. lionagi/core/execute/neo4j_executor.py +381 -0
  22. lionagi/core/execute/structure_executor.py +314 -0
  23. lionagi/core/flow/monoflow/ReAct.py +20 -20
  24. lionagi/core/flow/monoflow/chat.py +6 -6
  25. lionagi/core/flow/monoflow/chat_mixin.py +23 -33
  26. lionagi/core/flow/monoflow/followup.py +14 -15
  27. lionagi/core/flow/polyflow/chat.py +15 -12
  28. lionagi/core/{prompt/action_template.py → form/action_form.py} +2 -2
  29. lionagi/core/{prompt → form}/field_validator.py +40 -31
  30. lionagi/core/form/form.py +302 -0
  31. lionagi/core/form/mixin.py +214 -0
  32. lionagi/core/{prompt/scored_template.py → form/scored_form.py} +2 -2
  33. lionagi/core/generic/__init__.py +37 -0
  34. lionagi/core/generic/action.py +26 -0
  35. lionagi/core/generic/component.py +455 -0
  36. lionagi/core/generic/condition.py +44 -0
  37. lionagi/core/generic/data_logger.py +305 -0
  38. lionagi/core/generic/edge.py +162 -0
  39. lionagi/core/generic/mail.py +90 -0
  40. lionagi/core/generic/mailbox.py +36 -0
  41. lionagi/core/generic/node.py +285 -0
  42. lionagi/core/generic/relation.py +70 -0
  43. lionagi/core/generic/signal.py +22 -0
  44. lionagi/core/generic/structure.py +362 -0
  45. lionagi/core/generic/transfer.py +20 -0
  46. lionagi/core/generic/work.py +40 -0
  47. lionagi/core/graph/graph.py +126 -0
  48. lionagi/core/graph/tree.py +190 -0
  49. lionagi/core/mail/__init__.py +0 -8
  50. lionagi/core/mail/mail_manager.py +15 -12
  51. lionagi/core/mail/schema.py +9 -2
  52. lionagi/core/messages/__init__.py +0 -3
  53. lionagi/core/messages/schema.py +17 -225
  54. lionagi/core/session/__init__.py +0 -3
  55. lionagi/core/session/session.py +24 -22
  56. lionagi/core/tool/__init__.py +3 -1
  57. lionagi/core/tool/tool.py +28 -0
  58. lionagi/core/tool/tool_manager.py +75 -75
  59. lionagi/experimental/directive/evaluator/__init__.py +0 -0
  60. lionagi/experimental/directive/evaluator/ast_evaluator.py +115 -0
  61. lionagi/experimental/directive/evaluator/base_evaluator.py +202 -0
  62. lionagi/experimental/directive/evaluator/sandbox_.py +14 -0
  63. lionagi/experimental/directive/evaluator/script_engine.py +83 -0
  64. lionagi/experimental/directive/parser/__init__.py +0 -0
  65. lionagi/experimental/directive/parser/base_parser.py +215 -0
  66. lionagi/experimental/directive/schema.py +36 -0
  67. lionagi/experimental/directive/template_/__init__.py +0 -0
  68. lionagi/experimental/directive/template_/base_template.py +63 -0
  69. lionagi/experimental/tool/__init__.py +0 -0
  70. lionagi/experimental/tool/function_calling.py +43 -0
  71. lionagi/experimental/tool/manual.py +66 -0
  72. lionagi/experimental/tool/schema.py +59 -0
  73. lionagi/experimental/tool/tool_manager.py +138 -0
  74. lionagi/experimental/tool/util.py +16 -0
  75. lionagi/experimental/work/__init__.py +0 -0
  76. lionagi/experimental/work/_logger.py +25 -0
  77. lionagi/experimental/work/exchange.py +0 -0
  78. lionagi/experimental/work/schema.py +30 -0
  79. lionagi/experimental/work/tests.py +72 -0
  80. lionagi/experimental/work/util.py +0 -0
  81. lionagi/experimental/work/work_function.py +89 -0
  82. lionagi/experimental/work/worker.py +12 -0
  83. lionagi/integrations/bridge/autogen_/__init__.py +0 -0
  84. lionagi/integrations/bridge/autogen_/autogen_.py +124 -0
  85. lionagi/integrations/bridge/llamaindex_/get_index.py +294 -0
  86. lionagi/integrations/bridge/llamaindex_/llama_pack.py +227 -0
  87. lionagi/integrations/bridge/transformers_/__init__.py +0 -0
  88. lionagi/integrations/bridge/transformers_/install_.py +36 -0
  89. lionagi/integrations/chunker/chunk.py +7 -7
  90. lionagi/integrations/config/oai_configs.py +5 -5
  91. lionagi/integrations/config/ollama_configs.py +1 -1
  92. lionagi/integrations/config/openrouter_configs.py +1 -1
  93. lionagi/integrations/loader/load.py +6 -6
  94. lionagi/integrations/loader/load_util.py +8 -8
  95. lionagi/integrations/storage/__init__.py +3 -0
  96. lionagi/integrations/storage/neo4j.py +673 -0
  97. lionagi/integrations/storage/storage_util.py +289 -0
  98. lionagi/integrations/storage/to_csv.py +63 -0
  99. lionagi/integrations/storage/to_excel.py +67 -0
  100. lionagi/libs/ln_api.py +3 -3
  101. lionagi/libs/ln_knowledge_graph.py +405 -0
  102. lionagi/libs/ln_parse.py +43 -6
  103. lionagi/libs/ln_queue.py +101 -0
  104. lionagi/libs/ln_tokenizer.py +57 -0
  105. lionagi/libs/ln_validate.py +288 -0
  106. lionagi/libs/sys_util.py +29 -7
  107. lionagi/lions/__init__.py +0 -0
  108. lionagi/lions/coder/__init__.py +0 -0
  109. lionagi/lions/coder/add_feature.py +20 -0
  110. lionagi/lions/coder/base_prompts.py +22 -0
  111. lionagi/lions/coder/coder.py +121 -0
  112. lionagi/lions/coder/util.py +91 -0
  113. lionagi/lions/researcher/__init__.py +0 -0
  114. lionagi/lions/researcher/data_source/__init__.py +0 -0
  115. lionagi/lions/researcher/data_source/finhub_.py +191 -0
  116. lionagi/lions/researcher/data_source/google_.py +199 -0
  117. lionagi/lions/researcher/data_source/wiki_.py +96 -0
  118. lionagi/lions/researcher/data_source/yfinance_.py +21 -0
  119. lionagi/tests/integrations/__init__.py +0 -0
  120. lionagi/tests/libs/__init__.py +0 -0
  121. lionagi/tests/libs/test_async.py +0 -0
  122. lionagi/tests/libs/test_field_validators.py +353 -0
  123. lionagi/tests/libs/test_queue.py +67 -0
  124. lionagi/tests/test_core/test_base_branch.py +0 -1
  125. lionagi/tests/test_core/test_branch.py +2 -0
  126. lionagi/tests/test_core/test_session_base_util.py +1 -0
  127. lionagi/version.py +1 -1
  128. {lionagi-0.0.316.dist-info → lionagi-0.1.1.dist-info}/METADATA +1 -1
  129. lionagi-0.1.1.dist-info/RECORD +190 -0
  130. lionagi/core/prompt/prompt_template.py +0 -312
  131. lionagi/core/schema/__init__.py +0 -22
  132. lionagi/core/schema/action_node.py +0 -29
  133. lionagi/core/schema/base_mixin.py +0 -296
  134. lionagi/core/schema/base_node.py +0 -199
  135. lionagi/core/schema/condition.py +0 -24
  136. lionagi/core/schema/data_logger.py +0 -354
  137. lionagi/core/schema/data_node.py +0 -93
  138. lionagi/core/schema/prompt_template.py +0 -67
  139. lionagi/core/schema/structure.py +0 -912
  140. lionagi/core/tool/manual.py +0 -1
  141. lionagi-0.0.316.dist-info/RECORD +0 -121
  142. /lionagi/core/{branch/base → execute}/__init__.py +0 -0
  143. /lionagi/core/flow/{base/baseflow.py → baseflow.py} +0 -0
  144. /lionagi/core/flow/{base/__init__.py → mono_chat_mixin.py} +0 -0
  145. /lionagi/core/{prompt → form}/__init__.py +0 -0
  146. /lionagi/{tests/test_integrations → core/graph}/__init__.py +0 -0
  147. /lionagi/{tests/test_libs → experimental}/__init__.py +0 -0
  148. /lionagi/{tests/test_libs/test_async.py → experimental/directive/__init__.py} +0 -0
  149. /lionagi/tests/{test_libs → libs}/test_api.py +0 -0
  150. /lionagi/tests/{test_libs → libs}/test_convert.py +0 -0
  151. /lionagi/tests/{test_libs → libs}/test_func_call.py +0 -0
  152. /lionagi/tests/{test_libs → libs}/test_nested.py +0 -0
  153. /lionagi/tests/{test_libs → libs}/test_parse.py +0 -0
  154. /lionagi/tests/{test_libs → libs}/test_sys_util.py +0 -0
  155. {lionagi-0.0.316.dist-info → lionagi-0.1.1.dist-info}/LICENSE +0 -0
  156. {lionagi-0.0.316.dist-info → lionagi-0.1.1.dist-info}/WHEEL +0 -0
  157. {lionagi-0.0.316.dist-info → lionagi-0.1.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  from typing import Callable
2
2
 
3
- from lionagi.core.schema import DataNode
3
+ from lionagi.core.generic import Node
4
4
  from ..bridge.langchain_.langchain_bridge import LangchainBridge
5
5
  from ..bridge.llamaindex_.llama_index_bridge import LlamaIndexBridge
6
6
 
@@ -9,14 +9,14 @@ from .load_util import dir_to_nodes, ReaderType, _datanode_parser
9
9
 
10
10
  def text_reader(args, kwargs):
11
11
  """
12
- Reads text files from a directory and converts them to DataNode instances.
12
+ Reads text files from a directory and converts them to Node instances.
13
13
 
14
14
  Args:
15
15
  args: Positional arguments for the dir_to_nodes function.
16
16
  kwargs: Keyword arguments for the dir_to_nodes function.
17
17
 
18
18
  Returns:
19
- A list of DataNode instances.
19
+ A list of Node instances.
20
20
 
21
21
  Example usage:
22
22
  >>> args = ['path/to/text/files']
@@ -96,7 +96,7 @@ def _plain_reader(reader, reader_args, reader_kwargs):
96
96
  def _langchain_reader(reader, reader_args, reader_kwargs, to_datanode: bool | Callable):
97
97
  nodes = LangchainBridge.langchain_loader(reader, reader_args, reader_kwargs)
98
98
  if isinstance(to_datanode, bool) and to_datanode is True:
99
- nodes = [DataNode.from_langchain(i) for i in nodes]
99
+ nodes = [Node.from_langchain(i) for i in nodes]
100
100
 
101
101
  elif isinstance(to_datanode, Callable):
102
102
  nodes = _datanode_parser(nodes, to_datanode)
@@ -115,7 +115,7 @@ def _llama_index_reader(
115
115
  reader, reader_args, reader_kwargs, load_args, load_kwargs
116
116
  )
117
117
  if isinstance(to_datanode, bool) and to_datanode is True:
118
- nodes = [DataNode.from_llama_index(i) for i in nodes]
118
+ nodes = [Node.from_llama_index(i) for i in nodes]
119
119
  elif isinstance(to_datanode, Callable):
120
120
  nodes = _datanode_parser(nodes, to_datanode)
121
121
  return nodes
@@ -138,7 +138,7 @@ def _self_defined_reader(
138
138
  ) from e
139
139
 
140
140
  if isinstance(to_datanode, bool) and to_datanode is True:
141
- raise ValueError("Please define a valid parser to DataNode.")
141
+ raise ValueError("Please define a valid parser to Node.")
142
142
  elif isinstance(to_datanode, Callable):
143
143
  nodes = _datanode_parser(nodes, to_datanode)
144
144
  return nodes
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import List, Union, Dict, Any, Tuple
6
6
 
7
7
  from lionagi.libs import convert, func_call
8
- from lionagi.core.schema import DataNode
8
+ from lionagi.core.generic import Node
9
9
 
10
10
 
11
11
  class ReaderType(str, Enum):
@@ -62,11 +62,11 @@ def dir_to_nodes(
62
62
  recursive: bool = False,
63
63
  flatten: bool = True,
64
64
  clean_text: bool = True,
65
- ) -> List[DataNode]:
65
+ ) -> List[Node]:
66
66
  """
67
- Converts directory contents into DataNode objects based on specified file extensions.
67
+ Converts directory contents into Node objects based on specified file extensions.
68
68
 
69
- This function first retrieves a list of file paths from the specified directory, matching the given file extension. It then reads the content of these files, optionally cleaning the text, and converts each file's content into a DataNode object.
69
+ This function first retrieves a list of file paths from the specified directory, matching the given file extension. It then reads the content of these files, optionally cleaning the text, and converts each file's content into a Node object.
70
70
 
71
71
  Parameters:
72
72
  dir (str): The directory path from which to read files.
@@ -76,17 +76,17 @@ def dir_to_nodes(
76
76
  clean_text (bool, optional): If True, cleans the text read from files. Defaults to True.
77
77
 
78
78
  Returns:
79
- list: A list of DataNode objects created from the files in the specified directory.
79
+ list: A list of Node objects created from the files in the specified directory.
80
80
 
81
81
  Example:
82
82
  nodes = dir_to_nodes("/path/to/dir", ".txt", recursive=True)
83
83
  # This would read all .txt files in /path/to/dir and its subdirectories,
84
- # converting them into DataNode objects.
84
+ # converting them into Node objects.
85
85
  """
86
86
 
87
87
  path_list = dir_to_path(dir, ext, recursive, flatten)
88
88
  files_info = func_call.lcall(path_list, read_text, clean=clean_text)
89
- return func_call.lcall(files_info, lambda x: DataNode(content=x[0], metadata=x[1]))
89
+ return func_call.lcall(files_info, lambda x: Node(content=x[0], metadata=x[1]))
90
90
 
91
91
 
92
92
  def chunk_text(
@@ -263,4 +263,4 @@ def _datanode_parser(nodes, parser):
263
263
  try:
264
264
  return parser(nodes)
265
265
  except Exception as e:
266
- raise ValueError(f"DataNode parser {parser} failed. Error:{e}") from e
266
+ raise ValueError(f"Node parser {parser} failed. Error:{e}") from e
@@ -0,0 +1,3 @@
1
+ from lionagi.integrations.storage.neo4j import Neo4j
2
+
3
+ __all__ = ["Neo4j"]