lionagi 0.9.0__tar.gz → 0.9.1__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.9.0 → lionagi-0.9.1}/PKG-INFO +1 -1
- lionagi-0.9.1/lionagi/operations/ReAct/ReAct.py +351 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/ReAct/utils.py +8 -2
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/session/branch.py +71 -3
- lionagi-0.9.1/lionagi/version.py +1 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/pyproject.toml +1 -1
- {lionagi-0.9.0 → lionagi-0.9.1}/uv.lock +1 -1
- lionagi-0.9.0/lionagi/operations/ReAct/ReAct.py +0 -204
- lionagi-0.9.0/lionagi/version.py +0 -1
- {lionagi-0.9.0 → lionagi-0.9.1}/.env.example +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/FUNDING.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/dependabot.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/workflows/ci.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/workflows/docs.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.github/workflows/release.yml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.gitignore +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/.pre-commit-config.yaml +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/CONTRIBUTING.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/LICENSE +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/README.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/cookbooks/ch01_get_started.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/cookbooks/ch02_concepts.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/dev_tools/count_code_base_lines.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/Makefile +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/_static/custom.css +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/_templates/layout.html +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/conf.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/index.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/action.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/adapter.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/branch.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/branch_operations.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/concepts.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/element_id.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/event.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/form.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/graph.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/index.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/instruct.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/lib_file.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/lib_nested.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/lib_package.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/lib_schema.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/lib_validate.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/log.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/mail.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/message.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/models.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/operative_step.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/pile.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/processor.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/progression.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/service.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/session.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/modules/utils.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/tutorials/get_started.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/tutorials/get_started_pt2.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/tutorials/get_started_pt3.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/docs/tutorials/index.rst +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/_class_registry.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/_errors.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/_types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/package/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/package/imports.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/package/management.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/package/params.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/package/system.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/parse.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/token_transform/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/string_similarity.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/operate/operate.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/translate/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operations/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/function_calling.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/request_response_model.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/tool.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/action/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/forms/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/forms/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/forms/flow.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/forms/form.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/forms/report.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/instruct.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/instruct_collection.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/node.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/prompts.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/instruct/reason.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/field_model.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/model_params.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/note.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/operable_model.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/models/schema_model.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/operative.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/step.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/concurrent.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/concurrent_chunk.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/concurrent_sequential_chunk.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/params.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/sequential.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/sequential_chunk.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/sequential_concurrent_chunk.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/strategies/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/operatives/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/json_adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/pandas_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/pandas_/csv_adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/pandas_/excel_adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/pandas_/pd_series_adapter.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/adapters/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/protocols/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/chat_completion.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/match_endpoint.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/rate_limited_processor.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/endpoints/token_calculator.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/imodel.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/manager.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/anthropic_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/anthropic_/messages.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/exa_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/exa_/models.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/exa_/search.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/exa_/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/groq_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/groq_/chat_completions.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/openai_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/openai_/chat_completions.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/openrouter_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/openrouter_/chat_completions.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/perplexity_/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/perplexity_/chat_completions.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/perplexity_/models.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/providers/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/service/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/session/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/session/prompts.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/session/session.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/settings.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/tools/base.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/tools/types.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/lionagi/utils.py +0 -0
- {lionagi-0.9.0 → lionagi-0.9.1}/prompts/doc_style.md +0 -0
@@ -0,0 +1,351 @@
|
|
1
|
+
# Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
import logging
|
6
|
+
from collections.abc import AsyncGenerator
|
7
|
+
from typing import TYPE_CHECKING, Any, Literal
|
8
|
+
|
9
|
+
from pydantic import BaseModel
|
10
|
+
|
11
|
+
from lionagi.libs.schema.as_readable import as_readable
|
12
|
+
from lionagi.libs.validate.common_field_validators import (
|
13
|
+
validate_model_to_type,
|
14
|
+
)
|
15
|
+
from lionagi.operatives.models.field_model import FieldModel
|
16
|
+
from lionagi.operatives.models.model_params import ModelParams
|
17
|
+
from lionagi.operatives.types import Instruct
|
18
|
+
from lionagi.service.imodel import iModel
|
19
|
+
from lionagi.utils import copy
|
20
|
+
|
21
|
+
from .utils import Analysis, ReActAnalysis
|
22
|
+
|
23
|
+
if TYPE_CHECKING:
|
24
|
+
from lionagi.session.branch import Branch
|
25
|
+
|
26
|
+
|
27
|
+
async def ReAct(
|
28
|
+
branch: "Branch",
|
29
|
+
instruct: Instruct | dict[str, Any],
|
30
|
+
interpret: bool = False,
|
31
|
+
interpret_domain: str | None = None,
|
32
|
+
interpret_style: str | None = None,
|
33
|
+
interpret_sample: str | None = None,
|
34
|
+
interpret_model: str | None = None,
|
35
|
+
interpret_kwargs: dict | None = None,
|
36
|
+
tools: Any = None,
|
37
|
+
tool_schemas: Any = None,
|
38
|
+
response_format: type[BaseModel] | BaseModel = None,
|
39
|
+
intermediate_response_options: list[BaseModel] | BaseModel = None,
|
40
|
+
intermediate_listable: bool = False,
|
41
|
+
reasoning_effort: Literal["low", "medium", "high"] = None,
|
42
|
+
extension_allowed: bool = True,
|
43
|
+
max_extensions: int | None = 3,
|
44
|
+
response_kwargs: dict | None = None,
|
45
|
+
display_as: Literal["json", "yaml"] = "yaml",
|
46
|
+
return_analysis: bool = False,
|
47
|
+
analysis_model: iModel | None = None,
|
48
|
+
verbose_analysis: bool = False,
|
49
|
+
verbose_length: int = None,
|
50
|
+
**kwargs,
|
51
|
+
):
|
52
|
+
outs = []
|
53
|
+
if verbose_analysis:
|
54
|
+
async for i in ReActStream(
|
55
|
+
branch=branch,
|
56
|
+
instruct=instruct,
|
57
|
+
interpret=interpret,
|
58
|
+
interpret_domain=interpret_domain,
|
59
|
+
interpret_style=interpret_style,
|
60
|
+
interpret_sample=interpret_sample,
|
61
|
+
interpret_model=interpret_model,
|
62
|
+
interpret_kwargs=interpret_kwargs,
|
63
|
+
tools=tools,
|
64
|
+
tool_schemas=tool_schemas,
|
65
|
+
response_format=response_format,
|
66
|
+
intermediate_response_options=intermediate_response_options,
|
67
|
+
intermediate_listable=intermediate_listable,
|
68
|
+
reasoning_effort=reasoning_effort,
|
69
|
+
extension_allowed=extension_allowed,
|
70
|
+
max_extensions=max_extensions,
|
71
|
+
response_kwargs=response_kwargs,
|
72
|
+
analysis_model=analysis_model,
|
73
|
+
verbose_analysis=verbose_analysis,
|
74
|
+
display_as=display_as,
|
75
|
+
verbose_length=verbose_length,
|
76
|
+
**kwargs,
|
77
|
+
):
|
78
|
+
analysis, str_ = i
|
79
|
+
str_ += "\n---------\n"
|
80
|
+
as_readable(str_, md=True, display_str=True)
|
81
|
+
outs.append(analysis)
|
82
|
+
else:
|
83
|
+
async for i in ReActStream(
|
84
|
+
branch=branch,
|
85
|
+
instruct=instruct,
|
86
|
+
interpret=interpret,
|
87
|
+
interpret_domain=interpret_domain,
|
88
|
+
interpret_style=interpret_style,
|
89
|
+
interpret_sample=interpret_sample,
|
90
|
+
interpret_model=interpret_model,
|
91
|
+
interpret_kwargs=interpret_kwargs,
|
92
|
+
tools=tools,
|
93
|
+
tool_schemas=tool_schemas,
|
94
|
+
response_format=response_format,
|
95
|
+
intermediate_response_options=intermediate_response_options,
|
96
|
+
intermediate_listable=intermediate_listable,
|
97
|
+
reasoning_effort=reasoning_effort,
|
98
|
+
extension_allowed=extension_allowed,
|
99
|
+
max_extensions=max_extensions,
|
100
|
+
response_kwargs=response_kwargs,
|
101
|
+
analysis_model=analysis_model,
|
102
|
+
display_as=display_as,
|
103
|
+
verbose_length=verbose_length,
|
104
|
+
**kwargs,
|
105
|
+
):
|
106
|
+
outs.append(i)
|
107
|
+
if return_analysis:
|
108
|
+
return outs
|
109
|
+
return outs[-1]
|
110
|
+
|
111
|
+
|
112
|
+
async def ReActStream(
|
113
|
+
branch: "Branch",
|
114
|
+
instruct: Instruct | dict[str, Any],
|
115
|
+
interpret: bool = False,
|
116
|
+
interpret_domain: str | None = None,
|
117
|
+
interpret_style: str | None = None,
|
118
|
+
interpret_sample: str | None = None,
|
119
|
+
interpret_model: str | None = None,
|
120
|
+
interpret_kwargs: dict | None = None,
|
121
|
+
tools: Any = None,
|
122
|
+
tool_schemas: Any = None,
|
123
|
+
response_format: type[BaseModel] | BaseModel = None,
|
124
|
+
intermediate_response_options: list[BaseModel] | BaseModel = None,
|
125
|
+
intermediate_listable: bool = False,
|
126
|
+
reasoning_effort: Literal["low", "medium", "high"] = None,
|
127
|
+
extension_allowed: bool = True,
|
128
|
+
max_extensions: int | None = 3,
|
129
|
+
response_kwargs: dict | None = None,
|
130
|
+
analysis_model: iModel | None = None,
|
131
|
+
verbose_analysis: bool = False,
|
132
|
+
display_as: Literal["json", "yaml"] = "yaml",
|
133
|
+
verbose_length: int = None,
|
134
|
+
**kwargs,
|
135
|
+
) -> AsyncGenerator:
|
136
|
+
irfm: FieldModel | None = None
|
137
|
+
|
138
|
+
if intermediate_response_options is not None:
|
139
|
+
iro = (
|
140
|
+
[intermediate_response_options]
|
141
|
+
if not isinstance(intermediate_response_options, list)
|
142
|
+
else intermediate_response_options
|
143
|
+
)
|
144
|
+
field_models = []
|
145
|
+
for i in iro:
|
146
|
+
type_ = validate_model_to_type(None, i)
|
147
|
+
fm = FieldModel(
|
148
|
+
name=str(type_.__name__).lower(),
|
149
|
+
annotation=type_ | None,
|
150
|
+
validator=lambda cls, x: None if x == {} else x,
|
151
|
+
)
|
152
|
+
field_models.append(fm)
|
153
|
+
|
154
|
+
m_ = ModelParams(
|
155
|
+
name="IntermediateResponseOptions", field_models=field_models
|
156
|
+
).create_new_model()
|
157
|
+
|
158
|
+
irfm = FieldModel(
|
159
|
+
name="intermediate_response_options",
|
160
|
+
annotation=(
|
161
|
+
m_ | None if not intermediate_listable else list[m_] | None
|
162
|
+
),
|
163
|
+
description="Optional intermediate deliverable outputs. fill as needed ",
|
164
|
+
validator=lambda cls, x: None if not x else x,
|
165
|
+
)
|
166
|
+
|
167
|
+
# If no tools or tool schemas are provided, default to "all tools"
|
168
|
+
if not tools and not tool_schemas:
|
169
|
+
tools = True
|
170
|
+
|
171
|
+
# Possibly interpret the instruction to refine it
|
172
|
+
instruction_str = None
|
173
|
+
if interpret:
|
174
|
+
instruction_str = await branch.interpret(
|
175
|
+
str(
|
176
|
+
instruct.to_dict()
|
177
|
+
if isinstance(instruct, Instruct)
|
178
|
+
else instruct
|
179
|
+
),
|
180
|
+
domain=interpret_domain,
|
181
|
+
style=interpret_style,
|
182
|
+
sample_writing=interpret_sample,
|
183
|
+
interpret_model=interpret_model,
|
184
|
+
**(interpret_kwargs or {}),
|
185
|
+
)
|
186
|
+
if verbose_analysis:
|
187
|
+
str_ = "\n### Interpreted instruction:\n"
|
188
|
+
str_ += as_readable(
|
189
|
+
instruction_str,
|
190
|
+
md=True,
|
191
|
+
format_curly=True if display_as == "yaml" else False,
|
192
|
+
max_chars=verbose_length,
|
193
|
+
)
|
194
|
+
yield instruction_str, str_
|
195
|
+
else:
|
196
|
+
yield instruction_str
|
197
|
+
|
198
|
+
# Convert Instruct to dict if necessary
|
199
|
+
instruct_dict = (
|
200
|
+
instruct.to_dict()
|
201
|
+
if isinstance(instruct, Instruct)
|
202
|
+
else dict(instruct)
|
203
|
+
)
|
204
|
+
|
205
|
+
# Overwrite "instruction" with the interpreted prompt (if any) plus a note about expansions
|
206
|
+
max_ext_info = f"\nIf needed, you can do up to {max_extensions or 0 if extension_allowed else 0} expansions."
|
207
|
+
instruct_dict["instruction"] = (
|
208
|
+
instruction_str
|
209
|
+
or (instruct_dict.get("instruction") or "") # in case it's missing
|
210
|
+
) + max_ext_info
|
211
|
+
|
212
|
+
# Prepare a copy of user-provided kwargs for the first operate call
|
213
|
+
kwargs_for_operate = copy(kwargs)
|
214
|
+
kwargs_for_operate["actions"] = True
|
215
|
+
kwargs_for_operate["reason"] = True
|
216
|
+
|
217
|
+
# Step 1: Generate initial ReAct analysis
|
218
|
+
analysis: ReActAnalysis = await branch.operate(
|
219
|
+
instruct=instruct_dict,
|
220
|
+
response_format=ReActAnalysis,
|
221
|
+
tools=tools,
|
222
|
+
tool_schemas=tool_schemas,
|
223
|
+
chat_model=analysis_model or branch.chat_model,
|
224
|
+
**kwargs_for_operate,
|
225
|
+
)
|
226
|
+
# If verbose, show round #1 analysis
|
227
|
+
if verbose_analysis:
|
228
|
+
str_ = "\n### ReAct Round No.1 Analysis:\n"
|
229
|
+
str_ += as_readable(
|
230
|
+
analysis,
|
231
|
+
md=True,
|
232
|
+
format_curly=True if display_as == "yaml" else False,
|
233
|
+
max_chars=verbose_length,
|
234
|
+
)
|
235
|
+
yield analysis, str_
|
236
|
+
else:
|
237
|
+
yield analysis
|
238
|
+
|
239
|
+
# Validate and clamp max_extensions if needed
|
240
|
+
if max_extensions and max_extensions > 100:
|
241
|
+
logging.warning(
|
242
|
+
"max_extensions should not exceed 100; defaulting to 100."
|
243
|
+
)
|
244
|
+
max_extensions = 100
|
245
|
+
|
246
|
+
# Step 2: Possibly loop through expansions if extension_needed
|
247
|
+
extensions = max_extensions
|
248
|
+
round_count = 1
|
249
|
+
|
250
|
+
while (
|
251
|
+
extension_allowed and analysis.extension_needed
|
252
|
+
if hasattr(analysis, "extension_needed")
|
253
|
+
else (
|
254
|
+
analysis.get("extension_needed", None)
|
255
|
+
if isinstance(analysis, dict)
|
256
|
+
else False
|
257
|
+
)
|
258
|
+
and (extensions if max_extensions else 0) > 0
|
259
|
+
):
|
260
|
+
new_instruction = None
|
261
|
+
if extensions == max_extensions:
|
262
|
+
new_instruction = ReActAnalysis.FIRST_EXT_PROMPT.format(
|
263
|
+
extensions=extensions
|
264
|
+
)
|
265
|
+
else:
|
266
|
+
new_instruction = ReActAnalysis.CONTINUE_EXT_PROMPT.format(
|
267
|
+
extensions=extensions
|
268
|
+
)
|
269
|
+
|
270
|
+
operate_kwargs = copy(kwargs)
|
271
|
+
operate_kwargs["actions"] = True
|
272
|
+
operate_kwargs["reason"] = True
|
273
|
+
operate_kwargs["response_format"] = ReActAnalysis
|
274
|
+
operate_kwargs["action_strategy"] = analysis.action_strategy
|
275
|
+
if analysis.action_batch_size:
|
276
|
+
operate_kwargs["action_batch_size"] = analysis.action_batch_size
|
277
|
+
if irfm:
|
278
|
+
operate_kwargs["field_models"] = operate_kwargs.get(
|
279
|
+
"field_models", []
|
280
|
+
) + [irfm]
|
281
|
+
if reasoning_effort:
|
282
|
+
guide = None
|
283
|
+
if reasoning_effort == "low":
|
284
|
+
guide = "Quick concise reasoning.\n"
|
285
|
+
if reasoning_effort == "medium":
|
286
|
+
guide = "Reasonably balanced reasoning.\n"
|
287
|
+
if reasoning_effort == "high":
|
288
|
+
guide = "Thorough, try as hard as you can in reasoning.\n"
|
289
|
+
operate_kwargs["guidance"] = guide + operate_kwargs.get(
|
290
|
+
"guidance", ""
|
291
|
+
)
|
292
|
+
|
293
|
+
analysis = await branch.operate(
|
294
|
+
instruction=new_instruction,
|
295
|
+
tools=tools,
|
296
|
+
tool_schemas=tool_schemas,
|
297
|
+
**operate_kwargs,
|
298
|
+
)
|
299
|
+
round_count += 1
|
300
|
+
|
301
|
+
# If verbose, show round analysis
|
302
|
+
if verbose_analysis:
|
303
|
+
str_ = f"\n### ReAct Round No.{round_count} Analysis:\n"
|
304
|
+
|
305
|
+
str_ += as_readable(
|
306
|
+
analysis,
|
307
|
+
md=True,
|
308
|
+
format_curly=True if display_as == "yaml" else False,
|
309
|
+
max_chars=verbose_length,
|
310
|
+
)
|
311
|
+
|
312
|
+
yield analysis, str_
|
313
|
+
else:
|
314
|
+
yield analysis
|
315
|
+
|
316
|
+
if extensions:
|
317
|
+
extensions -= 1
|
318
|
+
|
319
|
+
# Step 3: Produce final answer by calling branch.instruct with an answer prompt
|
320
|
+
answer_prompt = ReActAnalysis.ANSWER_PROMPT.format(
|
321
|
+
instruction=instruct_dict["instruction"]
|
322
|
+
)
|
323
|
+
if not response_format:
|
324
|
+
response_format = Analysis
|
325
|
+
|
326
|
+
try:
|
327
|
+
out = await branch.operate(
|
328
|
+
instruction=answer_prompt,
|
329
|
+
response_format=response_format,
|
330
|
+
**(response_kwargs or {}),
|
331
|
+
)
|
332
|
+
except Exception:
|
333
|
+
out = branch.msgs.last_response.response
|
334
|
+
|
335
|
+
if isinstance(out, Analysis):
|
336
|
+
out = out.answer
|
337
|
+
|
338
|
+
if verbose_analysis:
|
339
|
+
str_ = "\n### ReAct Final Answer:\n"
|
340
|
+
str_ += as_readable(
|
341
|
+
out,
|
342
|
+
md=True,
|
343
|
+
format_curly=True if display_as == "yaml" else False,
|
344
|
+
max_chars=verbose_length,
|
345
|
+
)
|
346
|
+
yield out, str_
|
347
|
+
else:
|
348
|
+
yield out
|
349
|
+
|
350
|
+
|
351
|
+
# TODO: Do partial intermeditate output for longer analysis with form and report
|
@@ -36,7 +36,9 @@ class ReActAnalysis(BaseModel):
|
|
36
36
|
FIRST_EXT_PROMPT: ClassVar[str] = (
|
37
37
|
"You can perform multiple reason-action steps for accuracy. "
|
38
38
|
"If you are not ready to finalize, set extension_needed to True. "
|
39
|
-
"
|
39
|
+
"hint: you should set extension_needed to True if the overall goal"
|
40
|
+
"is not yet achieved. Do not set it to False, if you are just providing"
|
41
|
+
"an interim answer. You have up to {extensions} expansions. Please continue."
|
40
42
|
)
|
41
43
|
CONTINUE_EXT_PROMPT: ClassVar[str] = (
|
42
44
|
"Another round is available. You may do multiple actions if needed. "
|
@@ -49,7 +51,11 @@ class ReActAnalysis(BaseModel):
|
|
49
51
|
|
50
52
|
analysis: str = Field(
|
51
53
|
...,
|
52
|
-
description=
|
54
|
+
description=(
|
55
|
+
"Free-form reasoning or chain-of-thought summary. Must be consistent with"
|
56
|
+
" the plan. Commonly used for divide_and_conquer, brainstorming, reflections, "
|
57
|
+
"regurgitation, review_checkpoints ...etc."
|
58
|
+
),
|
53
59
|
)
|
54
60
|
|
55
61
|
planned_actions: list[PlannedAction] = Field(
|
@@ -2,6 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
4
4
|
|
5
|
+
from collections.abc import AsyncGenerator
|
5
6
|
from enum import Enum
|
6
7
|
from typing import TYPE_CHECKING, Any, Literal
|
7
8
|
|
@@ -9,6 +10,7 @@ import pandas as pd
|
|
9
10
|
from jinja2 import Template
|
10
11
|
from pydantic import BaseModel, Field, JsonValue, PrivateAttr
|
11
12
|
|
13
|
+
from lionagi.libs.schema.as_readable import as_readable
|
12
14
|
from lionagi.operatives.types import (
|
13
15
|
ActionManager,
|
14
16
|
FieldModel,
|
@@ -1621,13 +1623,18 @@ class Branch(Element, Communicatable, Relational):
|
|
1621
1623
|
interpret_domain: str | None = None,
|
1622
1624
|
interpret_style: str | None = None,
|
1623
1625
|
interpret_sample: str | None = None,
|
1626
|
+
interpret_model: str | None = None,
|
1624
1627
|
interpret_kwargs: dict | None = None,
|
1625
1628
|
tools: Any = None,
|
1626
1629
|
tool_schemas: Any = None,
|
1627
|
-
response_format: type[BaseModel] = None,
|
1628
|
-
|
1629
|
-
|
1630
|
+
response_format: type[BaseModel] | BaseModel = None,
|
1631
|
+
intermediate_response_options: list[BaseModel] | BaseModel = None,
|
1632
|
+
intermediate_listable: bool = False,
|
1633
|
+
reasoning_effort: Literal["low", "medium", "high"] = None,
|
1634
|
+
extension_allowed: bool = True,
|
1635
|
+
max_extensions: int | None = 3,
|
1630
1636
|
response_kwargs: dict | None = None,
|
1637
|
+
display_as: Literal["json", "yaml"] = "yaml",
|
1631
1638
|
return_analysis: bool = False,
|
1632
1639
|
analysis_model: iModel | None = None,
|
1633
1640
|
verbose: bool = False,
|
@@ -1721,8 +1728,69 @@ class Branch(Element, Communicatable, Relational):
|
|
1721
1728
|
verbose_action=verbose,
|
1722
1729
|
verbose_analysis=verbose,
|
1723
1730
|
verbose_length=verbose_length,
|
1731
|
+
interpret_model=interpret_model,
|
1732
|
+
intermediate_response_options=intermediate_response_options,
|
1733
|
+
intermediate_listable=intermediate_listable,
|
1734
|
+
reasoning_effort=reasoning_effort,
|
1735
|
+
display_as=display_as,
|
1724
1736
|
**kwargs,
|
1725
1737
|
)
|
1726
1738
|
|
1739
|
+
async def ReActStream(
|
1740
|
+
self,
|
1741
|
+
instruct: Instruct | dict[str, Any],
|
1742
|
+
interpret: bool = False,
|
1743
|
+
interpret_domain: str | None = None,
|
1744
|
+
interpret_style: str | None = None,
|
1745
|
+
interpret_sample: str | None = None,
|
1746
|
+
interpret_model: str | None = None,
|
1747
|
+
interpret_kwargs: dict | None = None,
|
1748
|
+
tools: Any = None,
|
1749
|
+
tool_schemas: Any = None,
|
1750
|
+
response_format: type[BaseModel] | BaseModel = None,
|
1751
|
+
intermediate_response_options: list[BaseModel] | BaseModel = None,
|
1752
|
+
intermediate_listable: bool = False,
|
1753
|
+
reasoning_effort: Literal["low", "medium", "high"] = None,
|
1754
|
+
extension_allowed: bool = True,
|
1755
|
+
max_extensions: int | None = 3,
|
1756
|
+
response_kwargs: dict | None = None,
|
1757
|
+
analysis_model: iModel | None = None,
|
1758
|
+
verbose: bool = False,
|
1759
|
+
display_as: Literal["json", "yaml"] = "yaml",
|
1760
|
+
verbose_length: int = None,
|
1761
|
+
**kwargs,
|
1762
|
+
) -> AsyncGenerator:
|
1763
|
+
from lionagi.operations.ReAct.ReAct import ReActStream
|
1764
|
+
|
1765
|
+
async for result in ReActStream(
|
1766
|
+
self,
|
1767
|
+
instruct,
|
1768
|
+
interpret=interpret,
|
1769
|
+
interpret_domain=interpret_domain,
|
1770
|
+
interpret_style=interpret_style,
|
1771
|
+
interpret_sample=interpret_sample,
|
1772
|
+
interpret_model=interpret_model,
|
1773
|
+
interpret_kwargs=interpret_kwargs,
|
1774
|
+
tools=tools,
|
1775
|
+
tool_schemas=tool_schemas,
|
1776
|
+
response_format=response_format,
|
1777
|
+
intermediate_response_options=intermediate_response_options,
|
1778
|
+
intermediate_listable=intermediate_listable,
|
1779
|
+
reasoning_effort=reasoning_effort,
|
1780
|
+
extension_allowed=extension_allowed,
|
1781
|
+
max_extensions=max_extensions,
|
1782
|
+
response_kwargs=response_kwargs,
|
1783
|
+
analysis_model=analysis_model,
|
1784
|
+
verbose_analysis=True,
|
1785
|
+
display_as=display_as,
|
1786
|
+
verbose_length=verbose_length,
|
1787
|
+
**kwargs,
|
1788
|
+
):
|
1789
|
+
analysis, str_ = result
|
1790
|
+
if verbose:
|
1791
|
+
str_ += "\n---------\n"
|
1792
|
+
as_readable(str_, md=True, display_str=True)
|
1793
|
+
yield analysis
|
1794
|
+
|
1727
1795
|
|
1728
1796
|
# File: lionagi/session/branch.py
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.9.1"
|