lionagi 0.9.0__tar.gz → 0.9.2__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.
Files changed (256) hide show
  1. {lionagi-0.9.0 → lionagi-0.9.2}/PKG-INFO +1 -1
  2. lionagi-0.9.2/lionagi/operations/ReAct/ReAct.py +351 -0
  3. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/ReAct/utils.py +8 -2
  4. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/base.py +1 -1
  5. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/chat_completion.py +9 -1
  6. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/imodel.py +0 -8
  7. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/session/branch.py +71 -3
  8. lionagi-0.9.2/lionagi/version.py +1 -0
  9. {lionagi-0.9.0 → lionagi-0.9.2}/pyproject.toml +1 -1
  10. {lionagi-0.9.0 → lionagi-0.9.2}/uv.lock +1 -1
  11. lionagi-0.9.0/lionagi/operations/ReAct/ReAct.py +0 -204
  12. lionagi-0.9.0/lionagi/version.py +0 -1
  13. {lionagi-0.9.0 → lionagi-0.9.2}/.env.example +0 -0
  14. {lionagi-0.9.0 → lionagi-0.9.2}/.github/FUNDING.yml +0 -0
  15. {lionagi-0.9.0 → lionagi-0.9.2}/.github/dependabot.yml +0 -0
  16. {lionagi-0.9.0 → lionagi-0.9.2}/.github/workflows/ci.yml +0 -0
  17. {lionagi-0.9.0 → lionagi-0.9.2}/.github/workflows/codeql.yml +0 -0
  18. {lionagi-0.9.0 → lionagi-0.9.2}/.github/workflows/docs.yml +0 -0
  19. {lionagi-0.9.0 → lionagi-0.9.2}/.github/workflows/release.yml +0 -0
  20. {lionagi-0.9.0 → lionagi-0.9.2}/.gitignore +0 -0
  21. {lionagi-0.9.0 → lionagi-0.9.2}/.pre-commit-config.yaml +0 -0
  22. {lionagi-0.9.0 → lionagi-0.9.2}/CODE_OF_CONDUCT.md +0 -0
  23. {lionagi-0.9.0 → lionagi-0.9.2}/CONTRIBUTING.md +0 -0
  24. {lionagi-0.9.0 → lionagi-0.9.2}/LICENSE +0 -0
  25. {lionagi-0.9.0 → lionagi-0.9.2}/README.md +0 -0
  26. {lionagi-0.9.0 → lionagi-0.9.2}/cookbooks/ch01_get_started.md +0 -0
  27. {lionagi-0.9.0 → lionagi-0.9.2}/cookbooks/ch02_concepts.md +0 -0
  28. {lionagi-0.9.0 → lionagi-0.9.2}/dev_tools/count_code_base_lines.py +0 -0
  29. {lionagi-0.9.0 → lionagi-0.9.2}/docs/Makefile +0 -0
  30. {lionagi-0.9.0 → lionagi-0.9.2}/docs/_static/custom.css +0 -0
  31. {lionagi-0.9.0 → lionagi-0.9.2}/docs/_templates/layout.html +0 -0
  32. {lionagi-0.9.0 → lionagi-0.9.2}/docs/conf.py +0 -0
  33. {lionagi-0.9.0 → lionagi-0.9.2}/docs/index.rst +0 -0
  34. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/action.rst +0 -0
  35. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/adapter.rst +0 -0
  36. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/branch.rst +0 -0
  37. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/branch_operations.rst +0 -0
  38. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/concepts.rst +0 -0
  39. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/element_id.rst +0 -0
  40. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/event.rst +0 -0
  41. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/form.rst +0 -0
  42. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/graph.rst +0 -0
  43. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/index.rst +0 -0
  44. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/instruct.rst +0 -0
  45. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/lib_file.rst +0 -0
  46. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/lib_nested.rst +0 -0
  47. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/lib_package.rst +0 -0
  48. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/lib_schema.rst +0 -0
  49. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/lib_validate.rst +0 -0
  50. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/log.rst +0 -0
  51. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/mail.rst +0 -0
  52. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/message.rst +0 -0
  53. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/models.rst +0 -0
  54. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/operative_step.rst +0 -0
  55. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/pile.rst +0 -0
  56. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/processor.rst +0 -0
  57. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/progression.rst +0 -0
  58. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/service.rst +0 -0
  59. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/session.rst +0 -0
  60. {lionagi-0.9.0 → lionagi-0.9.2}/docs/modules/utils.rst +0 -0
  61. {lionagi-0.9.0 → lionagi-0.9.2}/docs/tutorials/get_started.rst +0 -0
  62. {lionagi-0.9.0 → lionagi-0.9.2}/docs/tutorials/get_started_pt2.rst +0 -0
  63. {lionagi-0.9.0 → lionagi-0.9.2}/docs/tutorials/get_started_pt3.rst +0 -0
  64. {lionagi-0.9.0 → lionagi-0.9.2}/docs/tutorials/index.rst +0 -0
  65. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/__init__.py +0 -0
  66. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/_class_registry.py +0 -0
  67. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/_errors.py +0 -0
  68. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/_types.py +0 -0
  69. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/__init__.py +0 -0
  70. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/__init__.py +0 -0
  71. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/chunk.py +0 -0
  72. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/file_ops.py +0 -0
  73. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/params.py +0 -0
  74. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/process.py +0 -0
  75. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/file/save.py +0 -0
  76. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/__init__.py +0 -0
  77. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/flatten.py +0 -0
  78. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/nfilter.py +0 -0
  79. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/nget.py +0 -0
  80. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/ninsert.py +0 -0
  81. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/nmerge.py +0 -0
  82. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/npop.py +0 -0
  83. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/nset.py +0 -0
  84. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/unflatten.py +0 -0
  85. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/nested/utils.py +0 -0
  86. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/package/__init__.py +0 -0
  87. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/package/imports.py +0 -0
  88. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/package/management.py +0 -0
  89. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/package/params.py +0 -0
  90. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/package/system.py +0 -0
  91. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/parse.py +0 -0
  92. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/__init__.py +0 -0
  93. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/as_readable.py +0 -0
  94. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/extract_code_block.py +0 -0
  95. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/extract_docstring.py +0 -0
  96. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/function_to_schema.py +0 -0
  97. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/schema/json_schema.py +0 -0
  98. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/token_transform/__init__.py +0 -0
  99. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/token_transform/llmlingua.py +0 -0
  100. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/token_transform/perplexity.py +0 -0
  101. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/token_transform/synthlang.py +0 -0
  102. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/__init__.py +0 -0
  103. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/common_field_validators.py +0 -0
  104. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
  105. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  106. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/string_similarity.py +0 -0
  107. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/libs/validate/validate_boolean.py +0 -0
  108. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/ReAct/__init__.py +0 -0
  109. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/__init__.py +0 -0
  110. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/_act/__init__.py +0 -0
  111. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/_act/act.py +0 -0
  112. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/brainstorm/__init__.py +0 -0
  113. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  114. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/brainstorm/prompt.py +0 -0
  115. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/chat/__init__.py +0 -0
  116. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/chat/chat.py +0 -0
  117. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/communicate/__init__.py +0 -0
  118. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/communicate/communicate.py +0 -0
  119. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/instruct/__init__.py +0 -0
  120. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/instruct/instruct.py +0 -0
  121. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/interpret/__init__.py +0 -0
  122. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/interpret/interpret.py +0 -0
  123. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/manager.py +0 -0
  124. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/operate/__init__.py +0 -0
  125. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/operate/operate.py +0 -0
  126. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/parse/__init__.py +0 -0
  127. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/parse/parse.py +0 -0
  128. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/plan/__init__.py +0 -0
  129. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/plan/plan.py +0 -0
  130. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/plan/prompt.py +0 -0
  131. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/select/__init__.py +0 -0
  132. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/select/select.py +0 -0
  133. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/select/utils.py +0 -0
  134. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/translate/__init__.py +0 -0
  135. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/translate/translate.py +0 -0
  136. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/types.py +0 -0
  137. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operations/utils.py +0 -0
  138. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/__init__.py +0 -0
  139. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/__init__.py +0 -0
  140. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/function_calling.py +0 -0
  141. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/manager.py +0 -0
  142. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/request_response_model.py +0 -0
  143. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/tool.py +0 -0
  144. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/action/utils.py +0 -0
  145. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/forms/__init__.py +0 -0
  146. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/forms/base.py +0 -0
  147. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/forms/flow.py +0 -0
  148. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/forms/form.py +0 -0
  149. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/forms/report.py +0 -0
  150. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/__init__.py +0 -0
  151. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/base.py +0 -0
  152. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/instruct.py +0 -0
  153. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/instruct_collection.py +0 -0
  154. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/node.py +0 -0
  155. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/prompts.py +0 -0
  156. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/instruct/reason.py +0 -0
  157. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/manager.py +0 -0
  158. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/__init__.py +0 -0
  159. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/field_model.py +0 -0
  160. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/model_params.py +0 -0
  161. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/note.py +0 -0
  162. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/operable_model.py +0 -0
  163. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/models/schema_model.py +0 -0
  164. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/operative.py +0 -0
  165. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/step.py +0 -0
  166. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/__init__.py +0 -0
  167. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/base.py +0 -0
  168. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/concurrent.py +0 -0
  169. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/concurrent_chunk.py +0 -0
  170. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/concurrent_sequential_chunk.py +0 -0
  171. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/params.py +0 -0
  172. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/sequential.py +0 -0
  173. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/sequential_chunk.py +0 -0
  174. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/sequential_concurrent_chunk.py +0 -0
  175. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/strategies/utils.py +0 -0
  176. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/operatives/types.py +0 -0
  177. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/__init__.py +0 -0
  178. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/_concepts.py +0 -0
  179. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/__init__.py +0 -0
  180. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/adapter.py +0 -0
  181. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/json_adapter.py +0 -0
  182. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/pandas_/__init__.py +0 -0
  183. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/pandas_/csv_adapter.py +0 -0
  184. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/pandas_/excel_adapter.py +0 -0
  185. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py +0 -0
  186. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/pandas_/pd_series_adapter.py +0 -0
  187. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/adapters/types.py +0 -0
  188. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/__init__.py +0 -0
  189. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/element.py +0 -0
  190. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/event.py +0 -0
  191. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/log.py +0 -0
  192. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/pile.py +0 -0
  193. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/processor.py +0 -0
  194. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/generic/progression.py +0 -0
  195. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/graph/__init__.py +0 -0
  196. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/graph/edge.py +0 -0
  197. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/graph/graph.py +0 -0
  198. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/graph/node.py +0 -0
  199. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/__init__.py +0 -0
  200. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/exchange.py +0 -0
  201. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/mail.py +0 -0
  202. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/mailbox.py +0 -0
  203. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/manager.py +0 -0
  204. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/mail/package.py +0 -0
  205. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/__init__.py +0 -0
  206. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/action_request.py +0 -0
  207. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/action_response.py +0 -0
  208. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/assistant_response.py +0 -0
  209. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/base.py +0 -0
  210. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/instruction.py +0 -0
  211. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/manager.py +0 -0
  212. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/message.py +0 -0
  213. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/system.py +0 -0
  214. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/README.md +0 -0
  215. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  216. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  217. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  218. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  219. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  220. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  221. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/protocols/types.py +0 -0
  222. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/__init__.py +0 -0
  223. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/__init__.py +0 -0
  224. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/match_endpoint.py +0 -0
  225. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/rate_limited_processor.py +0 -0
  226. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/endpoints/token_calculator.py +0 -0
  227. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/manager.py +0 -0
  228. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/__init__.py +0 -0
  229. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/anthropic_/__init__.py +0 -0
  230. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/anthropic_/messages.py +0 -0
  231. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/exa_/__init__.py +0 -0
  232. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/exa_/models.py +0 -0
  233. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/exa_/search.py +0 -0
  234. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/exa_/types.py +0 -0
  235. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/groq_/__init__.py +0 -0
  236. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/groq_/chat_completions.py +0 -0
  237. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/openai_/__init__.py +0 -0
  238. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/openai_/chat_completions.py +0 -0
  239. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/openrouter_/__init__.py +0 -0
  240. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/openrouter_/chat_completions.py +0 -0
  241. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/perplexity_/__init__.py +0 -0
  242. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/perplexity_/chat_completions.py +0 -0
  243. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/perplexity_/models.py +0 -0
  244. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/providers/types.py +0 -0
  245. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/service/types.py +0 -0
  246. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/session/__init__.py +0 -0
  247. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/session/prompts.py +0 -0
  248. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/session/session.py +0 -0
  249. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/settings.py +0 -0
  250. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/tools/__init__.py +0 -0
  251. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/tools/base.py +0 -0
  252. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/tools/file/__init__.py +0 -0
  253. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/tools/file/reader.py +0 -0
  254. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/tools/types.py +0 -0
  255. {lionagi-0.9.0 → lionagi-0.9.2}/lionagi/utils.py +0 -0
  256. {lionagi-0.9.0 → lionagi-0.9.2}/prompts/doc_style.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -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
