lionagi 0.8.2__tar.gz → 0.8.3__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.8.2 → lionagi-0.8.3}/PKG-INFO +1 -1
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/ReAct/ReAct.py +7 -11
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/ReAct/utils.py +4 -4
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/function_calling.py +12 -2
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/tool.py +11 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/instruction.py +104 -51
- lionagi-0.8.3/lionagi/version.py +1 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/pyproject.toml +1 -1
- {lionagi-0.8.2 → lionagi-0.8.3}/uv.lock +1 -1
- lionagi-0.8.2/lionagi/version.py +0 -1
- {lionagi-0.8.2 → lionagi-0.8.3}/.env.example +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/FUNDING.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/dependabot.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/workflows/ci.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/workflows/docs.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.github/workflows/release.yml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.gitignore +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/.pre-commit-config.yaml +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/CONTRIBUTING.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/LICENSE +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/README.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/cookbooks/ch01_get_started.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/cookbooks/ch02_concepts.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/dev_tools/count_code_base_lines.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/Makefile +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/_static/custom.css +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/_templates/layout.html +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/conf.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/index.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/action.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/adapter.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/branch.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/branch_operations.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/concepts.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/element_id.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/event.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/form.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/graph.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/index.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/instruct.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/lib_file.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/lib_nested.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/lib_package.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/lib_schema.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/lib_validate.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/log.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/mail.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/message.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/models.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/operative_step.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/pile.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/processor.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/progression.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/service.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/session.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/modules/utils.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/tutorials/get_started.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/tutorials/get_started_pt2.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/tutorials/get_started_pt3.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/docs/tutorials/index.rst +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/_class_registry.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/_errors.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/_types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/package/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/package/imports.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/package/management.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/package/params.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/package/system.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/parse.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/token_transform/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/string_similarity.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/operate/operate.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/translate/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operations/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/request_response_model.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/action/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/forms/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/forms/base.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/forms/flow.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/forms/form.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/forms/report.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/base.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/instruct.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/instruct_collection.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/node.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/prompts.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/instruct/reason.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/field_model.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/model_params.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/note.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/operable_model.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/models/schema_model.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/operative.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/step.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/base.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/concurrent.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/concurrent_chunk.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/concurrent_sequential_chunk.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/params.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/sequential.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/sequential_chunk.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/sequential_concurrent_chunk.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/strategies/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/operatives/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/json_adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/pandas_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/pandas_/csv_adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/pandas_/excel_adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/pandas_/pd_series_adapter.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/adapters/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/protocols/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/base.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/chat_completion.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/match_endpoint.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/rate_limited_processor.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/endpoints/token_calculator.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/imodel.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/manager.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/anthropic_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/anthropic_/messages.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/exa_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/exa_/models.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/exa_/search.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/exa_/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/groq_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/groq_/chat_completions.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/openai_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/openai_/chat_completions.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/openrouter_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/openrouter_/chat_completions.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/perplexity_/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/perplexity_/chat_completions.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/providers/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/service/types.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/session/__init__.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/session/branch.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/session/session.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/settings.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/lionagi/utils.py +0 -0
- {lionagi-0.8.2 → lionagi-0.8.3}/prompts/doc_style.md +0 -0
@@ -11,6 +11,8 @@ from lionagi.operatives.types import Instruct
|
|
11
11
|
from lionagi.service.imodel import iModel
|
12
12
|
from lionagi.utils import copy
|
13
13
|
|
14
|
+
from .utils import ReActAnalysis
|
15
|
+
|
14
16
|
if TYPE_CHECKING:
|
15
17
|
from lionagi.session.branch import Branch
|
16
18
|
|
@@ -60,11 +62,9 @@ async def ReAct(
|
|
60
62
|
kwargs_for_operate["actions"] = True
|
61
63
|
kwargs_for_operate["reason"] = True
|
62
64
|
|
63
|
-
# We'll pass the refined instruct_dict plus the user's other kwargs
|
64
|
-
from .utils import ReActAnalysis
|
65
|
-
|
66
65
|
# Step 1: Generate initial ReAct analysis
|
67
66
|
analysis: ReActAnalysis = await branch.operate(
|
67
|
+
instruct=instruct_dict,
|
68
68
|
response_format=ReActAnalysis,
|
69
69
|
tools=tools,
|
70
70
|
tool_schemas=tool_schemas,
|
@@ -83,7 +83,7 @@ async def ReAct(
|
|
83
83
|
while (
|
84
84
|
extension_allowed
|
85
85
|
and analysis.extension_needed
|
86
|
-
and (extensions if
|
86
|
+
and (extensions if max_extensions else 0) > 0
|
87
87
|
):
|
88
88
|
new_instruction = None
|
89
89
|
if extensions == max_extensions:
|
@@ -95,17 +95,13 @@ async def ReAct(
|
|
95
95
|
extensions=extensions
|
96
96
|
)
|
97
97
|
|
98
|
-
# Each expansion uses a fresh copy of instruct_dict + forcibly "reason" + "actions"
|
99
|
-
expanded_kwargs = copy(instruct_dict)
|
100
|
-
expanded_kwargs["instruction"] = new_instruction
|
101
|
-
expanded_kwargs["reason"] = True
|
102
|
-
expanded_kwargs["actions"] = True
|
103
|
-
|
104
98
|
analysis = await branch.operate(
|
99
|
+
instruction=new_instruction,
|
105
100
|
response_format=ReActAnalysis,
|
106
101
|
tools=tools,
|
107
102
|
tool_schemas=tool_schemas,
|
108
|
-
|
103
|
+
reason=True,
|
104
|
+
actions=True,
|
109
105
|
)
|
110
106
|
analyses.append(analysis)
|
111
107
|
|
@@ -10,19 +10,19 @@ from pydantic import BaseModel, Field
|
|
10
10
|
class ReActAnalysis(BaseModel):
|
11
11
|
|
12
12
|
FIRST_EXT_PROMPT: ClassVar[str] = (
|
13
|
-
"You are provided with
|
13
|
+
"You are provided with additional rounds to perform reason action to provide an accurate final answer. you have max another {extensions} rounds. Pleasen continue."
|
14
14
|
)
|
15
15
|
|
16
16
|
CONTINUE_EXT_PROMPT: ClassVar[str] = (
|
17
|
-
"You are provided with another round, you have max another {extensions} rounds"
|
17
|
+
"You are provided with another round, you have max another {extensions} rounds. Please continue."
|
18
18
|
)
|
19
19
|
|
20
20
|
ANSWER_PROMPT: ClassVar[str] = (
|
21
|
-
"given above reason and actions, please provide final answer to the original user request {instruction}"
|
21
|
+
"given above reason and actions, please provide final answer to the original user request:\n\n {instruction}"
|
22
22
|
)
|
23
23
|
|
24
24
|
analysis: str
|
25
25
|
extension_needed: bool = Field(
|
26
26
|
False,
|
27
|
-
description="Set to True if more steps are needed to provide an accurate answer. If True, additional rounds are allowed.",
|
27
|
+
description="Set to True if more steps are needed to provide an accurate answer. If True, additional rounds are allowed. Typically should be set to true if more actions should be taken or planned to be taken. If false, will proceed to provide final answer next.",
|
28
28
|
)
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import asyncio
|
6
6
|
from typing import Any
|
7
7
|
|
8
|
-
from pydantic import Field, model_validator
|
8
|
+
from pydantic import BaseModel, Field, field_validator, model_validator
|
9
9
|
from typing_extensions import Self
|
10
10
|
|
11
11
|
from lionagi.protocols.generic.event import Event, EventStatus
|
@@ -27,12 +27,22 @@ class FunctionCalling(Event):
|
|
27
27
|
exclude=True,
|
28
28
|
)
|
29
29
|
|
30
|
-
arguments: dict[str, Any] = Field(
|
30
|
+
arguments: dict[str, Any] | BaseModel = Field(
|
31
31
|
..., description="Dictionary of arguments to pass to the function"
|
32
32
|
)
|
33
33
|
|
34
|
+
@field_validator("arguments", mode="before")
|
35
|
+
def _validate_argument(cls, value):
|
36
|
+
if isinstance(value, BaseModel):
|
37
|
+
return value.model_dump(exclude_unset=True)
|
38
|
+
return value
|
39
|
+
|
34
40
|
@model_validator(mode="after")
|
35
41
|
def _validate_strict_tool(self) -> Self:
|
42
|
+
if self.func_tool.request_options:
|
43
|
+
args: BaseModel = self.func_tool.request_options(**self.arguments)
|
44
|
+
self.arguments = args.model_dump(exclude_unset=True)
|
45
|
+
|
36
46
|
if self.func_tool.strict_func_call is True:
|
37
47
|
if (
|
38
48
|
not set(self.arguments.keys())
|
@@ -12,6 +12,7 @@ import inspect
|
|
12
12
|
from collections.abc import Callable
|
13
13
|
from typing import Any, TypeAlias
|
14
14
|
|
15
|
+
from openai import BaseModel
|
15
16
|
from pydantic import Field, field_validator, model_validator
|
16
17
|
from typing_extensions import Self
|
17
18
|
|
@@ -49,6 +50,11 @@ class Tool(Element):
|
|
49
50
|
description="Schema describing the function's parameters and structure",
|
50
51
|
)
|
51
52
|
|
53
|
+
request_options: type | None = Field(
|
54
|
+
default=None,
|
55
|
+
description="Optional Pydantic model for validating the function's input",
|
56
|
+
)
|
57
|
+
|
52
58
|
preprocessor: Callable[[Any], Any] | None = Field(
|
53
59
|
default=None,
|
54
60
|
description="Optional function for preprocessing inputs before execution",
|
@@ -88,6 +94,11 @@ class Tool(Element):
|
|
88
94
|
def _validate_tool_schema(self) -> Self:
|
89
95
|
if self.tool_schema is None:
|
90
96
|
self.tool_schema = function_to_schema(self.func_callable)
|
97
|
+
if self.request_options is not None:
|
98
|
+
schema_ = self.request_options.model_json_schema()
|
99
|
+
schema_.pop("title", None)
|
100
|
+
self.tool_schema["function"]["parameters"] = schema_
|
101
|
+
|
91
102
|
return self
|
92
103
|
|
93
104
|
@property
|
@@ -81,68 +81,121 @@ def format_text_item(item: Any) -> str:
|
|
81
81
|
|
82
82
|
def format_text_content(content: dict) -> str:
|
83
83
|
"""
|
84
|
-
Convert a dictionary
|
85
|
-
into a readable text block.
|
84
|
+
Convert a content dictionary into a minimal textual summary for LLM consumption.
|
86
85
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
86
|
+
Emphasizes brevity and clarity:
|
87
|
+
- Skips empty or None fields.
|
88
|
+
- Bullet-points for lists.
|
89
|
+
- Key-value pairs for dicts.
|
90
|
+
- Minimal headings for known fields (guidance, instruction, etc.).
|
92
91
|
"""
|
93
|
-
if "plain_content" in content and isinstance(
|
94
|
-
content["plain_content"], str
|
95
|
-
):
|
96
|
-
return content["plain_content"]
|
97
92
|
|
98
|
-
|
93
|
+
if isinstance(content.get("plain_content"), str):
|
94
|
+
return content["plain_content"]
|
99
95
|
|
100
|
-
|
96
|
+
lines = []
|
97
|
+
# We only want minimal headings for certain known fields:
|
98
|
+
known_field_order = [
|
101
99
|
"guidance",
|
102
100
|
"instruction",
|
103
101
|
"context",
|
104
102
|
"tool_schemas",
|
105
103
|
"respond_schema_info",
|
106
104
|
"request_response_format",
|
107
|
-
]
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
105
|
+
]
|
106
|
+
|
107
|
+
# Render known fields in that order
|
108
|
+
for field in known_field_order:
|
109
|
+
if field in content:
|
110
|
+
val = content[field]
|
111
|
+
if _is_not_empty(val):
|
112
|
+
if field == "request_response_format":
|
113
|
+
field = "response format"
|
114
|
+
elif field == "respond_schema_info":
|
115
|
+
field = "response schema info"
|
116
|
+
lines.append(f"\n## {field.upper()}:\n")
|
117
|
+
rendered = _render_value(val)
|
118
|
+
# Indent or bullet the rendered result if multiline
|
119
|
+
# We'll keep it minimal: each line is prefixed with " ".
|
120
|
+
lines.extend(
|
121
|
+
f" {line}"
|
122
|
+
for line in rendered.split("\n")
|
123
|
+
if line.strip()
|
124
|
+
)
|
125
|
+
|
126
|
+
# Join all lines into a single string
|
127
|
+
return "\n".join(lines).strip()
|
128
|
+
|
129
|
+
|
130
|
+
def _render_value(val) -> str:
|
131
|
+
"""
|
132
|
+
Render an arbitrary value (scalar, list, dict) in minimal form:
|
133
|
+
- Lists become bullet points.
|
134
|
+
- Dicts become key-value lines.
|
135
|
+
- Strings returned directly.
|
136
|
+
"""
|
137
|
+
if isinstance(val, dict):
|
138
|
+
return _render_dict(val)
|
139
|
+
elif isinstance(val, list):
|
140
|
+
return _render_list(val)
|
143
141
|
else:
|
144
|
-
|
145
|
-
|
142
|
+
return str(val).strip()
|
143
|
+
|
144
|
+
|
145
|
+
def _render_dict(dct: dict) -> str:
|
146
|
+
"""
|
147
|
+
Minimal bullet list for dictionary items:
|
148
|
+
key: rendered subvalue
|
149
|
+
"""
|
150
|
+
lines = []
|
151
|
+
for k, v in dct.items():
|
152
|
+
if not _is_not_empty(v):
|
153
|
+
continue
|
154
|
+
subrendered = _render_value(v)
|
155
|
+
# Indent subrendered if multiline
|
156
|
+
sublines = subrendered.split("\n")
|
157
|
+
if len(sublines) == 1:
|
158
|
+
if sublines[0].startswith("- "):
|
159
|
+
lines.append(f"- {k}: {sublines[0][2:]}")
|
160
|
+
else:
|
161
|
+
lines.append(f"- {k}: {sublines[0]}")
|
162
|
+
else:
|
163
|
+
lines.append(f"- {k}:")
|
164
|
+
for s in sublines:
|
165
|
+
lines.append(f" {s}")
|
166
|
+
return "\n".join(lines)
|
167
|
+
|
168
|
+
|
169
|
+
def _render_list(lst: list) -> str:
|
170
|
+
"""
|
171
|
+
Each item in the list gets a bullet. Nested structures are recursed.
|
172
|
+
"""
|
173
|
+
lines = []
|
174
|
+
for idx, item in enumerate(lst, 1):
|
175
|
+
sub = _render_value(item)
|
176
|
+
sublines = sub.split("\n")
|
177
|
+
if len(sublines) == 1:
|
178
|
+
if sublines[0].startswith("- "):
|
179
|
+
lines.append(f"- {sublines[0][2:]}")
|
180
|
+
else:
|
181
|
+
lines.append(f"- {sublines[0]}")
|
182
|
+
else:
|
183
|
+
lines.append("-")
|
184
|
+
lines.extend(f" {s}" for s in sublines)
|
185
|
+
return "\n".join(lines)
|
186
|
+
|
187
|
+
|
188
|
+
def _is_not_empty(x) -> bool:
|
189
|
+
"""
|
190
|
+
Returns True if x is neither None, nor empty string/list/dict.
|
191
|
+
"""
|
192
|
+
if x is None:
|
193
|
+
return False
|
194
|
+
if isinstance(x, (list, dict)) and not x:
|
195
|
+
return False
|
196
|
+
if isinstance(x, str) and not x.strip():
|
197
|
+
return False
|
198
|
+
return True
|
146
199
|
|
147
200
|
|
148
201
|
def format_image_content(
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.8.3"
|
lionagi-0.8.2/lionagi/version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.8.2"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|