lionagi 0.17.7__tar.gz → 0.17.9__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 (328) hide show
  1. {lionagi-0.17.7 → lionagi-0.17.9}/PKG-INFO +1 -1
  2. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/README.md +15 -5
  3. lionagi-0.17.9/benchmarks/comparisons/README.md +224 -0
  4. lionagi-0.17.9/benchmarks/comparisons/benchmark_detailed_20250922_182217.csv +901 -0
  5. lionagi-0.17.9/benchmarks/comparisons/benchmark_professional.py +1109 -0
  6. lionagi-0.17.9/benchmarks/comparisons/benchmark_results_20250922_182217.json +18965 -0
  7. lionagi-0.17.9/benchmarks/comparisons/benchmark_summary_20250922_182217.csv +46 -0
  8. lionagi-0.17.9/benchmarks/comparisons/generate_benchmark_report.py +571 -0
  9. lionagi-0.17.9/benchmarks/comparisons/report.md +200 -0
  10. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/_types.py +2 -0
  11. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/action/manager.py +12 -15
  12. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/claude_code_cli.py +1 -1
  13. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/_utils.py +4 -4
  14. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/hook_event.py +17 -4
  15. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/hook_registry.py +34 -15
  16. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/claude_code.py +53 -86
  17. lionagi-0.17.9/lionagi/version.py +1 -0
  18. {lionagi-0.17.7 → lionagi-0.17.9}/pyproject.toml +7 -1
  19. {lionagi-0.17.7 → lionagi-0.17.9}/uv.lock +1 -1
  20. lionagi-0.17.7/benchmarks/comparisons/README.md +0 -167
  21. lionagi-0.17.7/benchmarks/comparisons/benchmark_detailed_20250920_225646.csv +0 -401
  22. lionagi-0.17.7/benchmarks/comparisons/benchmark_professional.py +0 -540
  23. lionagi-0.17.7/benchmarks/comparisons/benchmark_results_20250920_225646.json +0 -5534
  24. lionagi-0.17.7/benchmarks/comparisons/benchmark_summary_20250920_225646.csv +0 -21
  25. lionagi-0.17.7/lionagi/version.py +0 -1
  26. {lionagi-0.17.7 → lionagi-0.17.9}/.coveragerc +0 -0
  27. {lionagi-0.17.7 → lionagi-0.17.9}/.env.example +0 -0
  28. {lionagi-0.17.7 → lionagi-0.17.9}/.github/FUNDING.yml +0 -0
  29. {lionagi-0.17.7 → lionagi-0.17.9}/.github/dependabot.yml +0 -0
  30. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/benchmarks.yml +0 -0
  31. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/ci.yml +0 -0
  32. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/codeql.yml +0 -0
  33. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/docs-deploy.yml +0 -0
  34. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/refresh-bench-baselines.yml +0 -0
  35. {lionagi-0.17.7 → lionagi-0.17.9}/.github/workflows/release.yml +0 -0
  36. {lionagi-0.17.7 → lionagi-0.17.9}/.gitignore +0 -0
  37. {lionagi-0.17.7 → lionagi-0.17.9}/.pre-commit-config.yaml +0 -0
  38. {lionagi-0.17.7 → lionagi-0.17.9}/.python-version +0 -0
  39. {lionagi-0.17.7 → lionagi-0.17.9}/CODE_OF_CONDUCT.md +0 -0
  40. {lionagi-0.17.7 → lionagi-0.17.9}/CONTRIBUTING.md +0 -0
  41. {lionagi-0.17.7 → lionagi-0.17.9}/LICENSE +0 -0
  42. {lionagi-0.17.7 → lionagi-0.17.9}/README.md +0 -0
  43. {lionagi-0.17.7 → lionagi-0.17.9}/assets/operation_builder.gif +0 -0
  44. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/.gitkeep +0 -0
  45. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/concurrency-asyncio.json +0 -0
  46. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/concurrency-trio.json +0 -0
  47. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/fuzzy.json +0 -0
  48. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/ln-asyncio.json +0 -0
  49. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/baselines/ln-trio.json +0 -0
  50. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/ci_compare.py +0 -0
  51. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/concurrency_bench.py +0 -0
  52. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/fuzzy_bench.py +0 -0
  53. {lionagi-0.17.7 → lionagi-0.17.9}/benchmarks/ln_bench.py +0 -0
  54. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/001_branch_converse.ipynb +0 -0
  55. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/002_branch_interact.ipynb +0 -0
  56. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/003_branch_info.ipynb +0 -0
  57. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/004_conversation_patterns.ipynb +0 -0
  58. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/005_react_basics.ipynb +0 -0
  59. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
  60. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/007_fan_out_in.py +0 -0
  61. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/data/002_comedian.json +0 -0
  62. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/data/002_critic.json +0 -0
  63. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/data/006_lion_proof_ch2.md +0 -0
  64. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_claude_code/claude_proxy/README.md +0 -0
  65. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_claude_code/claude_proxy/claude_code_proxy.py +0 -0
  66. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_claude_code/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
  67. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_claude_code/using_claude_code.py +0 -0
  68. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_mcp/.mcp.json +0 -0
  69. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_mcp/README.md +0 -0
  70. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_mcp/react_mcp_with_schema.py +0 -0
  71. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_mcp/search_group.py +0 -0
  72. {lionagi-0.17.7 → lionagi-0.17.9}/cookbooks/using_mcp/search_group_config.json +0 -0
  73. {lionagi-0.17.7 → lionagi-0.17.9}/docs/DOCUMENTATION_STANDARDS.md +0 -0
  74. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/custom-operations.md +0 -0
  75. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/error-handling.md +0 -0
  76. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/flow-composition.md +0 -0
  77. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/index.md +0 -0
  78. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/observability.md +0 -0
  79. {lionagi-0.17.7 → lionagi-0.17.9}/docs/advanced/performance.md +0 -0
  80. {lionagi-0.17.7 → lionagi-0.17.9}/docs/code-of-conduct.md +0 -0
  81. {lionagi-0.17.7 → lionagi-0.17.9}/docs/comparisons/langgraph.md +0 -0
  82. {lionagi-0.17.7 → lionagi-0.17.9}/docs/contributing.md +0 -0
  83. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/brainstorming.md +0 -0
  84. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/claim-extraction.md +0 -0
  85. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/code-review-crew.md +0 -0
  86. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/data-persistence.md +0 -0
  87. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/hr-automation.md +0 -0
  88. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/index.md +0 -0
  89. {lionagi-0.17.7 → lionagi-0.17.9}/docs/cookbook/research-synthesis.md +0 -0
  90. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/index.md +0 -0
  91. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/lionagi-philosophy.md +0 -0
  92. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/messages-and-memory.md +0 -0
  93. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/models-and-providers.md +0 -0
  94. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/operations.md +0 -0
  95. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/sessions-and-branches.md +0 -0
  96. {lionagi-0.17.7 → lionagi-0.17.9}/docs/core-concepts/tools-and-functions.md +0 -0
  97. {lionagi-0.17.7 → lionagi-0.17.9}/docs/for-ai-agents/claude-code-usage.md +0 -0
  98. {lionagi-0.17.7 → lionagi-0.17.9}/docs/for-ai-agents/index.md +0 -0
  99. {lionagi-0.17.7 → lionagi-0.17.9}/docs/for-ai-agents/orchestration-guide.md +0 -0
  100. {lionagi-0.17.7 → lionagi-0.17.9}/docs/for-ai-agents/pattern-selection.md +0 -0
  101. {lionagi-0.17.7 → lionagi-0.17.9}/docs/for-ai-agents/self-improvement.md +0 -0
  102. {lionagi-0.17.7 → lionagi-0.17.9}/docs/includes/abbreviations.md +0 -0
  103. {lionagi-0.17.7 → lionagi-0.17.9}/docs/index.md +0 -0
  104. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/databases.md +0 -0
  105. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/dspy-optimization.md +0 -0
  106. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/index.md +0 -0
  107. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/llamaindex-rag.md +0 -0
  108. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/llm-providers.md +0 -0
  109. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/mcp-servers.md +0 -0
  110. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/tools.md +0 -0
  111. {lionagi-0.17.7 → lionagi-0.17.9}/docs/integrations/vector-stores.md +0 -0
  112. {lionagi-0.17.7 → lionagi-0.17.9}/docs/marketing/language-interoperability-manifesto.md +0 -0
  113. {lionagi-0.17.7 → lionagi-0.17.9}/docs/migration/from-autogen.md +0 -0
  114. {lionagi-0.17.7 → lionagi-0.17.9}/docs/migration/from-crewai.md +0 -0
  115. {lionagi-0.17.7 → lionagi-0.17.9}/docs/migration/from-langchain.md +0 -0
  116. {lionagi-0.17.7 → lionagi-0.17.9}/docs/migration/index.md +0 -0
  117. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/conditional-flows.md +0 -0
  118. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/fan-out-in.md +0 -0
  119. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/index.md +0 -0
  120. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/react-with-rag.md +0 -0
  121. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/sequential-analysis.md +0 -0
  122. {lionagi-0.17.7 → lionagi-0.17.9}/docs/patterns/tournament-validation.md +0 -0
  123. {lionagi-0.17.7 → lionagi-0.17.9}/docs/problem-statement.md +0 -0
  124. {lionagi-0.17.7 → lionagi-0.17.9}/docs/quickstart/claude-code-integration.md +0 -0
  125. {lionagi-0.17.7 → lionagi-0.17.9}/docs/quickstart/index.md +0 -0
  126. {lionagi-0.17.7 → lionagi-0.17.9}/docs/quickstart/installation.md +0 -0
  127. {lionagi-0.17.7 → lionagi-0.17.9}/docs/quickstart/orchestration-first.md +0 -0
  128. {lionagi-0.17.7 → lionagi-0.17.9}/docs/quickstart/your-first-flow.md +0 -0
  129. {lionagi-0.17.7 → lionagi-0.17.9}/docs/reference/api/index.md +0 -0
  130. {lionagi-0.17.7 → lionagi-0.17.9}/docs/reference/changelog.md +0 -0
  131. {lionagi-0.17.7 → lionagi-0.17.9}/docs/reference/troubleshooting.md +0 -0
  132. {lionagi-0.17.7 → lionagi-0.17.9}/docs/stylesheets/extra.css +0 -0
  133. {lionagi-0.17.7 → lionagi-0.17.9}/docs/thinking-in-lionagi/branches-as-agents.md +0 -0
  134. {lionagi-0.17.7 → lionagi-0.17.9}/docs/thinking-in-lionagi/builder-pattern.md +0 -0
  135. {lionagi-0.17.7 → lionagi-0.17.9}/docs/thinking-in-lionagi/graphs-over-chains.md +0 -0
  136. {lionagi-0.17.7 → lionagi-0.17.9}/docs/thinking-in-lionagi/index.md +0 -0
  137. {lionagi-0.17.7 → lionagi-0.17.9}/docs/thinking-in-lionagi/why-lionagi.md +0 -0
  138. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/__init__.py +0 -0
  139. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/_class_registry.py +0 -0
  140. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/_errors.py +0 -0
  141. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/adapters/__init__.py +0 -0
  142. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/adapters/_utils.py +0 -0
  143. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/adapters/async_postgres_adapter.py +0 -0
  144. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/config.py +0 -0
  145. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/__init__.py +0 -0
  146. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/action.py +0 -0
  147. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/base.py +0 -0
  148. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/code.py +0 -0
  149. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/file.py +0 -0
  150. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/instruct.py +0 -0
  151. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/reason.py +0 -0
  152. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/fields/research.py +0 -0
  153. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/__init__.py +0 -0
  154. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/file/__init__.py +0 -0
  155. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/file/chunk.py +0 -0
  156. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/file/process.py +0 -0
  157. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/__init__.py +0 -0
  158. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/as_readable.py +0 -0
  159. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/breakdown_pydantic_annotation.py +0 -0
  160. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/extract_code_block.py +0 -0
  161. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/extract_docstring.py +0 -0
  162. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/function_to_schema.py +0 -0
  163. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
  164. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/validate/__init__.py +0 -0
  165. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/validate/common_field_validators.py +0 -0
  166. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/validate/to_num.py +0 -0
  167. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/libs/validate/validate_boolean.py +0 -0
  168. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/__init__.py +0 -0
  169. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_async_call.py +0 -0
  170. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_hash.py +0 -0
  171. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_json_dump.py +0 -0
  172. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_list_call.py +0 -0
  173. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_to_list.py +0 -0
  174. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/_utils.py +0 -0
  175. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/__init__.py +0 -0
  176. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/_compat.py +0 -0
  177. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/cancel.py +0 -0
  178. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/errors.py +0 -0
  179. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/patterns.py +0 -0
  180. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/primitives.py +0 -0
  181. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/resource_tracker.py +0 -0
  182. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/task.py +0 -0
  183. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/concurrency/utils.py +0 -0
  184. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/__init__.py +0 -0
  185. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_extract_json.py +0 -0
  186. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_fuzzy_json.py +0 -0
  187. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_fuzzy_match.py +0 -0
  188. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_fuzzy_validate.py +0 -0
  189. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_string_similarity.py +0 -0
  190. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/fuzzy/_to_dict.py +0 -0
  191. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/ln/types.py +0 -0
  192. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/__init__.py +0 -0
  193. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/field_model.py +0 -0
  194. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/hashable_model.py +0 -0
  195. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/model_params.py +0 -0
  196. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/operable_model.py +0 -0
  197. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/models/schema_model.py +0 -0
  198. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/ReAct/ReAct.py +0 -0
  199. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/ReAct/__init__.py +0 -0
  200. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/ReAct/utils.py +0 -0
  201. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/__init__.py +0 -0
  202. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/_act/__init__.py +0 -0
  203. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/_act/act.py +0 -0
  204. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/_visualize_graph.py +0 -0
  205. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/brainstorm/__init__.py +0 -0
  206. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  207. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/brainstorm/prompt.py +0 -0
  208. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/builder.py +0 -0
  209. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/chat/__init__.py +0 -0
  210. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/chat/chat.py +0 -0
  211. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/communicate/__init__.py +0 -0
  212. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/communicate/communicate.py +0 -0
  213. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/flow.py +0 -0
  214. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/instruct/__init__.py +0 -0
  215. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/instruct/instruct.py +0 -0
  216. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/interpret/__init__.py +0 -0
  217. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/interpret/interpret.py +0 -0
  218. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/manager.py +0 -0
  219. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/node.py +0 -0
  220. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/operate/__init__.py +0 -0
  221. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/operate/operate.py +0 -0
  222. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/parse/__init__.py +0 -0
  223. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/parse/parse.py +0 -0
  224. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/plan/__init__.py +0 -0
  225. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/plan/plan.py +0 -0
  226. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/plan/prompt.py +0 -0
  227. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/select/__init__.py +0 -0
  228. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/select/select.py +0 -0
  229. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/select/utils.py +0 -0
  230. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/types.py +0 -0
  231. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/operations/utils.py +0 -0
  232. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/__init__.py +0 -0
  233. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/_concepts.py +0 -0
  234. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/action/__init__.py +0 -0
  235. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/action/function_calling.py +0 -0
  236. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/action/tool.py +0 -0
  237. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/contracts.py +0 -0
  238. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/forms/__init__.py +0 -0
  239. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/forms/base.py +0 -0
  240. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/forms/flow.py +0 -0
  241. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/forms/form.py +0 -0
  242. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/forms/report.py +0 -0
  243. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/__init__.py +0 -0
  244. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/element.py +0 -0
  245. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/event.py +0 -0
  246. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/log.py +0 -0
  247. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/pile.py +0 -0
  248. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/processor.py +0 -0
  249. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/generic/progression.py +0 -0
  250. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/graph/__init__.py +0 -0
  251. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/graph/edge.py +0 -0
  252. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/graph/graph.py +0 -0
  253. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/graph/node.py +0 -0
  254. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/ids.py +0 -0
  255. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/__init__.py +0 -0
  256. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/exchange.py +0 -0
  257. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/mail.py +0 -0
  258. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/mailbox.py +0 -0
  259. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/manager.py +0 -0
  260. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/mail/package.py +0 -0
  261. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/__init__.py +0 -0
  262. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/action_request.py +0 -0
  263. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/action_response.py +0 -0
  264. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/assistant_response.py +0 -0
  265. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/base.py +0 -0
  266. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/instruction.py +0 -0
  267. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/manager.py +0 -0
  268. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/message.py +0 -0
  269. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/system.py +0 -0
  270. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/README.md +0 -0
  271. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  272. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  273. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  274. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  275. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  276. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  277. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/operatives/__init__.py +0 -0
  278. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/operatives/operative.py +0 -0
  279. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/operatives/step.py +0 -0
  280. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/protocols/types.py +0 -0
  281. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/py.typed +0 -0
  282. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/__init__.py +0 -0
  283. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/broadcaster.py +0 -0
  284. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/__init__.py +0 -0
  285. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/api_calling.py +0 -0
  286. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/endpoint.py +0 -0
  287. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/endpoint_config.py +0 -0
  288. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/header_factory.py +0 -0
  289. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/match_endpoint.py +0 -0
  290. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/mcp/__init__.py +0 -0
  291. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/mcp/wrapper.py +0 -0
  292. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/__init__.py +0 -0
  293. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/anthropic_.py +0 -0
  294. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/exa_.py +0 -0
  295. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/nvidia_nim_.py +0 -0
  296. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/oai_.py +0 -0
  297. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/ollama_.py +0 -0
  298. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/perplexity_.py +0 -0
  299. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/connections/providers/types.py +0 -0
  300. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/__init__.py +0 -0
  301. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/_types.py +0 -0
  302. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/hooks/hooked_event.py +0 -0
  303. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/imodel.py +0 -0
  304. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/manager.py +0 -0
  305. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/rate_limited_processor.py +0 -0
  306. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/resilience.py +0 -0
  307. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/README.md +0 -0
  308. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/__init__.py +0 -0
  309. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/anthropic_models.py +0 -0
  310. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/exa_models.py +0 -0
  311. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/openai_model_names.py +0 -0
  312. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/third_party/pplx_models.py +0 -0
  313. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/token_calculator.py +0 -0
  314. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/service/types.py +0 -0
  315. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/session/__init__.py +0 -0
  316. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/session/branch.py +0 -0
  317. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/session/prompts.py +0 -0
  318. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/session/session.py +0 -0
  319. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/tools/__init__.py +0 -0
  320. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/tools/base.py +0 -0
  321. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/tools/file/__init__.py +0 -0
  322. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/tools/file/reader.py +0 -0
  323. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/tools/types.py +0 -0
  324. {lionagi-0.17.7 → lionagi-0.17.9}/lionagi/utils.py +0 -0
  325. {lionagi-0.17.7 → lionagi-0.17.9}/main.py +0 -0
  326. {lionagi-0.17.7 → lionagi-0.17.9}/mkdocs.yml +0 -0
  327. {lionagi-0.17.7 → lionagi-0.17.9}/scripts/README.md +0 -0
  328. {lionagi-0.17.7 → lionagi-0.17.9}/scripts/update_openai_models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.17.7
