lionagi 0.15.9__tar.gz → 0.15.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. lionagi-0.15.13/.github/workflows/docs-deploy.yml +36 -0
  2. {lionagi-0.15.9 → lionagi-0.15.13}/PKG-INFO +21 -16
  3. {lionagi-0.15.9 → lionagi-0.15.13}/README.md +18 -13
  4. lionagi-0.15.13/docs/DOCUMENTATION_STANDARDS.md +273 -0
  5. lionagi-0.15.13/docs/advanced/custom-operations.md +120 -0
  6. lionagi-0.15.13/docs/advanced/error-handling.md +218 -0
  7. lionagi-0.15.13/docs/advanced/flow-composition.md +224 -0
  8. lionagi-0.15.13/docs/advanced/index.md +44 -0
  9. lionagi-0.15.13/docs/advanced/observability.md +140 -0
  10. lionagi-0.15.13/docs/advanced/performance.md +174 -0
  11. lionagi-0.15.13/docs/code-of-conduct.md +59 -0
  12. lionagi-0.15.13/docs/comparisons/langgraph.md +440 -0
  13. lionagi-0.15.13/docs/contributing.md +51 -0
  14. lionagi-0.15.13/docs/cookbook/brainstorming.md +207 -0
  15. lionagi-0.15.13/docs/cookbook/claim-extraction.md +440 -0
  16. lionagi-0.15.13/docs/cookbook/code-review-crew.md +195 -0
  17. lionagi-0.15.13/docs/cookbook/data-persistence.md +316 -0
  18. lionagi-0.15.13/docs/cookbook/hr-automation.md +433 -0
  19. lionagi-0.15.13/docs/cookbook/index.md +91 -0
  20. lionagi-0.15.13/docs/cookbook/research-synthesis.md +212 -0
  21. lionagi-0.15.13/docs/core-concepts/index.md +76 -0
  22. lionagi-0.15.13/docs/core-concepts/lionagi-philosophy.md +206 -0
  23. lionagi-0.15.13/docs/core-concepts/messages-and-memory.md +186 -0
  24. lionagi-0.15.13/docs/core-concepts/models-and-providers.md +190 -0
  25. lionagi-0.15.13/docs/core-concepts/operations.md +160 -0
  26. lionagi-0.15.13/docs/core-concepts/sessions-and-branches.md +302 -0
  27. lionagi-0.15.13/docs/core-concepts/tools-and-functions.md +60 -0
  28. lionagi-0.15.13/docs/for-ai-agents/claude-code-usage.md +229 -0
  29. lionagi-0.15.13/docs/for-ai-agents/index.md +34 -0
  30. lionagi-0.15.13/docs/for-ai-agents/orchestration-guide.md +314 -0
  31. lionagi-0.15.13/docs/for-ai-agents/pattern-selection.md +289 -0
  32. lionagi-0.15.13/docs/for-ai-agents/self-improvement.md +442 -0
  33. lionagi-0.15.13/docs/includes/abbreviations.md +104 -0
  34. lionagi-0.15.13/docs/index.md +151 -0
  35. lionagi-0.15.13/docs/integrations/databases.md +530 -0
  36. lionagi-0.15.13/docs/integrations/dspy-optimization.md +365 -0
  37. lionagi-0.15.13/docs/integrations/index.md +62 -0
  38. lionagi-0.15.13/docs/integrations/llamaindex-rag.md +270 -0
  39. lionagi-0.15.13/docs/integrations/llm-providers.md +625 -0
  40. lionagi-0.15.13/docs/integrations/mcp-servers.md +283 -0
  41. lionagi-0.15.13/docs/integrations/tools.md +426 -0
  42. lionagi-0.15.13/docs/integrations/vector-stores.md +338 -0
  43. lionagi-0.15.13/docs/marketing/language-interoperability-manifesto.md +181 -0
  44. lionagi-0.15.13/docs/migration/from-autogen.md +243 -0
  45. lionagi-0.15.13/docs/migration/from-crewai.md +259 -0
  46. lionagi-0.15.13/docs/migration/from-langchain.md +350 -0
  47. lionagi-0.15.13/docs/migration/index.md +64 -0
  48. lionagi-0.15.13/docs/patterns/conditional-flows.md +183 -0
  49. lionagi-0.15.13/docs/patterns/fan-out-in.md +201 -0
  50. lionagi-0.15.13/docs/patterns/index.md +79 -0
  51. lionagi-0.15.13/docs/patterns/react-with-rag.md +142 -0
  52. lionagi-0.15.13/docs/patterns/sequential-analysis.md +186 -0
  53. lionagi-0.15.13/docs/patterns/tournament-validation.md +280 -0
  54. lionagi-0.15.13/docs/quickstart/claude-code-integration.md +153 -0
  55. lionagi-0.15.13/docs/quickstart/index.md +53 -0
  56. lionagi-0.15.13/docs/quickstart/installation.md +61 -0
  57. lionagi-0.15.13/docs/quickstart/orchestration-first.md +229 -0
  58. lionagi-0.15.13/docs/quickstart/your-first-flow.md +253 -0
  59. lionagi-0.15.13/docs/reference/api/index.md +246 -0
  60. lionagi-0.15.13/docs/reference/changelog.md +222 -0
  61. lionagi-0.15.13/docs/reference/troubleshooting.md +283 -0
  62. lionagi-0.15.13/docs/stylesheets/extra.css +136 -0
  63. lionagi-0.15.13/docs/thinking-in-lionagi/branches-as-agents.md +202 -0
  64. lionagi-0.15.13/docs/thinking-in-lionagi/builder-pattern.md +276 -0
  65. lionagi-0.15.13/docs/thinking-in-lionagi/graphs-over-chains.md +306 -0
  66. lionagi-0.15.13/docs/thinking-in-lionagi/index.md +86 -0
  67. lionagi-0.15.13/docs/thinking-in-lionagi/why-lionagi.md +169 -0
  68. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/__init__.py +4 -6
  69. lionagi-0.15.13/lionagi/adapters/async_postgres_adapter.py +98 -0
  70. lionagi-0.15.13/lionagi/libs/file/_utils.py +10 -0
  71. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/process.py +16 -13
  72. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/pdf_to_image.py +2 -2
  73. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/__init__.py +28 -0
  74. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_async_call.py +1 -0
  75. lionagi-0.15.13/lionagi/ln/_extract_json.py +60 -0
  76. lionagi-0.15.13/lionagi/ln/_fuzzy_json.py +116 -0
  77. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/field_model.py +8 -6
  78. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/__init__.py +3 -0
  79. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/builder.py +10 -0
  80. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/element.py +120 -17
  81. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/pile.py +56 -1
  82. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/progression.py +11 -11
  83. lionagi-0.15.13/lionagi/protocols/graph/_utils.py +22 -0
  84. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/graph.py +17 -21
  85. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/node.py +23 -3
  86. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/manager.py +41 -45
  87. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/operatives/step.py +2 -19
  88. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/types.py +1 -2
  89. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/file/reader.py +5 -6
  90. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/utils.py +8 -385
  91. lionagi-0.15.13/lionagi/version.py +1 -0
  92. lionagi-0.15.13/mkdocs.yml +309 -0
  93. {lionagi-0.15.9 → lionagi-0.15.13}/pyproject.toml +10 -3
  94. {lionagi-0.15.9 → lionagi-0.15.13}/uv.lock +487 -104
  95. lionagi-0.15.9/docs/Makefile +0 -23
  96. lionagi-0.15.9/docs/_static/custom.css +0 -89
  97. lionagi-0.15.9/docs/_templates/layout.html +0 -47
  98. lionagi-0.15.9/docs/conf.py +0 -52
  99. lionagi-0.15.9/docs/discussions/anyio-migration.md +0 -178
  100. lionagi-0.15.9/docs/index.rst +0 -37
  101. lionagi-0.15.9/docs/modules/action.rst +0 -585
  102. lionagi-0.15.9/docs/modules/adapter.rst +0 -641
  103. lionagi-0.15.9/docs/modules/branch.rst +0 -144
  104. lionagi-0.15.9/docs/modules/branch_operations.rst +0 -743
  105. lionagi-0.15.9/docs/modules/concepts.rst +0 -219
  106. lionagi-0.15.9/docs/modules/element_id.rst +0 -229
  107. lionagi-0.15.9/docs/modules/event.rst +0 -173
  108. lionagi-0.15.9/docs/modules/form.rst +0 -329
  109. lionagi-0.15.9/docs/modules/graph.rst +0 -269
  110. lionagi-0.15.9/docs/modules/index.rst +0 -38
  111. lionagi-0.15.9/docs/modules/instruct.rst +0 -222
  112. lionagi-0.15.9/docs/modules/lib_file.rst +0 -246
  113. lionagi-0.15.9/docs/modules/lib_nested.rst +0 -297
  114. lionagi-0.15.9/docs/modules/lib_package.rst +0 -153
  115. lionagi-0.15.9/docs/modules/lib_schema.rst +0 -232
  116. lionagi-0.15.9/docs/modules/lib_validate.rst +0 -239
  117. lionagi-0.15.9/docs/modules/log.rst +0 -235
  118. lionagi-0.15.9/docs/modules/mail.rst +0 -343
  119. lionagi-0.15.9/docs/modules/message.rst +0 -668
  120. lionagi-0.15.9/docs/modules/models.rst +0 -221
  121. lionagi-0.15.9/docs/modules/operative_step.rst +0 -171
  122. lionagi-0.15.9/docs/modules/pile.rst +0 -338
  123. lionagi-0.15.9/docs/modules/processor.rst +0 -234
  124. lionagi-0.15.9/docs/modules/progression.rst +0 -259
  125. lionagi-0.15.9/docs/modules/service.rst +0 -245
  126. lionagi-0.15.9/docs/modules/session.rst +0 -193
  127. lionagi-0.15.9/docs/modules/utils.rst +0 -351
  128. lionagi-0.15.9/docs/tutorials/get_started.rst +0 -231
  129. lionagi-0.15.9/docs/tutorials/get_started_pt2.rst +0 -294
  130. lionagi-0.15.9/docs/tutorials/get_started_pt3.rst +0 -190
  131. lionagi-0.15.9/docs/tutorials/index.rst +0 -14
  132. lionagi-0.15.9/lionagi/adapters/async_postgres_adapter.py +0 -362
  133. lionagi-0.15.9/lionagi/libs/package/imports.py +0 -21
  134. lionagi-0.15.9/lionagi/libs/package/management.py +0 -62
  135. lionagi-0.15.9/lionagi/libs/package/params.py +0 -30
  136. lionagi-0.15.9/lionagi/libs/package/system.py +0 -22
  137. lionagi-0.15.9/lionagi/tools/file/__init__.py +0 -3
  138. lionagi-0.15.9/lionagi/version.py +0 -1
  139. {lionagi-0.15.9 → lionagi-0.15.13}/.coveragerc +0 -0
  140. {lionagi-0.15.9 → lionagi-0.15.13}/.env.example +0 -0
  141. {lionagi-0.15.9 → lionagi-0.15.13}/.github/FUNDING.yml +0 -0
  142. {lionagi-0.15.9 → lionagi-0.15.13}/.github/dependabot.yml +0 -0
  143. {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/ci.yml +0 -0
  144. {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/codeql.yml +0 -0
  145. {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/release.yml +0 -0
  146. {lionagi-0.15.9 → lionagi-0.15.13}/.gitignore +0 -0
  147. {lionagi-0.15.9 → lionagi-0.15.13}/.pre-commit-config.yaml +0 -0
  148. {lionagi-0.15.9 → lionagi-0.15.13}/.python-version +0 -0
  149. {lionagi-0.15.9 → lionagi-0.15.13}/CODE_OF_CONDUCT.md +0 -0
  150. {lionagi-0.15.9 → lionagi-0.15.13}/CONTRIBUTING.md +0 -0
  151. {lionagi-0.15.9 → lionagi-0.15.13}/LICENSE +0 -0
  152. {lionagi-0.15.9 → lionagi-0.15.13}/assets/operation_builder.gif +0 -0
  153. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/001_branch_converse.ipynb +0 -0
  154. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/002_branch_interact.ipynb +0 -0
  155. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/003_branch_info.ipynb +0 -0
  156. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/004_conversation_patterns.ipynb +0 -0
  157. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/005_react_basics.ipynb +0 -0
  158. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
  159. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/007_fan_out_in.py +0 -0
  160. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/README.md +0 -0
  161. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
  162. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
  163. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/002_comedian.json +0 -0
  164. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/002_critic.json +0 -0
  165. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/006_lion_proof_ch2.md +0 -0
  166. {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/using_claude_code.py +0 -0
  167. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_class_registry.py +0 -0
  168. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_errors.py +0 -0
  169. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_types.py +0 -0
  170. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/__init__.py +0 -0
  171. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/_utils.py +0 -0
  172. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/postgres_model_adapter.py +0 -0
  173. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/config.py +0 -0
  174. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/__init__.py +0 -0
  175. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/action.py +0 -0
  176. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/base.py +0 -0
  177. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/code.py +0 -0
  178. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/file.py +0 -0
  179. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/instruct.py +0 -0
  180. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/reason.py +0 -0
  181. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/research.py +0 -0
  182. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/__init__.py +0 -0
  183. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/concurrency.py +0 -0
  184. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/__init__.py +0 -0
  185. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/chunk.py +0 -0
  186. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/concat.py +0 -0
  187. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/concat_files.py +0 -0
  188. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/file_ops.py +0 -0
  189. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/params.py +0 -0
  190. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/save.py +0 -0
  191. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/__init__.py +0 -0
  192. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/flatten.py +0 -0
  193. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nfilter.py +0 -0
  194. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nget.py +0 -0
  195. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/ninsert.py +0 -0
  196. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nmerge.py +0 -0
  197. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/npop.py +0 -0
  198. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nset.py +0 -0
  199. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/unflatten.py +0 -0
  200. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/utils.py +0 -0
  201. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/parse.py +0 -0
  202. {lionagi-0.15.9/lionagi/libs/package → lionagi-0.15.13/lionagi/libs/schema}/__init__.py +0 -0
  203. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/as_readable.py +0 -0
  204. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/extract_code_block.py +0 -0
  205. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/extract_docstring.py +0 -0
  206. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/function_to_schema.py +0 -0
  207. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/json_schema.py +0 -0
  208. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
  209. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/__init__.py +0 -0
  210. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/base.py +0 -0
  211. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/llmlingua.py +0 -0
  212. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/perplexity.py +0 -0
  213. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
  214. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang.py +0 -0
  215. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
  216. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
  217. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
  218. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
  219. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
  220. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
  221. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
  222. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
  223. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
  224. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
  225. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
  226. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
  227. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
  228. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
  229. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
  230. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/types.py +0 -0
  231. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/__init__.py +0 -0
  232. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
  233. {lionagi-0.15.9/lionagi/libs/schema → lionagi-0.15.13/lionagi/libs/validate}/__init__.py +0 -0
  234. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/common_field_validators.py +0 -0
  235. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
  236. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  237. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/string_similarity.py +4 -4
  238. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/to_num.py +0 -0
  239. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/validate_boolean.py +0 -0
  240. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/xml_parser.py +0 -0
  241. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_hash.py +0 -0
  242. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_json_dump.py +0 -0
  243. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_list_call.py +0 -0
  244. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_models.py +0 -0
  245. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_to_list.py +0 -0
  246. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_types.py +0 -0
  247. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/__init__.py +0 -0
  248. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/cancel.py +0 -0
  249. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/errors.py +0 -0
  250. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/patterns.py +0 -0
  251. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/primitives.py +0 -0
  252. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/resource_tracker.py +0 -0
  253. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/task.py +0 -0
  254. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/throttle.py +0 -0
  255. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/utils.py +0 -0
  256. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/__init__.py +0 -0
  257. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/hashable_model.py +0 -0
  258. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/model_params.py +0 -0
  259. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/note.py +0 -0
  260. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/operable_model.py +0 -0
  261. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/schema_model.py +0 -0
  262. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/ReAct/ReAct.py +0 -0
  263. {lionagi-0.15.9/lionagi/libs/validate → lionagi-0.15.13/lionagi/operations/ReAct}/__init__.py +0 -0
  264. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/ReAct/utils.py +0 -0
  265. {lionagi-0.15.9/lionagi/operations/ReAct → lionagi-0.15.13/lionagi/operations/_act}/__init__.py +0 -0
  266. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/_act/act.py +0 -0
  267. {lionagi-0.15.9/lionagi/operations/_act → lionagi-0.15.13/lionagi/operations/brainstorm}/__init__.py +0 -0
  268. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  269. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/brainstorm/prompt.py +0 -0
  270. {lionagi-0.15.9/lionagi/operations/brainstorm → lionagi-0.15.13/lionagi/operations/chat}/__init__.py +0 -0
  271. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/chat/chat.py +0 -0
  272. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/communicate/__init__.py +0 -0
  273. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/communicate/communicate.py +0 -0
  274. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/flow.py +0 -0
  275. {lionagi-0.15.9/lionagi/operations/chat → lionagi-0.15.13/lionagi/operations/instruct}/__init__.py +0 -0
  276. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/instruct/instruct.py +0 -0
  277. {lionagi-0.15.9/lionagi/operations/instruct → lionagi-0.15.13/lionagi/operations/interpret}/__init__.py +0 -0
  278. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/interpret/interpret.py +0 -0
  279. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/manager.py +0 -0
  280. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/node.py +0 -0
  281. {lionagi-0.15.9/lionagi/operations/interpret → lionagi-0.15.13/lionagi/operations/operate}/__init__.py +0 -0
  282. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/operate/operate.py +0 -0
  283. {lionagi-0.15.9/lionagi/operations/operate → lionagi-0.15.13/lionagi/operations/parse}/__init__.py +0 -0
  284. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/parse/parse.py +0 -0
  285. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/__init__.py +0 -0
  286. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/plan.py +0 -0
  287. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/prompt.py +0 -0
  288. {lionagi-0.15.9/lionagi/operations/parse → lionagi-0.15.13/lionagi/operations/select}/__init__.py +0 -0
  289. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/select/select.py +0 -0
  290. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/select/utils.py +0 -0
  291. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/translate/__init__.py +0 -0
  292. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/translate/translate.py +0 -0
  293. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/types.py +0 -0
  294. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/utils.py +0 -0
  295. {lionagi-0.15.9/lionagi/operations/select → lionagi-0.15.13/lionagi/protocols}/__init__.py +0 -0
  296. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/_concepts.py +0 -0
  297. {lionagi-0.15.9/lionagi/protocols → lionagi-0.15.13/lionagi/protocols/action}/__init__.py +0 -0
  298. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/function_calling.py +0 -0
  299. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/manager.py +0 -0
  300. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/tool.py +0 -0
  301. {lionagi-0.15.9/lionagi/protocols/action → lionagi-0.15.13/lionagi/protocols/forms}/__init__.py +0 -0
  302. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/base.py +0 -0
  303. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/flow.py +0 -0
  304. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/form.py +0 -0
  305. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/report.py +0 -0
  306. {lionagi-0.15.9/lionagi/protocols/forms → lionagi-0.15.13/lionagi/protocols/generic}/__init__.py +0 -0
  307. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/event.py +0 -0
  308. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/log.py +0 -0
  309. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/processor.py +0 -0
  310. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/__init__.py +0 -0
  311. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/edge.py +0 -0
  312. {lionagi-0.15.9/lionagi/protocols/generic → lionagi-0.15.13/lionagi/protocols/mail}/__init__.py +0 -0
  313. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/exchange.py +0 -0
  314. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/mail.py +0 -0
  315. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/mailbox.py +0 -0
  316. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/manager.py +0 -0
  317. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/package.py +0 -0
  318. {lionagi-0.15.9/lionagi/protocols/mail → lionagi-0.15.13/lionagi/protocols/messages}/__init__.py +0 -0
  319. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/action_request.py +0 -0
  320. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/action_response.py +0 -0
  321. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/assistant_response.py +0 -0
  322. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/base.py +0 -0
  323. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/instruction.py +0 -0
  324. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/message.py +0 -0
  325. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/system.py +0 -0
  326. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/README.md +0 -0
  327. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  328. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  329. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  330. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  331. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  332. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  333. {lionagi-0.15.9/lionagi/protocols/messages → lionagi-0.15.13/lionagi/protocols/operatives}/__init__.py +0 -0
  334. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/operatives/operative.py +0 -0
  335. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/py.typed +0 -0
  336. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/__init__.py +0 -0
  337. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/__init__.py +0 -0
  338. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/api_calling.py +0 -0
  339. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/endpoint.py +0 -0
  340. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/endpoint_config.py +0 -0
  341. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/header_factory.py +0 -0
  342. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/match_endpoint.py +0 -0
  343. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/__init__.py +0 -0
  344. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/anthropic_.py +0 -0
  345. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/claude_code_.py +0 -0
  346. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
  347. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/exa_.py +0 -0
  348. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/oai_.py +0 -0
  349. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/ollama_.py +0 -0
  350. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/perplexity_.py +0 -0
  351. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/types.py +0 -0
  352. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/__init__.py +0 -0
  353. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/_types.py +0 -0
  354. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/_utils.py +0 -0
  355. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/hook_event.py +0 -0
  356. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/hook_registry.py +0 -0
  357. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/imodel.py +0 -0
  358. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/manager.py +0 -0
  359. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/rate_limited_processor.py +0 -0
  360. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/resilience.py +0 -0
  361. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/README.md +0 -0
  362. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/__init__.py +0 -0
  363. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/anthropic_models.py +0 -0
  364. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/claude_code.py +0 -0
  365. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/exa_models.py +0 -0
  366. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/openai_model_names.py +0 -0
  367. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/pplx_models.py +0 -0
  368. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/token_calculator.py +0 -0
  369. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/types.py +0 -0
  370. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/__init__.py +0 -0
  371. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/branch.py +0 -0
  372. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/prompts.py +0 -0
  373. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/session.py +0 -0
  374. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/settings.py +0 -0
  375. {lionagi-0.15.9/lionagi/protocols/operatives → lionagi-0.15.13/lionagi/tools}/__init__.py +0 -0
  376. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/base.py +0 -0
  377. {lionagi-0.15.9/lionagi/tools → lionagi-0.15.13/lionagi/tools/file}/__init__.py +0 -0
  378. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/memory/tools.py +0 -0
  379. {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/types.py +0 -0
  380. {lionagi-0.15.9 → lionagi-0.15.13}/main.py +0 -0
  381. {lionagi-0.15.9 → lionagi-0.15.13}/scripts/README.md +0 -0
  382. {lionagi-0.15.9 → lionagi-0.15.13}/scripts/concat.py +0 -0
  383. {lionagi-0.15.9 → lionagi-0.15.13}/scripts/config.py +0 -0
  384. {lionagi-0.15.9 → lionagi-0.15.13}/scripts/update_openai_models.py +0 -0
@@ -0,0 +1,36 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.10"
24
+ cache: "pip"
25
+
26
+ - name: Install dependencies
27
+ run: |
28
+ pip install uv
29
+ uv venv
30
+ source .venv/bin/activate
31
+ echo "VIRTUAL_ENV=$GITHUB_WORKSPACE/.venv" >> $GITHUB_ENV
32
+ echo "$GITHUB_WORKSPACE/.venv/bin" >> $GITHUB_PATH
33
+ uv sync
34
+
35
+ - name: Deploy documentation
36
+ run: uv run mkdocs gh-deploy --force
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.15.9
3
+ Version: 0.15.13
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -225,10 +225,10 @@ Requires-Dist: anyio>=4.7.0
225
225
  Requires-Dist: backoff>=2.0.0
226
226
  Requires-Dist: jinja2>=3.0.0
227
227
  Requires-Dist: json-repair>=0.40.0
228
- Requires-Dist: pillow>=11.0.0
228
+ Requires-Dist: pillow>=10.0.0
229
229
  Requires-Dist: psutil>=6.0.0
230
230
  Requires-Dist: pydantic-settings>=2.8.0
231
- Requires-Dist: pydapter[pandas]>=1.0.0
231
+ Requires-Dist: pydapter[pandas]>=1.0.4
232
232
  Requires-Dist: python-dotenv>=1.1.0
233
233
  Requires-Dist: tiktoken>=0.9.0
234
234
  Requires-Dist: toml>=0.8.0
@@ -274,13 +274,13 @@ Description-Content-Type: text/markdown
274
274
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?color=blue)
275
275
  ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)
276
276
 
277
- [Documentation](https://lion-agi.github.io/lionagi/) |
277
+ [Documentation](https://khive-ai.github.io/lionagi/) |
278
278
  [Discord](https://discord.gg/JDj9ENhUE8) |
279
279
  [PyPI](https://pypi.org/project/lionagi/)
280
280
 
281
281
  # LION - Language InterOperable Network
282
282
 
283
- ## An Agentic Intelligence SDK
283
+ ## An AGentic Intelligence SDK
284
284
 
285
285
  LionAGI is a robust framework for orchestrating multi-step AI operations with
286
286
  precise control. Bring together multiple models, advanced ReAct reasoning, tool
@@ -288,13 +288,13 @@ integrations, and custom validations in a single coherent pipeline.
288
288
 
289
289
  ## Why LionAGI?
290
290
 
291
- - **Structured**: LLM interactions are validated and typed (via Pydantic).
291
+ - **Structured**: Validate and type all LLM interactions with Pydantic.
292
292
  - **Expandable**: Integrate multiple providers (OpenAI, Anthropic, Perplexity,
293
293
  custom) with minimal friction.
294
- - **Controlled**: Built-in safety checks, concurrency strategies, and advanced
295
- multi-step flowslike ReAct with verbose outputs.
296
- - **Transparent**: Real-time logging, message introspection, and easy debugging
297
- of tool usage.
294
+ - **Controlled**: Use built-in safety checks, concurrency strategies, and advanced
295
+ multi-step flows like ReAct.
296
+ - **Transparent**: Debug easily with real-time logging, message introspection, and
297
+ tool usage tracking.
298
298
 
299
299
  ## Installation
300
300
 
@@ -310,12 +310,12 @@ pip install lionagi # or install directly
310
310
  from lionagi import Branch, iModel
311
311
 
312
312
  # Pick a model
313
- gpt41 = iModel(provider="openai", model="gpt-4.1-mini")
313
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
314
314
 
315
315
  # Create a Branch (conversation context)
316
316
  hunter = Branch(
317
317
  system="you are a hilarious dragon hunter who responds in 10 words rhymes.",
318
- chat_model=gpt41,
318
+ chat_model=gpt4o,
319
319
  )
320
320
 
321
321
  # Communicate asynchronously
@@ -341,8 +341,8 @@ res = await hunter.communicate(
341
341
  "Tell me a short dragon joke",
342
342
  response_format=Joke
343
343
  )
344
- print(type(response))
345
- print(response.joke)
344
+ print(type(res))
345
+ print(res.joke)
346
346
  ```
347
347
 
348
348
  ```
@@ -362,7 +362,10 @@ pip install "lionagi[reader]"
362
362
  ```python
363
363
  from lionagi.tools.types import ReaderTool
364
364
 
365
- branch = Branch(chat_model=gpt4o, tools=ReaderTool)
365
+ # Define model first
366
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
367
+
368
+ branch = Branch(chat_model=gpt4o, tools=[ReaderTool])
366
369
  result = await branch.ReAct(
367
370
  instruct={
368
371
  "instruction": "Summarize my PDF and compare with relevant papers.",
@@ -396,13 +399,15 @@ print(df.tail())
396
399
  ```python
397
400
  from lionagi import Branch, iModel
398
401
 
402
+ # Define models for multi-model orchestration
403
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
399
404
  sonnet = iModel(
400
405
  provider="anthropic",
401
406
  model="claude-3-5-sonnet-20241022",
402
407
  max_tokens=1000, # max_tokens is required for anthropic models
403
408
  )
404
409
 
405
- branch = Branch(chat_model=gpt41)
410
+ branch = Branch(chat_model=gpt4o)
406
411
  analysis = await branch.communicate("Analyze these stats", chat_model=sonnet) # Switch mid-flow
407
412
  ```
408
413
 
@@ -2,13 +2,13 @@
2
2
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?color=blue)
3
3
  ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)
4
4
 
5
- [Documentation](https://lion-agi.github.io/lionagi/) |
5
+ [Documentation](https://khive-ai.github.io/lionagi/) |
6
6
  [Discord](https://discord.gg/JDj9ENhUE8) |
7
7
  [PyPI](https://pypi.org/project/lionagi/)
8
8
 
9
9
  # LION - Language InterOperable Network
10
10
 
11
- ## An Agentic Intelligence SDK
11
+ ## An AGentic Intelligence SDK
12
12
 
13
13
  LionAGI is a robust framework for orchestrating multi-step AI operations with
14
14
  precise control. Bring together multiple models, advanced ReAct reasoning, tool
@@ -16,13 +16,13 @@ integrations, and custom validations in a single coherent pipeline.
16
16
 
17
17
  ## Why LionAGI?
18
18
 
19
- - **Structured**: LLM interactions are validated and typed (via Pydantic).
19
+ - **Structured**: Validate and type all LLM interactions with Pydantic.
20
20
  - **Expandable**: Integrate multiple providers (OpenAI, Anthropic, Perplexity,
21
21
  custom) with minimal friction.
22
- - **Controlled**: Built-in safety checks, concurrency strategies, and advanced
23
- multi-step flowslike ReAct with verbose outputs.
24
- - **Transparent**: Real-time logging, message introspection, and easy debugging
25
- of tool usage.
22
+ - **Controlled**: Use built-in safety checks, concurrency strategies, and advanced
23
+ multi-step flows like ReAct.
24
+ - **Transparent**: Debug easily with real-time logging, message introspection, and
25
+ tool usage tracking.
26
26
 
27
27
  ## Installation
28
28
 
@@ -38,12 +38,12 @@ pip install lionagi # or install directly
38
38
  from lionagi import Branch, iModel
39
39
 
40
40
  # Pick a model
41
- gpt41 = iModel(provider="openai", model="gpt-4.1-mini")
41
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
42
42
 
43
43
  # Create a Branch (conversation context)
44
44
  hunter = Branch(
45
45
  system="you are a hilarious dragon hunter who responds in 10 words rhymes.",
46
- chat_model=gpt41,
46
+ chat_model=gpt4o,
47
47
  )
48
48
 
49
49
  # Communicate asynchronously
@@ -69,8 +69,8 @@ res = await hunter.communicate(
69
69
  "Tell me a short dragon joke",
70
70
  response_format=Joke
71
71
  )
72
- print(type(response))
73
- print(response.joke)
72
+ print(type(res))
73
+ print(res.joke)
74
74
  ```
75
75
 
76
76
  ```
@@ -90,7 +90,10 @@ pip install "lionagi[reader]"
90
90
  ```python
91
91
  from lionagi.tools.types import ReaderTool
92
92
 
93
- branch = Branch(chat_model=gpt4o, tools=ReaderTool)
93
+ # Define model first
94
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
95
+
96
+ branch = Branch(chat_model=gpt4o, tools=[ReaderTool])
94
97
  result = await branch.ReAct(
95
98
  instruct={
96
99
  "instruction": "Summarize my PDF and compare with relevant papers.",
@@ -124,13 +127,15 @@ print(df.tail())
124
127
  ```python
125
128
  from lionagi import Branch, iModel
126
129
 
130
+ # Define models for multi-model orchestration
131
+ gpt4o = iModel(provider="openai", model="gpt-4o-mini")
127
132
  sonnet = iModel(
128
133
  provider="anthropic",
129
134
  model="claude-3-5-sonnet-20241022",
130
135
  max_tokens=1000, # max_tokens is required for anthropic models
131
136
  )
132
137
 
133
- branch = Branch(chat_model=gpt41)
138
+ branch = Branch(chat_model=gpt4o)
134
139
  analysis = await branch.communicate("Analyze these stats", chat_model=sonnet) # Switch mid-flow
135
140
  ```
136
141
 
@@ -0,0 +1,273 @@
1
+ # LionAGI Documentation Standards
2
+
3
+ _Practical guidelines for writing docs that actually help._
4
+
5
+ ## Core Principle
6
+
7
+ **Show, don't tell.** Every page should have working code that solves a real
8
+ problem.
9
+
10
+ ## Page Types & Templates
11
+
12
+ ### 1. Pattern Pages (`/patterns/`)
13
+
14
+ ````markdown
15
+ # [Pattern Name]
16
+
17
+ When you need to [problem this solves].
18
+
19
+ ## The Pattern
20
+
21
+ ```python
22
+ # Complete working example
23
+ from lionagi import Session, Branch, Builder
24
+
25
+ async def pattern_name():
26
+ # Implementation
27
+ pass
28
+
29
+ # Usage
30
+ result = await pattern_name()
31
+ ```
32
+ ````
33
+
34
+ ## When It Works
35
+
36
+ - Scenario 1: [specific use case]
37
+ - Scenario 2: [another use case]
38
+
39
+ ## Success Rate
40
+
41
+ ~95% based on [context]
42
+
43
+ ````
44
+ ### 2. Cookbook Pages (`/cookbook/`)
45
+
46
+ ```markdown
47
+ # [Solution Name]
48
+
49
+ [One sentence: what this builds]
50
+
51
+ ## Problem
52
+
53
+ [2-3 sentences on the specific challenge]
54
+
55
+ ## Solution
56
+
57
+ ```python
58
+ # Full implementation
59
+ # Can be 50-200 lines
60
+ # Must be copy-paste ready
61
+ ````
62
+
63
+ ## Results
64
+
65
+ ```
66
+ [Actual output from running the code]
67
+ ```
68
+
69
+ ## Customization
70
+
71
+ - To adapt for X: [change this]
72
+ - To scale up: [modify that]
73
+
74
+ ````
75
+ ### 3. Concept Pages (`/core-concepts/`)
76
+
77
+ ```markdown
78
+ # [Concept Name]
79
+
80
+ [One sentence definition]
81
+
82
+ ## Quick Example
83
+
84
+ ```python
85
+ # Minimal example showing the concept
86
+ ````
87
+
88
+ ## Key Points
89
+
90
+ - Point 1: [essential info]
91
+ - Point 2: [essential info]
92
+ - Point 3: [essential info]
93
+
94
+ ## Common Usage
95
+
96
+ ```python
97
+ # Realistic example
98
+ ```
99
+
100
+ ````
101
+ ### 4. Quickstart Pages
102
+
103
+ ```markdown
104
+ # [Getting Started with X]
105
+
106
+ ## Install
107
+
108
+ ```bash
109
+ uv add lionagi
110
+ ````
111
+
112
+ ## First Example
113
+
114
+ ```python
115
+ # Simplest possible working example
116
+ ```
117
+
118
+ ## Next Steps
119
+
120
+ - Try [pattern]
121
+ - Read about [concept]
122
+ - See [cookbook example]
123
+
124
+ ````
125
+ ## Code Standards
126
+
127
+ ### Every Code Block Must:
128
+
129
+ 1. **Run without modification** - Include all imports
130
+ 2. **Show realistic usage** - Not just toy examples
131
+ 3. **Handle errors gracefully** - At least try/except where it matters
132
+
133
+ ```python
134
+ # GOOD: Complete and runnable
135
+ from lionagi import Branch, iModel
136
+ import asyncio
137
+
138
+ async def example():
139
+ branch = Branch(chat_model=iModel(provider="openai", model="gpt-4"))
140
+ try:
141
+ result = await branch.chat("Analyze this")
142
+ return result
143
+ except Exception as e:
144
+ print(f"Error: {e}")
145
+ return None
146
+
147
+ # Run it
148
+ # result = asyncio.run(example())
149
+ ````
150
+
151
+ ```python
152
+ # BAD: Fragment without context
153
+ branch.chat("Analyze this") # What's branch? How to run?
154
+ ```
155
+
156
+ ## Writing Style
157
+
158
+ ### Keep It Simple
159
+
160
+ - **Short sentences** (max 20 words)
161
+ - **Active voice** ("Use X to..." not "X can be used to...")
162
+ - **Direct instructions** ("Do this" not "You might want to consider")
163
+ - **Skip the fluff** (No "In this section we will explore...")
164
+
165
+ ### Show Success Metrics
166
+
167
+ When claiming something works, show evidence:
168
+
169
+ - "95% success rate" not "usually works"
170
+ - "2.3 second average" not "fast"
171
+ - "Handles 1000 req/sec" not "scalable"
172
+
173
+ ## For AI Agents
174
+
175
+ ### Pattern Recognition Format
176
+
177
+ Help AI agents understand when to use patterns:
178
+
179
+ ```markdown
180
+ ## When to Use
181
+
182
+ IF task requires parallel analysis: USE fan-out-in pattern ELIF task needs
183
+ step-by-step building: USE sequential-analysis pattern ELSE: USE single-branch
184
+ ReAct
185
+ ```
186
+
187
+ ### Executable Templates
188
+
189
+ Provide parameterized code AI can modify:
190
+
191
+ ```python
192
+ async def orchestrate(roles: list[str], task: str):
193
+ """Template AI agents can adapt."""
194
+ branches = [Branch(system=f"You are a {role}") for role in roles]
195
+ results = await asyncio.gather(*[b.chat(task) for b in branches])
196
+ return synthesize(results)
197
+ ```
198
+
199
+ ## Documentation Workflow
200
+
201
+ ### Adding New Docs
202
+
203
+ 1. **Check if needed** - Does this solve a new problem?
204
+ 2. **Pick the right type** - Pattern, cookbook, concept, or quickstart?
205
+ 3. **Use the template** - Don't reinvent the structure
206
+ 4. **Test the code** - Every example must run
207
+ 5. **Get it merged** - Perfect is the enemy of done
208
+
209
+ ### Updating Docs
210
+
211
+ - **Fix errors immediately** - Don't wait
212
+ - **Update metrics quarterly** - Keep data fresh
213
+ - **Add examples from issues** - Real problems, real solutions
214
+
215
+ ## Quality Checklist
216
+
217
+ Before merging any doc:
218
+
219
+ - [ ] Code runs without errors
220
+ - [ ] Solves a real problem
221
+ - [ ] Uses appropriate template
222
+ - [ ] Includes actual output/metrics
223
+ - [ ] Links to related content
224
+
225
+ ## What NOT to Document
226
+
227
+ - **Obvious things** - We have good docstrings
228
+ - **Every parameter** - API reference handles that
229
+ - **Theory without practice** - This isn't an academic paper
230
+ - **Features not in main** - Document what's shipped
231
+
232
+ ## Examples of Good Docs
233
+
234
+ ### Good Pattern Doc
235
+
236
+ - Clear problem statement
237
+ - Complete working code
238
+ - Success metrics
239
+ - When to use/not use
240
+
241
+ ### Good Cookbook Entry
242
+
243
+ - Specific real-world scenario
244
+ - Full implementation
245
+ - Actual results
246
+ - How to customize
247
+
248
+ ### Good Concept Page
249
+
250
+ - Simple definition
251
+ - Minimal example
252
+ - Key points only
253
+ - Practical usage
254
+
255
+ ## Maintenance
256
+
257
+ ### Quarterly Review
258
+
259
+ - Update success metrics
260
+ - Fix broken examples
261
+ - Remove outdated patterns
262
+ - Add new proven patterns
263
+
264
+ ### Continuous
265
+
266
+ - Fix errors when found
267
+ - Add clarifications from support questions
268
+ - Update for API changes
269
+
270
+ ---
271
+
272
+ **Remember**: If you wouldn't copy-paste it into your own project, don't put it
273
+ in the docs.
@@ -0,0 +1,120 @@
1
+ # Custom Operations
2
+
3
+ Creating specialized operations for LionAGI workflows.
4
+
5
+ ## Core Concept
6
+
7
+ Operations are building blocks that branches execute. LionAGI provides built-in
8
+ operations like `chat`, `communicate`, `operate`, and `ReAct`, but you can
9
+ create custom ones for specialized tasks.
10
+
11
+ ## Built-in Operations
12
+
13
+ - **chat**: Basic conversation
14
+ - **communicate**: Stateful conversation
15
+ - **operate**: Structured output with Pydantic
16
+ - **ReAct**: Reasoning with tools
17
+
18
+ ## Creating Custom Operations
19
+
20
+ ### Function-Based Operations
21
+
22
+ Define async functions for custom behavior:
23
+
24
+ ```python
25
+ from lionagi import Branch, Builder, Session
26
+
27
+ async def summarize_with_keywords(branch: Branch, instruction: str, keywords: list = None, **kwargs):
28
+ """Custom operation that emphasizes specific keywords."""
29
+ keyword_text = f"Focus on: {', '.join(keywords or [])}"
30
+ enhanced_instruction = f"{instruction}\n\n{keyword_text}"
31
+
32
+ return await branch.chat(enhanced_instruction, **kwargs)
33
+
34
+ # Usage in workflow
35
+ session = Session()
36
+ builder = Builder("custom_workflow")
37
+
38
+ node = builder.add_operation(
39
+ operation=summarize_with_keywords,
40
+ instruction="Summarize this research paper",
41
+ keywords=["machine learning", "performance"]
42
+ )
43
+
44
+ result = await session.flow(builder.get_graph())
45
+ ```
46
+
47
+ ### Class-Based Operations
48
+
49
+ For stateful operations, use classes:
50
+
51
+ ```python
52
+ class DataAnalysisOperation:
53
+ def __init__(self, analysis_type: str = "descriptive"):
54
+ self.analysis_type = analysis_type
55
+
56
+ async def __call__(self, branch: Branch, data_context: str, **kwargs):
57
+ instruction = f"""
58
+ Perform {self.analysis_type} analysis on: {data_context}
59
+
60
+ Provide:
61
+ 1. Key findings
62
+ 2. Statistical insights
63
+ 3. Recommendations
64
+ """
65
+
66
+ return await branch.chat(instruction, **kwargs)
67
+
68
+ # Usage
69
+ analyzer = DataAnalysisOperation("predictive")
70
+
71
+ builder.add_operation(
72
+ operation=analyzer,
73
+ data_context="Sales data Q1-Q3 2024"
74
+ )
75
+ ```
76
+
77
+ ## Integration Patterns
78
+
79
+ ### Sequential Dependencies
80
+
81
+ ```python
82
+ # Operations run in order
83
+ data_load = builder.add_operation(
84
+ operation="communicate",
85
+ instruction="Load and validate dataset"
86
+ )
87
+
88
+ analyze = builder.add_operation(
89
+ operation=analyzer,
90
+ depends_on=[data_load],
91
+ data_context="Use loaded data"
92
+ )
93
+ ```
94
+
95
+ ### Parallel with Aggregation
96
+
97
+ ```python
98
+ # Multiple analyses run in parallel
99
+ analysis_nodes = []
100
+ for analysis_type in ["descriptive", "predictive"]:
101
+ node = builder.add_operation(
102
+ operation=DataAnalysisOperation(analysis_type),
103
+ data_context="Sales data"
104
+ )
105
+ analysis_nodes.append(node)
106
+
107
+ # Combine results
108
+ summary = builder.add_aggregation(
109
+ operation="communicate",
110
+ source_node_ids=analysis_nodes,
111
+ instruction="Combine analyses into executive summary"
112
+ )
113
+ ```
114
+
115
+ ## Best Practices
116
+
117
+ - **Keep operations focused** on single responsibilities
118
+ - **Use existing LionAGI operations** (`chat`, `communicate`) when possible
119
+ - **Handle errors gracefully** with try/catch in custom logic
120
+ - **Test operations independently** before integrating into workflows