lionagi 0.17.6__tar.gz → 0.17.7__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.
- {lionagi-0.17.6 → lionagi-0.17.7}/PKG-INFO +1 -1
- lionagi-0.17.7/benchmarks/comparisons/README.md +167 -0
- lionagi-0.17.7/benchmarks/comparisons/benchmark_detailed_20250920_225646.csv +401 -0
- lionagi-0.17.7/benchmarks/comparisons/benchmark_professional.py +540 -0
- lionagi-0.17.7/benchmarks/comparisons/benchmark_results_20250920_225646.json +5534 -0
- lionagi-0.17.7/benchmarks/comparisons/benchmark_summary_20250920_225646.csv +21 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/__init__.py +5 -2
- lionagi-0.17.7/lionagi/service/__init__.py +99 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/_types.py +4 -4
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/hook_registry.py +11 -11
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/hooked_event.py +2 -2
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/imodel.py +9 -4
- lionagi-0.17.7/lionagi/version.py +1 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/pyproject.toml +1 -1
- {lionagi-0.17.6 → lionagi-0.17.7}/uv.lock +1 -1
- lionagi-0.17.6/lionagi/service/__init__.py +0 -40
- lionagi-0.17.6/lionagi/version.py +0 -1
- {lionagi-0.17.6 → lionagi-0.17.7}/.coveragerc +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.env.example +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/FUNDING.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/dependabot.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/benchmarks.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/ci.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/docs-deploy.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/refresh-bench-baselines.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.github/workflows/release.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.gitignore +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.pre-commit-config.yaml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/.python-version +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/CONTRIBUTING.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/LICENSE +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/assets/operation_builder.gif +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/.gitkeep +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/concurrency-asyncio.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/concurrency-trio.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/fuzzy.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/ln-asyncio.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/baselines/ln-trio.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/ci_compare.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/concurrency_bench.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/fuzzy_bench.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/benchmarks/ln_bench.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/001_branch_converse.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/002_branch_interact.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/003_branch_info.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/004_conversation_patterns.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/005_react_basics.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/007_fan_out_in.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/data/002_comedian.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/data/002_critic.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/data/006_lion_proof_ch2.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_claude_code/claude_proxy/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_claude_code/claude_proxy/claude_code_proxy.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_claude_code/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_claude_code/using_claude_code.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_mcp/.mcp.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_mcp/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_mcp/react_mcp_with_schema.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_mcp/search_group.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/cookbooks/using_mcp/search_group_config.json +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/DOCUMENTATION_STANDARDS.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/custom-operations.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/error-handling.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/flow-composition.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/observability.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/advanced/performance.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/code-of-conduct.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/comparisons/langgraph.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/contributing.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/brainstorming.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/claim-extraction.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/code-review-crew.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/data-persistence.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/hr-automation.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/cookbook/research-synthesis.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/lionagi-philosophy.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/messages-and-memory.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/models-and-providers.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/operations.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/sessions-and-branches.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/core-concepts/tools-and-functions.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/for-ai-agents/claude-code-usage.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/for-ai-agents/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/for-ai-agents/orchestration-guide.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/for-ai-agents/pattern-selection.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/for-ai-agents/self-improvement.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/includes/abbreviations.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/databases.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/dspy-optimization.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/llamaindex-rag.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/llm-providers.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/mcp-servers.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/tools.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/integrations/vector-stores.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/marketing/language-interoperability-manifesto.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/migration/from-autogen.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/migration/from-crewai.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/migration/from-langchain.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/migration/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/conditional-flows.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/fan-out-in.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/react-with-rag.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/sequential-analysis.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/patterns/tournament-validation.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/problem-statement.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/quickstart/claude-code-integration.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/quickstart/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/quickstart/installation.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/quickstart/orchestration-first.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/quickstart/your-first-flow.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/reference/api/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/reference/changelog.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/reference/troubleshooting.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/stylesheets/extra.css +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/thinking-in-lionagi/branches-as-agents.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/thinking-in-lionagi/builder-pattern.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/thinking-in-lionagi/graphs-over-chains.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/thinking-in-lionagi/index.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/docs/thinking-in-lionagi/why-lionagi.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/_class_registry.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/_errors.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/_types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/adapters/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/adapters/_utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/adapters/async_postgres_adapter.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/config.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/action.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/base.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/code.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/file.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/instruct.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/reason.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/fields/research.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/breakdown_pydantic_annotation.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/validate/to_num.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_async_call.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_hash.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_json_dump.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_list_call.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_to_list.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/_utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/_compat.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/cancel.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/errors.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/patterns.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/primitives.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/resource_tracker.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/task.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/concurrency/utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_extract_json.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_fuzzy_json.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_fuzzy_match.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_fuzzy_validate.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_string_similarity.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/fuzzy/_to_dict.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/ln/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/field_model.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/model_params.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/ReAct/ReAct.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/ReAct/utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/_visualize_graph.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/builder.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/flow.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/manager.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/node.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/operate/operate.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/operations/utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/action/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/action/function_calling.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/action/manager.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/contracts.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/forms/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/ids.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/operatives/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/operatives/step.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/protocols/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/py.typed +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/broadcaster.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/api_calling.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/endpoint.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/endpoint_config.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/header_factory.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/match_endpoint.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/mcp/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/mcp/wrapper.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/anthropic_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/exa_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/nvidia_nim_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/oai_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/ollama_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/perplexity_.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/connections/providers/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/_utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/hooks/hook_event.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/manager.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/rate_limited_processor.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/resilience.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/anthropic_models.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/claude_code.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/exa_models.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/openai_model_names.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/third_party/pplx_models.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/token_calculator.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/service/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/session/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/session/branch.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/session/prompts.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/session/session.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/tools/base.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/tools/types.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/lionagi/utils.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/main.py +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/mkdocs.yml +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/scripts/README.md +0 -0
- {lionagi-0.17.6 → lionagi-0.17.7}/scripts/update_openai_models.py +0 -0
@@ -0,0 +1,167 @@
|
|
1
|
+
# Agentic AI Framework Performance Benchmarks
|
2
|
+
|
3
|
+
Comparative performance analysis of major Python agentic AI frameworks, focusing on cold-start performance and memory usage.
|
4
|
+
|
5
|
+
## Executive Summary
|
6
|
+
|
7
|
+
Benchmark comparison of five Python agentic AI frameworks measuring cold-start performance and memory usage.
|
8
|
+
|
9
|
+
Key findings:
|
10
|
+
- Core object creation: LionAGI 158ms, LangGraph 266ms, AutoGen 898ms
|
11
|
+
- Practical setup time: LionAGI 276ms, AutoGen 904ms, LangChain 1925ms
|
12
|
+
- Memory usage: LionAGI 27-50MB, LangGraph 45-49MB, AutoGen 125-145MB
|
13
|
+
- Import performance: LangGraph 0.1ms, LionAGI 35ms, AutoGen 882ms
|
14
|
+
|
15
|
+
## Benchmark Results
|
16
|
+
|
17
|
+
*20 runs per test • Python 3.10.15 • Process isolation per run*
|
18
|
+
|
19
|
+
### Import Performance
|
20
|
+
| Framework | Median (ms) | Range | Memory (MB) |
|
21
|
+
|-----------|-------------|-------|-------------|
|
22
|
+
| **LangGraph** | 0.1 | 0.1-0.1 | 0.0 |
|
23
|
+
| **LionAGI** | 34.9 | 32.4-55.5 | 10.1 |
|
24
|
+
| **LangChain** | 59.3 | 57.2-72.5 | 15.6 |
|
25
|
+
| **LlamaIndex** | 535.0 | 504.9-784.5 | 92.9 |
|
26
|
+
| **AutoGen** | 881.6 | 857.2-1314.7 | 130.6 |
|
27
|
+
|
28
|
+
### Core Object Creation
|
29
|
+
| Framework | Median (ms) | Relative | Memory (MB) | Use Case |
|
30
|
+
|-----------|-------------|----------|-------------|----------|
|
31
|
+
| **LionAGI** | 158.0 | 1.0x | 26.6 | AI model abstraction |
|
32
|
+
| **LangGraph** | 266.4 | 1.7x | 48.5 | State machine |
|
33
|
+
| **LlamaIndex** | 540.7 | 3.4x | 91.0 | Document processing |
|
34
|
+
| **AutoGen** | 898.3 | 5.7x | 125.6 | Agent conversation |
|
35
|
+
| **LangChain** | 2030.0 | 12.8x | 245.7 | Prompt template |
|
36
|
+
|
37
|
+
### High-Level Orchestration
|
38
|
+
| Framework | Median (ms) | Relative | Memory (MB) | Capabilities |
|
39
|
+
|-----------|-------------|----------|-------------|--------------|
|
40
|
+
| **LangGraph** | 250.4 | 0.89x | 45.3 | Graph compilation |
|
41
|
+
| **LionAGI** | 280.8 | 1.0x | 44.0 | Builder + Session |
|
42
|
+
| **AutoGen** | 844.3 | 3.0x | 121.3 | Group chat setup |
|
43
|
+
| **LangChain** | 1931.0 | 6.9x | 242.9 | Runnable sequence |
|
44
|
+
| **LlamaIndex** | 2258.5 | 8.0x | 282.6 | Settings config |
|
45
|
+
|
46
|
+
### Practical Setup
|
47
|
+
| Framework | Median (ms) | Relative | Memory (MB) | Lines of Code |
|
48
|
+
|-----------|-------------|----------|-------------|---------------|
|
49
|
+
| **LionAGI** | 276.3 | 1.0x | 42.6 | 6 lines |
|
50
|
+
| **AutoGen** | 904.2 | 3.3x | 129.4 | 8 lines |
|
51
|
+
| **LangGraph** | 1921.6 | 7.0x | 241.6 | 15 lines |
|
52
|
+
| **LangChain** | 1924.7 | 7.0x | 240.6 | 7 lines |
|
53
|
+
| **LlamaIndex** | 2504.1 | 9.1x | 323.5 | 9 lines |
|
54
|
+
|
55
|
+
## Performance Analysis
|
56
|
+
|
57
|
+
### Observations
|
58
|
+
|
59
|
+
**Import Performance**
|
60
|
+
- LangGraph: 0.1ms
|
61
|
+
- LionAGI and LangChain: 35-59ms
|
62
|
+
- LlamaIndex: 535ms
|
63
|
+
- AutoGen: 882ms
|
64
|
+
|
65
|
+
**Object Creation Patterns**
|
66
|
+
- LionAGI: 158ms for core iModel object
|
67
|
+
- LangGraph: 266ms for state machine setup
|
68
|
+
- LlamaIndex: 541ms for document indexing setup
|
69
|
+
- AutoGen: 898ms for conversation agent
|
70
|
+
- LangChain: 2030ms for prompt template
|
71
|
+
|
72
|
+
**Memory Footprint**
|
73
|
+
- LionAGI: 27-50MB
|
74
|
+
- LangGraph: 45-49MB
|
75
|
+
- AutoGen: 120-145MB
|
76
|
+
- LangChain: 240-250MB
|
77
|
+
- LlamaIndex: 280-340MB
|
78
|
+
|
79
|
+
**Practical Setup Times**
|
80
|
+
- LionAGI: 276ms (6 lines)
|
81
|
+
- AutoGen: 904ms (8 lines)
|
82
|
+
- LangGraph: 1922ms (15 lines)
|
83
|
+
- LangChain: 1925ms (7 lines)
|
84
|
+
- LlamaIndex: 2504ms (9 lines)
|
85
|
+
|
86
|
+
### Framework Characteristics
|
87
|
+
|
88
|
+
| Framework | Primary Use Case | Strengths | Considerations |
|
89
|
+
|-----------|-----------------|-----------|----------------|
|
90
|
+
| **LionAGI** | Multi-model orchestration | Consistent performance, low memory | Moderate import time |
|
91
|
+
| **LangGraph** | State-based workflows | Minimal import overhead | Higher setup complexity |
|
92
|
+
| **LangChain** | Ecosystem integration | Extensive tooling | Performance overhead |
|
93
|
+
| **AutoGen** | Multi-agent systems | Conversation patterns | High resource usage |
|
94
|
+
| **LlamaIndex** | Document processing | Specialized for RAG | Large memory footprint |
|
95
|
+
|
96
|
+
## Methodology
|
97
|
+
|
98
|
+
### Test Environment
|
99
|
+
- **Platform**: macOS
|
100
|
+
- **Python Version**: 3.10.15
|
101
|
+
- **Runs Per Test**: 20 independent runs
|
102
|
+
- **Process Isolation**: Fresh Python interpreter per run
|
103
|
+
- **Memory Measurement**: RSS (Resident Set Size) tracked within subprocess
|
104
|
+
- **Cache Management**: Module cache cleared between runs
|
105
|
+
|
106
|
+
### Test Scenarios
|
107
|
+
|
108
|
+
1. **Import Performance**: Time to import the framework module
|
109
|
+
2. **Core Object Creation**: Initialization of fundamental framework objects
|
110
|
+
3. **High-Level Orchestration**: Setup of production-ready components
|
111
|
+
4. **Practical Setup**: Minimal code to send message to AI
|
112
|
+
|
113
|
+
### Statistical Approach
|
114
|
+
- Median values reported as primary metric (more stable than mean)
|
115
|
+
- Standard deviation included to show consistency
|
116
|
+
- Min/max range provided for worst-case analysis
|
117
|
+
|
118
|
+
## Reproducing Results
|
119
|
+
|
120
|
+
```bash
|
121
|
+
# Clone and setup
|
122
|
+
git clone https://github.com/lion-agi/lionagi.git
|
123
|
+
cd lionagi/benchmarks/comparisons
|
124
|
+
|
125
|
+
# Install dependencies
|
126
|
+
uv add --dev langgraph langchain langchain-community
|
127
|
+
uv add --dev llama-index-core pyautogen psutil
|
128
|
+
|
129
|
+
# Run benchmark (20 runs, ~10 minutes)
|
130
|
+
uv run benchmark_professional.py
|
131
|
+
|
132
|
+
# View results
|
133
|
+
ls benchmark_*
|
134
|
+
```
|
135
|
+
|
136
|
+
## Use Case Considerations
|
137
|
+
|
138
|
+
### Serverless Deployments
|
139
|
+
- Import time and memory usage directly impact cold start performance and costs
|
140
|
+
- Frameworks with sub-100ms import times suitable for latency-sensitive applications
|
141
|
+
- Memory footprint affects container sizing and concurrent execution limits
|
142
|
+
|
143
|
+
### Development Workflow
|
144
|
+
- Faster initialization times provide quicker feedback during development
|
145
|
+
- Lower memory usage allows running more tests in parallel
|
146
|
+
- Code complexity (lines required) affects maintainability
|
147
|
+
|
148
|
+
## Summary
|
149
|
+
|
150
|
+
The benchmarks show distinct performance profiles across frameworks:
|
151
|
+
|
152
|
+
- **LangGraph**: Minimal import overhead (0.1ms) with moderate setup times
|
153
|
+
- **LionAGI**: Low setup times (158-276ms) with moderate memory usage (27-50MB)
|
154
|
+
- **AutoGen**: Higher initialization costs (900ms) focused on multi-agent conversations
|
155
|
+
- **LangChain**: Extensive ecosystem with corresponding performance overhead (2000ms+)
|
156
|
+
- **LlamaIndex**: Document-processing specialized with largest resource requirements
|
157
|
+
|
158
|
+
Framework selection should consider specific use case requirements including cold-start sensitivity, memory constraints, feature needs, and development complexity.
|
159
|
+
|
160
|
+
---
|
161
|
+
|
162
|
+
### Raw Data
|
163
|
+
- **Summary CSV**: Statistical analysis across all frameworks
|
164
|
+
- **Detailed CSV**: Individual run data with memory tracking
|
165
|
+
- **JSON Export**: Complete benchmark metadata and results
|
166
|
+
|
167
|
+
*Last updated: September 2025 • LionAGI v1.0 • [Benchmark methodology](./benchmark_professional.py)*
|