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.
- lionagi-0.15.13/.github/workflows/docs-deploy.yml +36 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/PKG-INFO +21 -16
- {lionagi-0.15.9 → lionagi-0.15.13}/README.md +18 -13
- lionagi-0.15.13/docs/DOCUMENTATION_STANDARDS.md +273 -0
- lionagi-0.15.13/docs/advanced/custom-operations.md +120 -0
- lionagi-0.15.13/docs/advanced/error-handling.md +218 -0
- lionagi-0.15.13/docs/advanced/flow-composition.md +224 -0
- lionagi-0.15.13/docs/advanced/index.md +44 -0
- lionagi-0.15.13/docs/advanced/observability.md +140 -0
- lionagi-0.15.13/docs/advanced/performance.md +174 -0
- lionagi-0.15.13/docs/code-of-conduct.md +59 -0
- lionagi-0.15.13/docs/comparisons/langgraph.md +440 -0
- lionagi-0.15.13/docs/contributing.md +51 -0
- lionagi-0.15.13/docs/cookbook/brainstorming.md +207 -0
- lionagi-0.15.13/docs/cookbook/claim-extraction.md +440 -0
- lionagi-0.15.13/docs/cookbook/code-review-crew.md +195 -0
- lionagi-0.15.13/docs/cookbook/data-persistence.md +316 -0
- lionagi-0.15.13/docs/cookbook/hr-automation.md +433 -0
- lionagi-0.15.13/docs/cookbook/index.md +91 -0
- lionagi-0.15.13/docs/cookbook/research-synthesis.md +212 -0
- lionagi-0.15.13/docs/core-concepts/index.md +76 -0
- lionagi-0.15.13/docs/core-concepts/lionagi-philosophy.md +206 -0
- lionagi-0.15.13/docs/core-concepts/messages-and-memory.md +186 -0
- lionagi-0.15.13/docs/core-concepts/models-and-providers.md +190 -0
- lionagi-0.15.13/docs/core-concepts/operations.md +160 -0
- lionagi-0.15.13/docs/core-concepts/sessions-and-branches.md +302 -0
- lionagi-0.15.13/docs/core-concepts/tools-and-functions.md +60 -0
- lionagi-0.15.13/docs/for-ai-agents/claude-code-usage.md +229 -0
- lionagi-0.15.13/docs/for-ai-agents/index.md +34 -0
- lionagi-0.15.13/docs/for-ai-agents/orchestration-guide.md +314 -0
- lionagi-0.15.13/docs/for-ai-agents/pattern-selection.md +289 -0
- lionagi-0.15.13/docs/for-ai-agents/self-improvement.md +442 -0
- lionagi-0.15.13/docs/includes/abbreviations.md +104 -0
- lionagi-0.15.13/docs/index.md +151 -0
- lionagi-0.15.13/docs/integrations/databases.md +530 -0
- lionagi-0.15.13/docs/integrations/dspy-optimization.md +365 -0
- lionagi-0.15.13/docs/integrations/index.md +62 -0
- lionagi-0.15.13/docs/integrations/llamaindex-rag.md +270 -0
- lionagi-0.15.13/docs/integrations/llm-providers.md +625 -0
- lionagi-0.15.13/docs/integrations/mcp-servers.md +283 -0
- lionagi-0.15.13/docs/integrations/tools.md +426 -0
- lionagi-0.15.13/docs/integrations/vector-stores.md +338 -0
- lionagi-0.15.13/docs/marketing/language-interoperability-manifesto.md +181 -0
- lionagi-0.15.13/docs/migration/from-autogen.md +243 -0
- lionagi-0.15.13/docs/migration/from-crewai.md +259 -0
- lionagi-0.15.13/docs/migration/from-langchain.md +350 -0
- lionagi-0.15.13/docs/migration/index.md +64 -0
- lionagi-0.15.13/docs/patterns/conditional-flows.md +183 -0
- lionagi-0.15.13/docs/patterns/fan-out-in.md +201 -0
- lionagi-0.15.13/docs/patterns/index.md +79 -0
- lionagi-0.15.13/docs/patterns/react-with-rag.md +142 -0
- lionagi-0.15.13/docs/patterns/sequential-analysis.md +186 -0
- lionagi-0.15.13/docs/patterns/tournament-validation.md +280 -0
- lionagi-0.15.13/docs/quickstart/claude-code-integration.md +153 -0
- lionagi-0.15.13/docs/quickstart/index.md +53 -0
- lionagi-0.15.13/docs/quickstart/installation.md +61 -0
- lionagi-0.15.13/docs/quickstart/orchestration-first.md +229 -0
- lionagi-0.15.13/docs/quickstart/your-first-flow.md +253 -0
- lionagi-0.15.13/docs/reference/api/index.md +246 -0
- lionagi-0.15.13/docs/reference/changelog.md +222 -0
- lionagi-0.15.13/docs/reference/troubleshooting.md +283 -0
- lionagi-0.15.13/docs/stylesheets/extra.css +136 -0
- lionagi-0.15.13/docs/thinking-in-lionagi/branches-as-agents.md +202 -0
- lionagi-0.15.13/docs/thinking-in-lionagi/builder-pattern.md +276 -0
- lionagi-0.15.13/docs/thinking-in-lionagi/graphs-over-chains.md +306 -0
- lionagi-0.15.13/docs/thinking-in-lionagi/index.md +86 -0
- lionagi-0.15.13/docs/thinking-in-lionagi/why-lionagi.md +169 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/__init__.py +4 -6
- lionagi-0.15.13/lionagi/adapters/async_postgres_adapter.py +98 -0
- lionagi-0.15.13/lionagi/libs/file/_utils.py +10 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/process.py +16 -13
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/pdf_to_image.py +2 -2
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/__init__.py +28 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_async_call.py +1 -0
- lionagi-0.15.13/lionagi/ln/_extract_json.py +60 -0
- lionagi-0.15.13/lionagi/ln/_fuzzy_json.py +116 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/field_model.py +8 -6
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/__init__.py +3 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/builder.py +10 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/element.py +120 -17
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/pile.py +56 -1
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/progression.py +11 -11
- lionagi-0.15.13/lionagi/protocols/graph/_utils.py +22 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/graph.py +17 -21
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/node.py +23 -3
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/manager.py +41 -45
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/operatives/step.py +2 -19
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/types.py +1 -2
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/file/reader.py +5 -6
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/utils.py +8 -385
- lionagi-0.15.13/lionagi/version.py +1 -0
- lionagi-0.15.13/mkdocs.yml +309 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/pyproject.toml +10 -3
- {lionagi-0.15.9 → lionagi-0.15.13}/uv.lock +487 -104
- lionagi-0.15.9/docs/Makefile +0 -23
- lionagi-0.15.9/docs/_static/custom.css +0 -89
- lionagi-0.15.9/docs/_templates/layout.html +0 -47
- lionagi-0.15.9/docs/conf.py +0 -52
- lionagi-0.15.9/docs/discussions/anyio-migration.md +0 -178
- lionagi-0.15.9/docs/index.rst +0 -37
- lionagi-0.15.9/docs/modules/action.rst +0 -585
- lionagi-0.15.9/docs/modules/adapter.rst +0 -641
- lionagi-0.15.9/docs/modules/branch.rst +0 -144
- lionagi-0.15.9/docs/modules/branch_operations.rst +0 -743
- lionagi-0.15.9/docs/modules/concepts.rst +0 -219
- lionagi-0.15.9/docs/modules/element_id.rst +0 -229
- lionagi-0.15.9/docs/modules/event.rst +0 -173
- lionagi-0.15.9/docs/modules/form.rst +0 -329
- lionagi-0.15.9/docs/modules/graph.rst +0 -269
- lionagi-0.15.9/docs/modules/index.rst +0 -38
- lionagi-0.15.9/docs/modules/instruct.rst +0 -222
- lionagi-0.15.9/docs/modules/lib_file.rst +0 -246
- lionagi-0.15.9/docs/modules/lib_nested.rst +0 -297
- lionagi-0.15.9/docs/modules/lib_package.rst +0 -153
- lionagi-0.15.9/docs/modules/lib_schema.rst +0 -232
- lionagi-0.15.9/docs/modules/lib_validate.rst +0 -239
- lionagi-0.15.9/docs/modules/log.rst +0 -235
- lionagi-0.15.9/docs/modules/mail.rst +0 -343
- lionagi-0.15.9/docs/modules/message.rst +0 -668
- lionagi-0.15.9/docs/modules/models.rst +0 -221
- lionagi-0.15.9/docs/modules/operative_step.rst +0 -171
- lionagi-0.15.9/docs/modules/pile.rst +0 -338
- lionagi-0.15.9/docs/modules/processor.rst +0 -234
- lionagi-0.15.9/docs/modules/progression.rst +0 -259
- lionagi-0.15.9/docs/modules/service.rst +0 -245
- lionagi-0.15.9/docs/modules/session.rst +0 -193
- lionagi-0.15.9/docs/modules/utils.rst +0 -351
- lionagi-0.15.9/docs/tutorials/get_started.rst +0 -231
- lionagi-0.15.9/docs/tutorials/get_started_pt2.rst +0 -294
- lionagi-0.15.9/docs/tutorials/get_started_pt3.rst +0 -190
- lionagi-0.15.9/docs/tutorials/index.rst +0 -14
- lionagi-0.15.9/lionagi/adapters/async_postgres_adapter.py +0 -362
- lionagi-0.15.9/lionagi/libs/package/imports.py +0 -21
- lionagi-0.15.9/lionagi/libs/package/management.py +0 -62
- lionagi-0.15.9/lionagi/libs/package/params.py +0 -30
- lionagi-0.15.9/lionagi/libs/package/system.py +0 -22
- lionagi-0.15.9/lionagi/tools/file/__init__.py +0 -3
- lionagi-0.15.9/lionagi/version.py +0 -1
- {lionagi-0.15.9 → lionagi-0.15.13}/.coveragerc +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.env.example +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.github/FUNDING.yml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.github/dependabot.yml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/ci.yml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.github/workflows/release.yml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.gitignore +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.pre-commit-config.yaml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/.python-version +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/CONTRIBUTING.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/LICENSE +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/assets/operation_builder.gif +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/001_branch_converse.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/002_branch_interact.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/003_branch_info.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/004_conversation_patterns.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/005_react_basics.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/007_fan_out_in.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/README.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/002_comedian.json +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/002_critic.json +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/data/006_lion_proof_ch2.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/cookbooks/using_claude_code.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_class_registry.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_errors.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/_types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/_utils.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/adapters/postgres_model_adapter.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/config.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/action.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/base.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/code.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/file.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/instruct.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/reason.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/fields/research.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/concurrency.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/concat.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/concat_files.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/parse.py +0 -0
- {lionagi-0.15.9/lionagi/libs/package → lionagi-0.15.13/lionagi/libs/schema}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/base.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/token_transform/types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
- {lionagi-0.15.9/lionagi/libs/schema → lionagi-0.15.13/lionagi/libs/validate}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/string_similarity.py +4 -4
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/to_num.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/libs/validate/xml_parser.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_hash.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_json_dump.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_list_call.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_models.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_to_list.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/_types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/cancel.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/errors.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/patterns.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/primitives.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/resource_tracker.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/task.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/throttle.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/ln/concurrency/utils.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/model_params.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/note.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/ReAct/ReAct.py +0 -0
- {lionagi-0.15.9/lionagi/libs/validate → lionagi-0.15.13/lionagi/operations/ReAct}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/ReAct/utils.py +0 -0
- {lionagi-0.15.9/lionagi/operations/ReAct → lionagi-0.15.13/lionagi/operations/_act}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.15.9/lionagi/operations/_act → lionagi-0.15.13/lionagi/operations/brainstorm}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.15.9/lionagi/operations/brainstorm → lionagi-0.15.13/lionagi/operations/chat}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/flow.py +0 -0
- {lionagi-0.15.9/lionagi/operations/chat → lionagi-0.15.13/lionagi/operations/instruct}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.15.9/lionagi/operations/instruct → lionagi-0.15.13/lionagi/operations/interpret}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/manager.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/node.py +0 -0
- {lionagi-0.15.9/lionagi/operations/interpret → lionagi-0.15.13/lionagi/operations/operate}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/operate/operate.py +0 -0
- {lionagi-0.15.9/lionagi/operations/operate → lionagi-0.15.13/lionagi/operations/parse}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.15.9/lionagi/operations/parse → lionagi-0.15.13/lionagi/operations/select}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/translate/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/operations/utils.py +0 -0
- {lionagi-0.15.9/lionagi/operations/select → lionagi-0.15.13/lionagi/protocols}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.15.9/lionagi/protocols → lionagi-0.15.13/lionagi/protocols/action}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/function_calling.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/manager.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.15.9/lionagi/protocols/action → lionagi-0.15.13/lionagi/protocols/forms}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.15.9/lionagi/protocols/forms → lionagi-0.15.13/lionagi/protocols/generic}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.15.9/lionagi/protocols/generic → lionagi-0.15.13/lionagi/protocols/mail}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.15.9/lionagi/protocols/mail → lionagi-0.15.13/lionagi/protocols/messages}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.15.9/lionagi/protocols/messages → lionagi-0.15.13/lionagi/protocols/operatives}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/py.typed +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/api_calling.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/endpoint.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/endpoint_config.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/header_factory.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/match_endpoint.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/anthropic_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/claude_code_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/exa_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/oai_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/ollama_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/perplexity_.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/connections/providers/types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/_types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/_utils.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/hook_event.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/hooks/hook_registry.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/imodel.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/manager.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/rate_limited_processor.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/resilience.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/README.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/anthropic_models.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/claude_code.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/exa_models.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/openai_model_names.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/third_party/pplx_models.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/token_calculator.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/service/types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/branch.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/prompts.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/session/session.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/settings.py +0 -0
- {lionagi-0.15.9/lionagi/protocols/operatives → lionagi-0.15.13/lionagi/tools}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/base.py +0 -0
- {lionagi-0.15.9/lionagi/tools → lionagi-0.15.13/lionagi/tools/file}/__init__.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/memory/tools.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/lionagi/tools/types.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/main.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/scripts/README.md +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/scripts/concat.py +0 -0
- {lionagi-0.15.9 → lionagi-0.15.13}/scripts/config.py +0 -0
- {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.
|
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>=
|
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.
|
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
|

|
275
275
|

|
276
276
|
|
277
|
-
[Documentation](https://
|
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
|
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**:
|
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**:
|
295
|
-
multi-step flows
|
296
|
-
- **Transparent**:
|
297
|
-
|
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
|
-
|
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=
|
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(
|
345
|
-
print(
|
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
|
-
|
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=
|
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
|

|
3
3
|

|
4
4
|
|
5
|
-
[Documentation](https://
|
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
|
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**:
|
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**:
|
23
|
-
multi-step flows
|
24
|
-
- **Transparent**:
|
25
|
-
|
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
|
-
|
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=
|
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(
|
73
|
-
print(
|
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
|
-
|
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=
|
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
|