lionagi 0.10.1__tar.gz → 0.10.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.10.1 → lionagi-0.10.3}/PKG-INFO +3 -3
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/_types.py +1 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/toml_adapter.py +1 -1
- lionagi-0.10.3/lionagi/fields/__init__.py +29 -0
- {lionagi-0.10.1/lionagi/libs → lionagi-0.10.3/lionagi}/fields/action.py +0 -2
- lionagi-0.10.3/lionagi/fields/base.py +151 -0
- {lionagi-0.10.1/lionagi/libs → lionagi-0.10.3/lionagi}/fields/file.py +71 -40
- {lionagi-0.10.1/lionagi/libs → lionagi-0.10.3/lionagi}/fields/instruct.py +1 -3
- {lionagi-0.10.1/lionagi/libs → lionagi-0.10.3/lionagi}/fields/reason.py +4 -19
- lionagi-0.10.3/lionagi/libs/package/imports.py +21 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/base.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/ReAct/ReAct.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/ReAct/utils.py +36 -15
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/_act/act.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/brainstorm/brainstorm.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/instruct/instruct.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/operate/operate.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/plan/plan.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/select/select.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/utils.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/action/manager.py +1 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/operatives/step.py +2 -2
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/session/branch.py +6 -60
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/utils.py +214 -0
- lionagi-0.10.3/lionagi/version.py +1 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/pyproject.toml +3 -3
- {lionagi-0.10.1 → lionagi-0.10.3}/uv.lock +6 -6
- lionagi-0.10.1/lionagi/libs/fields/__init__.py +0 -36
- lionagi-0.10.1/lionagi/libs/package/imports.py +0 -166
- lionagi-0.10.1/lionagi/version.py +0 -1
- {lionagi-0.10.1 → lionagi-0.10.3}/.env.example +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/FUNDING.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/dependabot.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/workflows/ci.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/workflows/docs.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.github/workflows/release.yml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.gitignore +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/.pre-commit-config.yaml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/CONTRIBUTING.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/LICENSE +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/README.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/cookbooks/ch01_get_started.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/cookbooks/ch02_concepts.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/dev_tools/count_code_base_lines.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/Makefile +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/_static/custom.css +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/_templates/layout.html +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/conf.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/index.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/action.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/adapter.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/branch.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/branch_operations.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/concepts.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/element_id.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/event.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/form.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/graph.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/index.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/instruct.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/lib_file.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/lib_nested.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/lib_package.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/lib_schema.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/lib_validate.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/log.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/mail.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/message.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/models.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/operative_step.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/pile.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/processor.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/progression.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/service.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/session.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/modules/utils.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/tutorials/get_started.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/tutorials/get_started_pt2.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/tutorials/get_started_pt3.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/docs/tutorials/index.rst +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/_class_registry.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/_errors.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/json_adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/pandas_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/pandas_/csv_adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/pandas_/excel_adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/pandas_/pd_dataframe_adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/pandas_/pd_series_adapter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/adapters/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/concat_files.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/package/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/package/management.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/package/params.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/package/system.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/parse.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/base.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/token_transform/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/string_similarity.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/field_model.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/model_params.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/note.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/translate/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/operations/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/action/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/action/function_calling.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/forms/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/operatives/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/protocols/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/base.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/chat_completion.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/match_endpoint.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/rate_limited_processor.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/endpoints/token_calculator.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/imodel.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/anthropic_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/anthropic_/messages.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/exa_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/exa_/models.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/exa_/search.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/exa_/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/groq_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/groq_/chat_completions.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/ollama_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/ollama_/chat_completions.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/openai_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/openai_/chat_completions.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/openai_/spec.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/openrouter_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/openrouter_/chat_completions.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/perplexity_/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/perplexity_/chat_completions.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/perplexity_/models.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/providers/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/service/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/session/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/session/prompts.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/session/session.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/settings.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/base.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/browser/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/browser/providers/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/browser/providers/browser_use_.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/coder.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/providers/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/providers/aider_.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/providers/e2b_.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/code/sandbox.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/manager.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/providers/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/providers/docling_.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/file/writer.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/query/__init__.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/lionagi/tools/types.py +0 -0
- {lionagi-0.10.1 → lionagi-0.10.3}/prompts/doc_style.md +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lionagi
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.3
|
4
4
|
Summary: An Intelligence Operating System.
|
5
5
|
Author-email: HaiyangLi <quantocean.li@gmail.com>
|
6
6
|
License: Apache License
|
@@ -221,11 +221,11 @@ Classifier: Programming Language :: Python :: 3.13
|
|
221
221
|
Requires-Python: >=3.10
|
222
222
|
Requires-Dist: aiocache>=0.12.0
|
223
223
|
Requires-Dist: aiohttp>=3.11.0
|
224
|
-
Requires-Dist: jinja2>=3.
|
224
|
+
Requires-Dist: jinja2>=3.0.0
|
225
225
|
Requires-Dist: pandas>=2.0.0
|
226
226
|
Requires-Dist: pillow>=10.0.0
|
227
227
|
Requires-Dist: pydantic>=2.0.0
|
228
|
-
Requires-Dist: python-dotenv>=1.0
|
228
|
+
Requires-Dist: python-dotenv>=1.1.0
|
229
229
|
Requires-Dist: tiktoken>=0.8.0
|
230
230
|
Requires-Dist: toml>=0.9.0
|
231
231
|
Provides-Extra: llms
|
@@ -141,7 +141,7 @@ class TomlFileAdapter(Adapter):
|
|
141
141
|
dict | list[dict]
|
142
142
|
The loaded data from file.
|
143
143
|
"""
|
144
|
-
with open(obj,
|
144
|
+
with open(obj, encoding="utf-8") as f:
|
145
145
|
result = toml.load(f, **kwargs)
|
146
146
|
|
147
147
|
# Handle array of tables in TOML for "many" case
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from .action import ActionRequestModel, ActionResponseModel
|
2
|
+
from .base import (
|
3
|
+
CodeSnippet,
|
4
|
+
Outline,
|
5
|
+
OutlineItem,
|
6
|
+
Section,
|
7
|
+
Source,
|
8
|
+
TextSnippet,
|
9
|
+
)
|
10
|
+
from .file import CodeFile, Documentation, File
|
11
|
+
from .instruct import Instruct, InstructResponse
|
12
|
+
from .reason import Reason
|
13
|
+
|
14
|
+
__all__ = (
|
15
|
+
"ActionRequestModel",
|
16
|
+
"ActionResponseModel",
|
17
|
+
"Source",
|
18
|
+
"TextSnippet",
|
19
|
+
"CodeSnippet",
|
20
|
+
"Section",
|
21
|
+
"OutlineItem",
|
22
|
+
"Outline",
|
23
|
+
"File",
|
24
|
+
"CodeFile",
|
25
|
+
"Documentation",
|
26
|
+
"Instruct",
|
27
|
+
"InstructResponse",
|
28
|
+
"Reason",
|
29
|
+
)
|
@@ -0,0 +1,151 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
from pydantic import Field, HttpUrl
|
4
|
+
|
5
|
+
from lionagi.models import HashableModel
|
6
|
+
|
7
|
+
__all__ = (
|
8
|
+
"Source",
|
9
|
+
"TextSnippet",
|
10
|
+
"CodeSnippet",
|
11
|
+
"Section",
|
12
|
+
"OutlineItem",
|
13
|
+
"Outline",
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
class Source(HashableModel):
|
18
|
+
"""
|
19
|
+
Represents a citation or external source, such as:
|
20
|
+
- a website,
|
21
|
+
- documentation link,
|
22
|
+
- research paper,
|
23
|
+
- or any external resource.
|
24
|
+
"""
|
25
|
+
|
26
|
+
title: str = Field(
|
27
|
+
...,
|
28
|
+
description="Short label or title for the reference (e.g. 'Pydantic Docs', 'RFC 3986').",
|
29
|
+
)
|
30
|
+
|
31
|
+
url: str | HttpUrl | None = Field(
|
32
|
+
None,
|
33
|
+
description="Full URL or local path pointing to the resource. Must conform to standard URL format.",
|
34
|
+
)
|
35
|
+
|
36
|
+
note: str | None = Field(
|
37
|
+
default=None,
|
38
|
+
description=(
|
39
|
+
"Optional additional note explaining why this reference is relevant or what it contains."
|
40
|
+
),
|
41
|
+
)
|
42
|
+
|
43
|
+
|
44
|
+
class SnippetType(str, Enum):
|
45
|
+
TEXT = "text"
|
46
|
+
CODE = "code"
|
47
|
+
|
48
|
+
|
49
|
+
class TextSnippet(HashableModel):
|
50
|
+
"""
|
51
|
+
Specialized snippet for textual/prose content.
|
52
|
+
"""
|
53
|
+
|
54
|
+
type: SnippetType = Field(
|
55
|
+
SnippetType.TEXT,
|
56
|
+
description=(
|
57
|
+
"Must be 'text' for textual snippets. Ensures explicit type distinction."
|
58
|
+
),
|
59
|
+
)
|
60
|
+
content: str = Field(
|
61
|
+
...,
|
62
|
+
description=(
|
63
|
+
"The actual text. Can be a paragraph, bullet list, or any narrative content."
|
64
|
+
),
|
65
|
+
)
|
66
|
+
|
67
|
+
|
68
|
+
class CodeSnippet(HashableModel):
|
69
|
+
"""
|
70
|
+
Specialized snippet for source code or command-line examples.
|
71
|
+
"""
|
72
|
+
|
73
|
+
type: SnippetType = Field(
|
74
|
+
SnippetType.CODE,
|
75
|
+
description=(
|
76
|
+
"Must be 'code' for code snippets. Allows separate handling or formatting."
|
77
|
+
),
|
78
|
+
)
|
79
|
+
content: str = Field(
|
80
|
+
...,
|
81
|
+
description=(
|
82
|
+
"The actual code or command sequence. Should be well-formatted so it can be rendered properly."
|
83
|
+
),
|
84
|
+
)
|
85
|
+
|
86
|
+
|
87
|
+
class Section(HashableModel):
|
88
|
+
"""
|
89
|
+
A single section of a document or article. Each section has:
|
90
|
+
- A title
|
91
|
+
- A sequential list of content snippets (text or code),
|
92
|
+
which appear in the intended reading order.
|
93
|
+
- Optional sources specifically cited in this section.
|
94
|
+
"""
|
95
|
+
|
96
|
+
title: str = Field(
|
97
|
+
...,
|
98
|
+
description=(
|
99
|
+
"The section heading or label, e.g., 'Introduction', 'Implementation Steps'."
|
100
|
+
),
|
101
|
+
)
|
102
|
+
snippets: list[TextSnippet | CodeSnippet] = Field(
|
103
|
+
default_factory=list,
|
104
|
+
description=(
|
105
|
+
"Ordered list of content snippets. Could be multiple text blocks, code examples, etc."
|
106
|
+
),
|
107
|
+
)
|
108
|
+
|
109
|
+
sources: list[Source] = Field(
|
110
|
+
default_factory=list,
|
111
|
+
description=(
|
112
|
+
"References specifically cited in this section. "
|
113
|
+
"If sources are stored at the doc-level, this can be omitted."
|
114
|
+
),
|
115
|
+
)
|
116
|
+
|
117
|
+
|
118
|
+
class OutlineItem(HashableModel):
|
119
|
+
"""
|
120
|
+
Represents a single outline item, which could become a full section later.
|
121
|
+
"""
|
122
|
+
|
123
|
+
heading: str = Field(
|
124
|
+
...,
|
125
|
+
description="Short name or label for this item, e.g., 'Chapter 1: Basics'.",
|
126
|
+
)
|
127
|
+
summary: str | None = Field(
|
128
|
+
default=None,
|
129
|
+
description=(
|
130
|
+
"A brief description of what this section will cover, if known."
|
131
|
+
),
|
132
|
+
)
|
133
|
+
|
134
|
+
|
135
|
+
class Outline(HashableModel):
|
136
|
+
"""
|
137
|
+
A top-level outline for a document or article.
|
138
|
+
Usually used in early planning stages.
|
139
|
+
"""
|
140
|
+
|
141
|
+
topic: str = Field(
|
142
|
+
..., description="Working title or overarching topic of the document."
|
143
|
+
)
|
144
|
+
items: list[OutlineItem] = Field(
|
145
|
+
default_factory=list,
|
146
|
+
description="List of major outline points or sections planned.",
|
147
|
+
)
|
148
|
+
notes: str | None = Field(
|
149
|
+
default=None,
|
150
|
+
description="Any additional remarks, questions, or brainstorming notes for the outline.",
|
151
|
+
)
|
@@ -1,26 +1,29 @@
|
|
1
1
|
from pathlib import Path
|
2
2
|
|
3
|
-
from pydantic import
|
3
|
+
from pydantic import Field, field_validator
|
4
4
|
|
5
|
-
from
|
5
|
+
from .base import HashableModel, Source
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
__all__ = (
|
8
|
+
"File",
|
9
|
+
"CodeFile",
|
10
|
+
"Documentation",
|
11
|
+
)
|
11
12
|
|
12
13
|
|
13
|
-
class File(
|
14
|
+
class File(HashableModel):
|
14
15
|
"""
|
15
|
-
Represents a generic file with an optional name, content, and brief
|
16
|
-
Useful for capturing and validating metadata about any
|
16
|
+
Represents a generic file with an optional name, content, and brief
|
17
|
+
description. Useful for capturing and validating metadata about any
|
18
|
+
kind of file within a project.
|
17
19
|
"""
|
18
20
|
|
19
21
|
file_name: str | None = Field(
|
20
22
|
default=None,
|
21
23
|
description=(
|
22
|
-
"Provide the name of the file or its relative path in the
|
23
|
-
"If an absolute path is given, it will be converted
|
24
|
+
"Provide the name of the file or its relative path in the "
|
25
|
+
"project. If an absolute path is given, it will be converted"
|
26
|
+
" to a string. "
|
24
27
|
),
|
25
28
|
examples=[
|
26
29
|
"session.py",
|
@@ -32,8 +35,8 @@ class File(BaseModel):
|
|
32
35
|
default=None,
|
33
36
|
description=(
|
34
37
|
"Paste or generate the full textual content of the file here. "
|
35
|
-
"For example, this might include plain text, Markdown, or any
|
36
|
-
"
|
38
|
+
"For example, this might include plain text, Markdown, or any "
|
39
|
+
"other text format.\nExamples:\n"
|
37
40
|
" - '# My Title\\nSome description...'\n"
|
38
41
|
" - 'function greet() { return \"Hello\"; }'"
|
39
42
|
),
|
@@ -41,8 +44,9 @@ class File(BaseModel):
|
|
41
44
|
description: str | None = Field(
|
42
45
|
default=None,
|
43
46
|
description=(
|
44
|
-
"Briefly explain the file's purpose or function within the
|
45
|
-
"This can be a short summary describing why this
|
47
|
+
"Briefly explain the file's purpose or function within the "
|
48
|
+
"project. This can be a short summary describing why this "
|
49
|
+
"file is needed and/or what it does."
|
46
50
|
),
|
47
51
|
examples=[
|
48
52
|
"Manages user session logic for the LionAGI framework.",
|
@@ -56,6 +60,38 @@ class File(BaseModel):
|
|
56
60
|
return str(value)
|
57
61
|
return value
|
58
62
|
|
63
|
+
def render_content(
|
64
|
+
self,
|
65
|
+
header: str | None = None,
|
66
|
+
footer: str | None = None,
|
67
|
+
) -> str:
|
68
|
+
text = f"\n{header}\n\n" if header else ""
|
69
|
+
text += self.content if self.content else ""
|
70
|
+
if not footer:
|
71
|
+
return text
|
72
|
+
return text + f"\n\n{footer}\n"
|
73
|
+
|
74
|
+
def persist(
|
75
|
+
self,
|
76
|
+
directory: Path | str,
|
77
|
+
overwrite: bool = True,
|
78
|
+
timestamp: bool = False,
|
79
|
+
random_hash_digits: int = None,
|
80
|
+
header: str | None = None,
|
81
|
+
footer: str | None = None,
|
82
|
+
) -> Path:
|
83
|
+
from lionagi.utils import create_path
|
84
|
+
|
85
|
+
fp = create_path(
|
86
|
+
directory=directory,
|
87
|
+
filename=self.file_name,
|
88
|
+
file_exist_ok=overwrite,
|
89
|
+
timestamp=timestamp,
|
90
|
+
random_hash_digits=random_hash_digits,
|
91
|
+
)
|
92
|
+
fp.write_text(self.render_content(header=header, footer=footer))
|
93
|
+
return fp
|
94
|
+
|
59
95
|
|
60
96
|
class CodeFile(File):
|
61
97
|
"""
|
@@ -83,7 +119,7 @@ class CodeFile(File):
|
|
83
119
|
default=None,
|
84
120
|
description=(
|
85
121
|
"Provide or generate the **full source code**. This should be the primary text content "
|
86
|
-
"of the code file, including all function/class definitions.\
|
122
|
+
"of the code file, including all function/class definitions.\nNo md codeblock, only raw code"
|
87
123
|
),
|
88
124
|
examples=[
|
89
125
|
'def my_function():\\n print("Hello, world!")',
|
@@ -112,10 +148,6 @@ class Documentation(File):
|
|
112
148
|
"Provide the primary Markdown (or similar) content for the documentation. "
|
113
149
|
"This can include headings, bullet points, tables, code snippets, etc.\n"
|
114
150
|
),
|
115
|
-
examples=[
|
116
|
-
"# Getting Started\\nThis guide walks you through ...",
|
117
|
-
"# API Reference\\n## Session Class\\n...",
|
118
|
-
],
|
119
151
|
)
|
120
152
|
sources: list[Source] | None = Field(
|
121
153
|
default=None,
|
@@ -125,23 +157,22 @@ class Documentation(File):
|
|
125
157
|
),
|
126
158
|
)
|
127
159
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
)
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
# File: lionagi/libs/fields/file.py
|
160
|
+
def render_content(
|
161
|
+
self,
|
162
|
+
header: str | None = None,
|
163
|
+
footer: str | None = None,
|
164
|
+
include_source: bool = False,
|
165
|
+
) -> str:
|
166
|
+
"""
|
167
|
+
Renders the documentation content, optionally including citations for sources.
|
168
|
+
"""
|
169
|
+
footer = footer or ""
|
170
|
+
if include_source and self.sources:
|
171
|
+
footer = "\n\n## Sources\n"
|
172
|
+
for source in self.sources:
|
173
|
+
footer += f"- [{source.title}]({source.url})\n"
|
174
|
+
footer += f" - {source.note}\n" if source.note else ""
|
175
|
+
return super().render_content(header=header, footer=footer)
|
176
|
+
|
177
|
+
|
178
|
+
# File: lionagi/fields/file.py
|
@@ -16,8 +16,6 @@ from lionagi.utils import to_num
|
|
16
16
|
__all__ = (
|
17
17
|
"Instruct",
|
18
18
|
"InstructResponse",
|
19
|
-
"INSTRUCT_FIELD",
|
20
|
-
"LIST_INSTRUCT_FIELD",
|
21
19
|
)
|
22
20
|
|
23
21
|
|
@@ -150,4 +148,4 @@ LIST_INSTRUCT_FIELD_MODEL = FieldModel(
|
|
150
148
|
default=None,
|
151
149
|
)
|
152
150
|
|
153
|
-
# File: lionagi/
|
151
|
+
# File: lionagi/fields/instruct.py
|
@@ -7,12 +7,7 @@ from pydantic import BaseModel, Field, field_validator
|
|
7
7
|
from lionagi.models import FieldModel
|
8
8
|
from lionagi.utils import to_num
|
9
9
|
|
10
|
-
__all__ = (
|
11
|
-
"Reason",
|
12
|
-
"REASON_FIELD",
|
13
|
-
"CONFIDENCE_SCORE_FIELD",
|
14
|
-
"validate_confidence_score",
|
15
|
-
)
|
10
|
+
__all__ = ("Reason",)
|
16
11
|
|
17
12
|
|
18
13
|
class Reason(BaseModel):
|
@@ -27,10 +22,9 @@ class Reason(BaseModel):
|
|
27
22
|
"how well you've met user expectations. Use this guide:\n"
|
28
23
|
" • 1.0: Highly confident\n"
|
29
24
|
" • 0.8-1.0: Reasonably sure\n"
|
30
|
-
" • 0.5-0.8: Re-check or
|
31
|
-
" • 0.0-0.5: Off track"
|
25
|
+
" • 0.5-0.8: Re-check, refine or backtrack\n"
|
26
|
+
" • 0.0-0.5: Off track, stop"
|
32
27
|
),
|
33
|
-
examples=[0.821, 0.257, 0.923, 0.439],
|
34
28
|
)
|
35
29
|
|
36
30
|
@field_validator("confidence_score", mode="before")
|
@@ -51,15 +45,6 @@ def validate_confidence_score(cls, v):
|
|
51
45
|
return -1
|
52
46
|
|
53
47
|
|
54
|
-
CONFIDENCE_SCORE_FIELD = FieldModel(
|
55
|
-
name="confidence_score",
|
56
|
-
annotation=float | None,
|
57
|
-
default=None,
|
58
|
-
validator=validate_confidence_score,
|
59
|
-
validator_kwargs={"mode": "before"},
|
60
|
-
)
|
61
|
-
|
62
|
-
|
63
48
|
REASON_FIELD = FieldModel(
|
64
49
|
name="reason",
|
65
50
|
annotation=Reason | None,
|
@@ -67,4 +52,4 @@ REASON_FIELD = FieldModel(
|
|
67
52
|
description="**Provide a concise reason for the decision made.**",
|
68
53
|
)
|
69
54
|
|
70
|
-
# File: lionagi/
|
55
|
+
# File: lionagi/fields/reason.py
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
from lionagi.utils import (
|
6
|
+
check_import,
|
7
|
+
import_module,
|
8
|
+
install_import,
|
9
|
+
is_import_installed,
|
10
|
+
run_package_manager_command,
|
11
|
+
)
|
12
|
+
|
13
|
+
# backward compatibility
|
14
|
+
|
15
|
+
__all__ = (
|
16
|
+
"run_package_manager_command",
|
17
|
+
"check_import",
|
18
|
+
"import_module",
|
19
|
+
"install_import",
|
20
|
+
"is_import_installed",
|
21
|
+
)
|
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, Any, Literal
|
|
8
8
|
|
9
9
|
from pydantic import BaseModel
|
10
10
|
|
11
|
-
from lionagi.
|
11
|
+
from lionagi.fields.instruct import Instruct
|
12
12
|
from lionagi.libs.schema.as_readable import as_readable
|
13
13
|
from lionagi.libs.validate.common_field_validators import (
|
14
14
|
validate_model_to_type,
|
@@ -4,34 +4,45 @@
|
|
4
4
|
|
5
5
|
from typing import ClassVar, Literal
|
6
6
|
|
7
|
-
from pydantic import
|
7
|
+
from pydantic import Field, field_validator
|
8
8
|
|
9
|
+
from lionagi.models import HashableModel
|
9
10
|
|
10
|
-
|
11
|
+
|
12
|
+
class PlannedAction(HashableModel):
|
11
13
|
"""
|
12
|
-
Short descriptor for an upcoming action/tool invocation the LLM wants to
|
13
|
-
The model can hold multiple actions in a single round if needed.
|
14
|
+
Short descriptor for an upcoming action/tool invocation the LLM wants to
|
15
|
+
perform. The model can hold multiple actions in a single round if needed.
|
14
16
|
"""
|
15
17
|
|
16
|
-
action_type: str = Field(
|
17
|
-
|
18
|
-
description=
|
18
|
+
action_type: str | None = Field(
|
19
|
+
default=None,
|
20
|
+
description=(
|
21
|
+
"The name or type of tool/action to invoke. "
|
22
|
+
"(e.g., 'search_exa', 'reader_tool')"
|
23
|
+
),
|
19
24
|
)
|
20
|
-
description: str = Field(
|
21
|
-
|
22
|
-
description=
|
25
|
+
description: str | None = Field(
|
26
|
+
default=None,
|
27
|
+
description=(
|
28
|
+
"A short description of the action to perform. "
|
29
|
+
"This should be a concise summary of what the action entails."
|
30
|
+
"Also include your rationale for this action, if applicable."
|
31
|
+
),
|
23
32
|
)
|
24
33
|
|
25
34
|
|
26
|
-
class ReActAnalysis(
|
35
|
+
class ReActAnalysis(HashableModel):
|
27
36
|
"""
|
28
37
|
Captures the ReAct chain-of-thought output each round:
|
29
38
|
1) The LLM's 'analysis' (reasoning),
|
30
39
|
2) A list of planned actions to perform before finalizing,
|
31
40
|
3) Indication whether more expansions/rounds are needed,
|
32
41
|
4) Additional tuning knobs: how to handle validation, how to execute actions, etc.
|
33
|
-
|
34
|
-
|
42
|
+
|
43
|
+
Note:
|
44
|
+
- Retain from repeating yourself
|
45
|
+
- use the most efficient way to achieve the goal to user's satisfaction
|
35
46
|
"""
|
36
47
|
|
37
48
|
# Standard ReAct strings for controlling expansions:
|
@@ -101,6 +112,16 @@ class ReActAnalysis(BaseModel):
|
|
101
112
|
)
|
102
113
|
|
103
114
|
|
104
|
-
class Analysis(
|
115
|
+
class Analysis(HashableModel):
|
116
|
+
|
117
|
+
answer: str | None = None
|
105
118
|
|
106
|
-
answer
|
119
|
+
@field_validator("answer", mode="before")
|
120
|
+
def _validate_answer(cls, value):
|
121
|
+
if not value:
|
122
|
+
return None
|
123
|
+
if isinstance(value, str) and not value.strip():
|
124
|
+
return None
|
125
|
+
if not isinstance(value, str):
|
126
|
+
raise ValueError("Answer must be a non-empty string.")
|
127
|
+
return value.strip()
|
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING
|
|
7
7
|
|
8
8
|
from pydantic import BaseModel
|
9
9
|
|
10
|
-
from lionagi.
|
10
|
+
from lionagi.fields.action import ActionResponseModel
|
11
11
|
from lionagi.protocols.types import ActionRequest, Log
|
12
12
|
|
13
13
|
if TYPE_CHECKING:
|
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Literal
|
|
7
7
|
|
8
8
|
from pydantic import BaseModel, JsonValue
|
9
9
|
|
10
|
-
from lionagi.
|
10
|
+
from lionagi.fields.instruct import Instruct
|
11
11
|
from lionagi.models import FieldModel, ModelParams
|
12
12
|
from lionagi.protocols.types import (
|
13
13
|
Instruction,
|