- "You have up to {extensions} expansions. Please continue."
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="Free-form reasoning or chain-of-thought summary. Must be consistent with the plan.",
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(
@@ -79,7 +79,7 @@ class EndpointConfig(BaseModel):
79
79
  requires_tokens: bool = False
80
80
  api_version: str | None = None
81
81
  allowed_roles: list[str] | None = None
82
- request_options: type | None = None
82
+ request_options: type | None = Field(None, exclude=True)
83
83
 
84
84
 
85
85
  class EndPoint(ABC):
@@ -1,11 +1,19 @@
1
1
  # Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
-
4
+ import warnings
5
5
  from collections.abc import AsyncGenerator
6
6
 
7
7
  from .base import EndPoint
8
8
 
9
+ warnings.filterwarnings(
10
+ "ignore",
11
+ message=".*Valid config keys have changed in V2.*",
12
+ category=UserWarning,
13
+ module="pydantic._internal._config",
14
+ )
15
+
16
+
9
17
  CHAT_COMPLETION_CONFIG = {
10
18
  "endpoint": "chat/completions",
11
19
  "method": "post",
@@ -4,7 +4,6 @@
4
4
 
5
5
  import asyncio
6
6
  import os
7
- import warnings
8
7
  from collections.abc import AsyncGenerator, Callable
9
8
 
10
9
  from pydantic import BaseModel
@@ -16,13 +15,6 @@ from .endpoints.base import APICalling, EndPoint
16
15
  from .endpoints.match_endpoint import match_endpoint
17
16
  from .endpoints.rate_limited_processor import RateLimitedAPIExecutor
18
17
 
19
- warnings.filterwarnings(
20
- "ignore",
21
- message=".*Valid config keys have changed in V2.*",
22
- category=UserWarning,
23
- module="pydantic._internal._config",
24
- )
25
-
26
18
 
27
19
  class iModel:
28
20
  """Manages API calls for a specific provider with optional rate-limiting.
@@ -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
- extension_allowed: bool = False,
1629
- max_extensions: int = None,
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.2"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lionagi"
3
- version = "0.9.0"
3
+ version = "0.9.2"
4
4
  description = "An Intelligence Operating System."
5
5
  authors = [
6
6
  { name = "HaiyangLi", email = "quantocean.li@gmail.com" },
@@ -1208,7 +1208,7 @@ wheels = [
1208
1208
 
1209
1209
  [[package]]
1210
1210
  name = "lionagi"
1211
- version = "0.9.0"
1211
+ version = "0.9.2"
1212
1212
  source = { editable = "." }
1213
1213
  dependencies = [
1214
1214
  { name = "aiocache" },