3
+ Version: 0.17.9
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -4,12 +4,14 @@ This folder contains a lightweight benchmark runner for lionagi.ln.concurrency.
4
4
  It establishes a baseline for core patterns to help catch regressions.
5
5
 
6
6
  How to run (concurrency)
7
+
7
8
  - Asyncio backend (default):
8
9
  - `python -m benchmarks.concurrency_bench`
9
10
  - Trio backend:
10
11
  - `python -m benchmarks.concurrency_bench --backend trio`
11
12
 
12
13
  Options
14
+
13
15
  - `--backend {asyncio,trio}`: Select async backend (default: asyncio)
14
16
  - `--repeat N`: Repeat each scenario N times and report aggregates (default: 3)
15
17
  - `--json`: Also print JSON to stdout (besides saving to file)
@@ -17,6 +19,7 @@ Options
17
19
  - `--compare BASELINE.json`: Compare against a previous run and show deltas
18
20
 
19
21
  How to run (ln functions)
22
+
20
23
  - Asyncio backend (default):
21
24
  - `python -m benchmarks.ln_bench`
22
25
  - Trio backend:
@@ -25,11 +28,15 @@ How to run (ln functions)
25
28
  Options are the same as the concurrency runner.
26
29
 
27
30
  Results
28
- - Results are saved under `benchmarks/results/<timestamp>-<backend>.json` (concurrency)
29
- and `benchmarks/results/ln-<timestamp>-<backend>.json` (ln functions) by default.
30
- - Each scenario reports min/mean/median/max (seconds) over the configured repeats.
31
+
32
+ - Results are saved under `benchmarks/results/<timestamp>-<backend>.json`
33
+ (concurrency) and `benchmarks/results/ln-<timestamp>-<backend>.json` (ln
34
+ functions) by default.
35
+ - Each scenario reports min/mean/median/max (seconds) over the configured
36
+ repeats.
31
37
 
32
38
  Scenarios (initial set)
39
+
33
40
  - gather_100_yield: 100 tasks, each yields once (sleep 0)
34
41
  - bounded_map_2000_limit_100: 2000 items, async no-op mapper, limit=100
35
42
  - completion_stream_1000_limit_100: 1000 awaitables streamed with limit=100
@@ -38,8 +45,11 @@ Scenarios (initial set)
38
45
  - taskgroup_start_1000_noop: start 1000 short-lived tasks
39
46
 
40
47
  Notes
48
+
41
49
  - Fuzzy utilities benches are available:
42
50
  - `python -m benchmarks.fuzzy_bench` (JSON parsing, extraction, key matching)
43
51
  - Outputs to `benchmarks/results/fuzzy-<timestamp>.json`
44
- - These are micro-benchmarks intended to detect relative changes, not absolute throughput.
45
- - Run on a quiet machine for less noisy results. Prefer CI runners for consistency.
52
+ - These are micro-benchmarks intended to detect relative changes, not absolute
53
+ throughput.
54
+ - Run on a quiet machine for less noisy results. Prefer CI runners for
55
+ consistency.
@@ -0,0 +1,224 @@
1
+ # Agentic AI Framework Performance Benchmarks
2
+
3
+ Rigorous apples-to-apples performance comparison of major Python agentic AI
4
+ frameworks, focusing on real-world cold-start performance and memory efficiency.
5
+
6
+ ## Executive Summary
7
+
8
+ - LionAGI delivers 25-45% faster cold-start performance than the next-best
9
+ framework (LangGraph) across composites, up to ~4.9× faster on a realistic
10
+ data-processing workload, and ~36% lower memory (RSS).
11
+
12
+ ### Key Results (20 runs per test • Python 3.10.15)
13
+
14
+ - **Cold Composite Performance** (geomean of medians; excludes imports): LionAGI
15
+ **233 ms** vs LangGraph **421 ms** → **LangGraph is 81% slower** (**LionAGI is
16
+ 45% faster**)
17
+ - **Memory Efficiency**: LionAGI 40.5MB RSS vs LangGraph 63.3MB (36% lower)
18
+ - **Consistency**: First-place performance in 4/4 cold-start categories
19
+ - **Orchestrator Setup**: LionAGI 299ms vs LangGraph 410ms (37% faster)
20
+ - **Operational impact**: ~**188 ms saved per cold start** vs LangGraph (≈ **3.1
21
+ min saved per 1k cold starts**)
22
+
23
+ ## Headline Performance Metrics
24
+
25
+ ### Cold Composite Performance (Geometric Mean of medians, excludes imports)
26
+
27
+ | Rank | Framework | Composite (ms) | RSS (MB) | USS (MB) | vs Best |
28
+ | ---- | -------------- | -------------- | -------- | -------- | ------------------ |
29
+ | 1 | **LionAGI** | 233.0 | 40.5 | 36.0 | — |
30
+ | 2 | LangGraph | 420.8 | 63.3 | 54.0 | **+80.6% slower** |
31
+ | 3 | LlamaIndex | 803.0 | 130.1 | 113.8 | **+244.6% slower** |
32
+ | 4 | AutoGen | 1243.7 | 142.6 | 120.4 | **+433.6% slower** |
33
+ | 5 | LangChain Core | 2260.4 | 248.8 | 188.4 | **+870.1% slower** |
34
+
35
+ **Notes** • Composite excludes `imports` because sub-millisecond baselines
36
+ (e.g., lazy imports) are dominated by timer granularity. • Conservative
37
+ composite (excluding `data_processing`): LionAGI **322.5 ms** vs LangGraph
38
+ **417.2 ms** → **LangGraph is 29% slower** (**LionAGI is 23% faster**).
39
+
40
+ ## Detailed Benchmark Results
41
+
42
+ _Process isolation per run • Module cache cleared • CPU pinning enabled_
43
+
44
+ ### Orchestrators (Cold) - Production-Ready State
45
+
46
+ | Framework | Median (ms) | P95 (ms) | Range | RSS (MB) | vs Best |
47
+ | -------------- | ----------- | -------- | --------- | -------- | ------- |
48
+ | **LionAGI** | 299.4 | 347.1 | 284-412 | 45.7 | — |
49
+ | LangGraph | 410.1 | 447.0 | 370-509 | 62.9 | +37.0% |
50
+ | LlamaIndex | 838.3 | 932.2 | 781-972 | 143.0 | +180.0% |
51
+ | AutoGen | 1257.0 | 1347.8 | 1217-1502 | 142.8 | +319.8% |
52
+ | LangChain Core | 2302.8 | 2846.5 | 2123-2978 | 248.0 | +669.1% |
53
+
54
+ ### Basic Primitives (Cold) - Core Building Blocks
55
+
56
+ | Framework | Median (ms) | P95 (ms) | Range | RSS (MB) | vs Best |
57
+ | -------------- | ----------- | -------- | --------- | -------- | ------- |
58
+ | **LionAGI** | 326.6 | 377.6 | 304-391 | 47.6 | — |
59
+ | LangGraph | 409.0 | 540.0 | 376-649 | 63.8 | +25.2% |
60
+ | LlamaIndex | 752.8 | 855.2 | 681-935 | 95.7 | +130.5% |
61
+ | AutoGen | 1228.9 | 1448.3 | 1156-1577 | 144.1 | +276.3% |
62
+ | LangChain Core | 2267.0 | 2658.1 | 2070-3209 | 248.4 | +594.1% |
63
+
64
+ ### Workflow Setup (Cold) - Multi-Component Coordination
65
+
66
+ | Framework | Median (ms) | P95 (ms) | Range | RSS (MB) | vs Best |
67
+ | -------------- | ----------- | -------- | --------- | -------- | ------- |
68
+ | **LionAGI** | 343.0 | 421.5 | 307-576 | 48.4 | — |
69
+ | LangGraph | 432.8 | 510.2 | 408-696 | 64.1 | +26.2% |
70
+ | LlamaIndex | 814.3 | 890.7 | 786-996 | 141.0 | +137.4% |
71
+ | AutoGen | 1248.5 | 1340.9 | 1213-1558 | 141.4 | +264.0% |
72
+ | LangChain Core | 2203.8 | 2579.5 | 2083-2720 | 251.4 | +542.5% |
73
+
74
+ ### Data Processing (Cold) - Realistic Workload
75
+
76
+ | Framework | Median (ms) | P95 (ms) | Range | RSS (MB) | vs Best |
77
+ | -------------- | ----------- | -------- | --------- | -------- | -------- |
78
+ | **LionAGI** | 87.8 | 116.5 | 83-131 | 20.2 | — |
79
+ | LangGraph | 432.0 | 509.8 | 403-541 | 62.4 | +392.0% |
80
+ | LlamaIndex | 808.9 | 894.8 | 779-902 | 140.7 | +821.3% |
81
+ | AutoGen | 1240.5 | 1391.1 | 1162-1541 | 142.1 | +1312.9% |
82
+ | LangChain Core | 2269.0 | 2600.5 | 2084-2841 | 247.4 | +2484.3% |
83
+
84
+ ## Performance Analysis
85
+
86
+ ### Memory Efficiency
87
+
88
+ - **LionAGI**: 40.5 MB average RSS (36.0 MB USS) — most memory efficient
89
+ - **LangGraph**: 63.3 MB average RSS (**+56% vs LionAGI**)
90
+ - **LlamaIndex**: 130.1 MB average RSS (**+221%**)
91
+ - **AutoGen**: 142.6 MB average RSS (**+252%**)
92
+ - **LangChain Core**: 248.8 MB average RSS (**+514%**)
93
+
94
+ ### Consistency & Reliability
95
+
96
+ - **Low variability**: See CSV for MAD/stdev; LionAGI shows tight ranges in
97
+ cold-path categories.
98
+ - **P95 performance**: Sub-400 ms P95 in most cold categories (orchestrators &
99
+ primitives).
100
+ - **Range stability**: Small min-max spans across cold categories indicate
101
+ predictable cold behavior.
102
+
103
+ ## Feature Parity Matrix
104
+
105
+ All frameworks tested with equivalent, normalized workloads:
106
+
107
+ | Framework | Object Built | Core-Only | LLM Used | Network | Notes |
108
+ | -------------- | ---------------------- | --------- | -------- | ------- | ------------------------- |
109
+ | LionAGI | Session() | Yes | None | No | Minimal runtime container |
110
+ | LangGraph | StateGraph.compile() | Yes | None | No | One-node identity graph |
111
+ | LangChain Core | PromptTemplate\|Lambda | Yes | None | No | LCEL chain, no community |
112
+ | LlamaIndex | SimpleChatEngine | Yes | MockLLM | No | Built-in mock, no network |
113
+ | AutoGen | ConversableAgent | Yes | None | No | LLM disabled |
114
+
115
+ ## Methodology
116
+
117
+ ### Measurement Approach
118
+
119
+ - **Cold Mode**: Full import + object construction (serverless scenario)
120
+ - **Process Isolation**: Fresh Python interpreter per measurement
121
+ - **Statistical Rigor**: Median, P95, MAD, trimmed mean for outlier resistance
122
+ - **Memory Tracking**: RSS (Resident Set Size) and USS (Unique Set Size)
123
+
124
+ ### Environmental Controls
125
+
126
+ - CPU pinning for reduced scheduler noise
127
+ - Deterministic hashing (PYTHONHASHSEED=0)
128
+ - Module cache clearing between runs
129
+ - API keys blanked to prevent network calls
130
+ - 30-second timeout to prevent hangs
131
+
132
+ ### Excluded from Headlines
133
+
134
+ - **Import-only tests**: Dominated by lazy loading and timer granularity
135
+ - **Sub-millisecond measurements**: Below meaningful timer resolution
136
+
137
+ ## Reproducing Results
138
+
139
+ ```bash
140
+ # Clone repository
141
+ git clone https://github.com/lion-agi/lionagi.git
142
+ cd lionagi/benchmarks/comparisons
143
+
144
+ # Install dependencies
145
+ uv add --dev langgraph langchain-core llama-index-core pyautogen psutil
146
+ # (Recommended) Pin exact versions for reproducibility
147
+ uv lock
148
+ # Or export a frozen requirements file:
149
+ uv export --frozen --format requirements.txt > bench.requirements.txt
150
+
151
+ # Run full benchmark (20 runs, ~15 minutes)
152
+ uv run python benchmark_professional.py --runs 20 --report
153
+
154
+ # Generate report
155
+ uv run python generate_benchmark_report.py
156
+
157
+ # Quick test (3 runs)
158
+ uv run python benchmark_professional.py --runs 3
159
+ ```
160
+
161
+ ### Environment & Versions
162
+
163
+ Test environment and package versions used for benchmarks:
164
+
165
+ ```
166
+ Hardware: Apple M2 Max, 32GB RAM
167
+ OS: macOS (Darwin 24.6.0)
168
+ Python: 3.10.15
169
+ LionAGI: v0.17.7
170
+ langgraph: 0.6.7
171
+ langchain-core: 0.3.76
172
+ llama-index-core: 0.14.2
173
+ pyautogen: 0.10.0
174
+ psutil: 7.1.0
175
+ ```
176
+
177
+ ## Use Case Recommendations
178
+
179
+ ### When to Choose LionAGI
180
+
181
+ - **Serverless/Lambda Functions**: 233ms cold start vs 421ms+ for alternatives
182
+ - **Memory-Constrained Environments**: 36% lower memory footprint
183
+ - **High-Frequency Operations**: Consistent sub-100ms data processing
184
+ - **Cost-Sensitive Deployments**: Lower memory = more concurrent executions
185
+
186
+ ### Framework Selection Guide
187
+
188
+ | Use Case | Recommended | Reasoning |
189
+ | --------------------- | ----------- | ------------------------------------ |
190
+ | Serverless/Lambda | LionAGI | Fastest cold start (233ms composite) |
191
+ | Memory-Limited | LionAGI | Lowest footprint (40.5MB) |
192
+ | State Machines | LangGraph | Purpose-built for graph workflows |
193
+ | Document RAG | LlamaIndex | Specialized document processing |
194
+ | Multi-Agent Chat | AutoGen | Conversation-focused patterns |
195
+ | Ecosystem Integration | LangChain | Extensive tool library |
196
+
197
+ ## Summary
198
+
199
+ The benchmarks show LionAGI's performance characteristics in cold-start
200
+ scenarios:
201
+
202
+ - **25-45% faster** cold-start performance vs next-best across composites
203
+ - Up to **~4.9× faster** on the data-processing workload
204
+ - **36% lower memory usage** (40.5MB vs 63.3MB for LangGraph)
205
+ - **Consistent performance** with tight P95 bounds and low variance
206
+ - **Fast orchestrator initialization** at 299ms median
207
+
208
+ These characteristics are relevant for:
209
+
210
+ - Serverless and edge deployments where cold-start performance impacts costs
211
+ - Applications with memory constraints or high concurrency requirements
212
+ - Use cases requiring predictable performance characteristics
213
+
214
+ ---
215
+
216
+ ### Data Files
217
+
218
+ - **Summary**: `benchmark_summary_*.csv` - Statistical aggregates
219
+ - **Detailed**: `benchmark_detailed_*.csv` - Individual run data
220
+ - **Full Export**: `benchmark_results_*.json` - Complete metadata
221
+
222
+ _Last updated: September 2025 • LionAGI v0.17.7 • Python 3.10.15_ _Benchmark
223
+ version: Apples-to-Apples Framework Benchmark v2.0_ _(composite excludes
224
+ imports; see Methodology)_