lionagi 0.9.9__tar.gz → 0.9.11__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 (273) hide show
  1. {lionagi-0.9.9 → lionagi-0.9.11}/PKG-INFO +1 -1
  2. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/function_to_schema.py +3 -2
  3. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/brainstorm/brainstorm.py +1 -1
  4. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/plan/plan.py +1 -1
  5. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/tool.py +3 -5
  6. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/action_request.py +1 -1
  7. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/assistant_response.py +53 -50
  8. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/base.py +26 -8
  9. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/imodel.py +14 -11
  10. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/anthropic_/messages.py +20 -1
  11. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/perplexity_/models.py +2 -2
  12. lionagi-0.9.11/lionagi/version.py +1 -0
  13. {lionagi-0.9.9 → lionagi-0.9.11}/pyproject.toml +1 -1
  14. {lionagi-0.9.9 → lionagi-0.9.11}/uv.lock +1 -1
  15. lionagi-0.9.9/lionagi/version.py +0 -1
  16. {lionagi-0.9.9 → lionagi-0.9.11}/.env.example +0 -0
  17. {lionagi-0.9.9 → lionagi-0.9.11}/.github/FUNDING.yml +0 -0
  18. {lionagi-0.9.9 → lionagi-0.9.11}/.github/dependabot.yml +0 -0
  19. {lionagi-0.9.9 → lionagi-0.9.11}/.github/workflows/ci.yml +0 -0
  20. {lionagi-0.9.9 → lionagi-0.9.11}/.github/workflows/codeql.yml +0 -0
  21. {lionagi-0.9.9 → lionagi-0.9.11}/.github/workflows/docs.yml +0 -0
  22. {lionagi-0.9.9 → lionagi-0.9.11}/.github/workflows/release.yml +0 -0
  23. {lionagi-0.9.9 → lionagi-0.9.11}/.gitignore +0 -0
  24. {lionagi-0.9.9 → lionagi-0.9.11}/.pre-commit-config.yaml +0 -0
  25. {lionagi-0.9.9 → lionagi-0.9.11}/CODE_OF_CONDUCT.md +0 -0
  26. {lionagi-0.9.9 → lionagi-0.9.11}/CONTRIBUTING.md +0 -0
  27. {lionagi-0.9.9 → lionagi-0.9.11}/LICENSE +0 -0
  28. {lionagi-0.9.9 → lionagi-0.9.11}/README.md +0 -0
  29. {lionagi-0.9.9 → lionagi-0.9.11}/cookbooks/ch01_get_started.md +0 -0
  30. {lionagi-0.9.9 → lionagi-0.9.11}/cookbooks/ch02_concepts.md +0 -0
  31. {lionagi-0.9.9 → lionagi-0.9.11}/dev_tools/count_code_base_lines.py +0 -0
  32. {lionagi-0.9.9 → lionagi-0.9.11}/docs/Makefile +0 -0
  33. {lionagi-0.9.9 → lionagi-0.9.11}/docs/_static/custom.css +0 -0
  34. {lionagi-0.9.9 → lionagi-0.9.11}/docs/_templates/layout.html +0 -0
  35. {lionagi-0.9.9 → lionagi-0.9.11}/docs/conf.py +0 -0
  36. {lionagi-0.9.9 → lionagi-0.9.11}/docs/index.rst +0 -0
  37. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/action.rst +0 -0
  38. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/adapter.rst +0 -0
  39. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/branch.rst +0 -0
  40. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/branch_operations.rst +0 -0
  41. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/concepts.rst +0 -0
  42. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/element_id.rst +0 -0
  43. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/event.rst +0 -0
  44. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/form.rst +0 -0
  45. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/graph.rst +0 -0
  46. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/index.rst +0 -0
  47. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/instruct.rst +0 -0
  48. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/lib_file.rst +0 -0
  49. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/lib_nested.rst +0 -0
  50. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/lib_package.rst +0 -0
  51. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/lib_schema.rst +0 -0
  52. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/lib_validate.rst +0 -0
  53. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/log.rst +0 -0
  54. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/mail.rst +0 -0
  55. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/message.rst +0 -0
  56. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/models.rst +0 -0
  57. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/operative_step.rst +0 -0
  58. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/pile.rst +0 -0
  59. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/processor.rst +0 -0
  60. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/progression.rst +0 -0
  61. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/service.rst +0 -0
  62. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/session.rst +0 -0
  63. {lionagi-0.9.9 → lionagi-0.9.11}/docs/modules/utils.rst +0 -0
  64. {lionagi-0.9.9 → lionagi-0.9.11}/docs/tutorials/get_started.rst +0 -0
  65. {lionagi-0.9.9 → lionagi-0.9.11}/docs/tutorials/get_started_pt2.rst +0 -0
  66. {lionagi-0.9.9 → lionagi-0.9.11}/docs/tutorials/get_started_pt3.rst +0 -0
  67. {lionagi-0.9.9 → lionagi-0.9.11}/docs/tutorials/index.rst +0 -0
  68. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/__init__.py +0 -0
  69. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/_class_registry.py +0 -0
  70. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/_errors.py +0 -0
  71. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/_types.py +0 -0
  72. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/__init__.py +0 -0
  73. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/__init__.py +0 -0
  74. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/chunk.py +0 -0
  75. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/file_ops.py +0 -0
  76. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/params.py +0 -0
  77. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/process.py +0 -0
  78. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/file/save.py +0 -0
  79. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/__init__.py +0 -0
  80. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/flatten.py +0 -0
  81. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/nfilter.py +0 -0
  82. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/nget.py +0 -0
  83. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/ninsert.py +0 -0
  84. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/nmerge.py +0 -0
  85. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/npop.py +0 -0
  86. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/nset.py +0 -0
  87. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/unflatten.py +0 -0
  88. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/nested/utils.py +0 -0
  89. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/package/__init__.py +0 -0
  90. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/package/imports.py +0 -0
  91. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/package/management.py +0 -0
  92. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/package/params.py +0 -0
  93. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/package/system.py +0 -0
  94. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/parse.py +0 -0
  95. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/__init__.py +0 -0
  96. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/as_readable.py +0 -0
  97. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/extract_code_block.py +0 -0
  98. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/extract_docstring.py +0 -0
  99. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/schema/json_schema.py +0 -0
  100. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/token_transform/__init__.py +0 -0
  101. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/token_transform/llmlingua.py +0 -0
  102. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/token_transform/perplexity.py +0 -0
  103. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/token_transform/synthlang.py +0 -0
  104. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/__init__.py +0 -0
  105. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/common_field_validators.py +0 -0
  106. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
  107. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  108. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/string_similarity.py +0 -0
  109. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/libs/validate/validate_boolean.py +0 -0
  110. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/ReAct/ReAct.py +0 -0
  111. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/ReAct/__init__.py +0 -0
  112. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/ReAct/utils.py +0 -0
  113. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/__init__.py +0 -0
  114. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/_act/__init__.py +0 -0
  115. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/_act/act.py +0 -0
  116. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/brainstorm/__init__.py +0 -0
  117. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/brainstorm/prompt.py +0 -0
  118. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/chat/__init__.py +0 -0
  119. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/chat/chat.py +0 -0
  120. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/communicate/__init__.py +0 -0
  121. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/communicate/communicate.py +0 -0
  122. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/instruct/__init__.py +0 -0
  123. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/instruct/instruct.py +0 -0
  124. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/interpret/__init__.py +0 -0
  125. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/interpret/interpret.py +0 -0
  126. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/manager.py +0 -0
  127. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/operate/__init__.py +0 -0
  128. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/operate/operate.py +0 -0
  129. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/parse/__init__.py +0 -0
  130. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/parse/parse.py +0 -0
  131. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/plan/__init__.py +0 -0
  132. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/plan/prompt.py +0 -0
  133. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/select/__init__.py +0 -0
  134. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/select/select.py +0 -0
  135. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/select/utils.py +0 -0
  136. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/translate/__init__.py +0 -0
  137. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/translate/translate.py +0 -0
  138. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/types.py +0 -0
  139. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operations/utils.py +0 -0
  140. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/__init__.py +0 -0
  141. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/__init__.py +0 -0
  142. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/function_calling.py +0 -0
  143. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/manager.py +0 -0
  144. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/request_response_model.py +0 -0
  145. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/action/utils.py +0 -0
  146. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/forms/__init__.py +0 -0
  147. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/forms/base.py +0 -0
  148. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/forms/flow.py +0 -0
  149. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/forms/form.py +0 -0
  150. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/forms/report.py +0 -0
  151. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/__init__.py +0 -0
  152. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/base.py +0 -0
  153. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/instruct.py +0 -0
  154. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/instruct_collection.py +0 -0
  155. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/node.py +0 -0
  156. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/prompts.py +0 -0
  157. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/instruct/reason.py +0 -0
  158. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/manager.py +0 -0
  159. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/__init__.py +0 -0
  160. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/field_model.py +0 -0
  161. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/model_params.py +0 -0
  162. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/note.py +0 -0
  163. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/operable_model.py +0 -0
  164. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/models/schema_model.py +0 -0
  165. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/operative.py +0 -0
  166. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/step.py +0 -0
  167. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/__init__.py +0 -0
  168. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/base.py +0 -0
  169. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/concurrent.py +0 -0
  170. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/concurrent_chunk.py +0 -0
  171. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/concurrent_sequential_chunk.py +0 -0
  172. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/params.py +0 -0
  173. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/sequential.py +0 -0
  174. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/sequential_chunk.py +0 -0
  175. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/sequential_concurrent_chunk.py +0 -0
  176. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/strategies/utils.py +0 -0
  177. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/operatives/types.py +0 -0
  178. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/__init__.py +0 -0
  179. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/_concepts.py +0 -0
  180. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/__init__.py +0 -0
  181. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/adapter.py +0 -0
  182. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/json_adapter.py +0 -0
  183. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/pandas_/__init__.py +0 -0
  184. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/pandas_/csv_adapter.py +0 -0
  185. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/pandas_/excel_adapter.py +0 -0
  186. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py +0 -0
  187. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/pandas_/pd_series_adapter.py +0 -0
  188. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/adapters/types.py +0 -0
  189. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/__init__.py +0 -0
  190. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/element.py +0 -0
  191. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/event.py +0 -0
  192. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/log.py +0 -0
  193. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/pile.py +0 -0
  194. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/processor.py +0 -0
  195. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/generic/progression.py +0 -0
  196. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/graph/__init__.py +0 -0
  197. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/graph/edge.py +0 -0
  198. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/graph/graph.py +0 -0
  199. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/graph/node.py +0 -0
  200. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/__init__.py +0 -0
  201. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/exchange.py +0 -0
  202. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/mail.py +0 -0
  203. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/mailbox.py +0 -0
  204. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/manager.py +0 -0
  205. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/mail/package.py +0 -0
  206. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/__init__.py +0 -0
  207. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/action_response.py +0 -0
  208. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/base.py +0 -0
  209. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/instruction.py +0 -0
  210. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/manager.py +0 -0
  211. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/message.py +0 -0
  212. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/system.py +0 -0
  213. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/README.md +0 -0
  214. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  215. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  216. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  217. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  218. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  219. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  220. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/protocols/types.py +0 -0
  221. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/__init__.py +0 -0
  222. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/__init__.py +0 -0
  223. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/chat_completion.py +0 -0
  224. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/match_endpoint.py +0 -0
  225. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/rate_limited_processor.py +0 -0
  226. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/endpoints/token_calculator.py +0 -0
  227. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/manager.py +0 -0
  228. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/__init__.py +0 -0
  229. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/anthropic_/__init__.py +0 -0
  230. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/exa_/__init__.py +0 -0
  231. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/exa_/models.py +0 -0
  232. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/exa_/search.py +0 -0
  233. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/exa_/types.py +0 -0
  234. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/groq_/__init__.py +0 -0
  235. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/groq_/chat_completions.py +0 -0
  236. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/ollama_/__init__.py +0 -0
  237. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/ollama_/chat_completions.py +0 -0
  238. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/openai_/__init__.py +0 -0
  239. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/openai_/chat_completions.py +0 -0
  240. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/openai_/spec.py +0 -0
  241. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/openrouter_/__init__.py +0 -0
  242. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/openrouter_/chat_completions.py +0 -0
  243. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/perplexity_/__init__.py +0 -0
  244. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/perplexity_/chat_completions.py +0 -0
  245. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/providers/types.py +0 -0
  246. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/service/types.py +0 -0
  247. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/session/__init__.py +0 -0
  248. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/session/branch.py +0 -0
  249. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/session/prompts.py +0 -0
  250. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/session/session.py +0 -0
  251. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/settings.py +0 -0
  252. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/__init__.py +0 -0
  253. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/base.py +0 -0
  254. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/browser/__init__.py +0 -0
  255. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/browser/providers/__init__.py +0 -0
  256. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/browser/providers/browser_use_.py +0 -0
  257. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/__init__.py +0 -0
  258. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/coder.py +0 -0
  259. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/manager.py +0 -0
  260. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/providers/__init__.py +0 -0
  261. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/providers/aider_.py +0 -0
  262. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/providers/e2b_.py +0 -0
  263. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/code/sandbox.py +0 -0
  264. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/__init__.py +0 -0
  265. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/manager.py +0 -0
  266. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/providers/__init__.py +0 -0
  267. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/providers/docling_.py +0 -0
  268. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/reader.py +0 -0
  269. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/file/writer.py +0 -0
  270. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/query/__init__.py +0 -0
  271. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/tools/types.py +0 -0
  272. {lionagi-0.9.9 → lionagi-0.9.11}/lionagi/utils.py +0 -0
  273. {lionagi-0.9.9 → lionagi-0.9.11}/prompts/doc_style.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.9.9
3
+ Version: 0.9.11
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -137,8 +137,9 @@ def function_to_schema(
137
137
  # Default type to string and update if type hint is available
138
138
  param_type = "string"
139
139
  if param.annotation is not inspect.Parameter.empty:
140
- param_type = py_json_msp[param.annotation.__name__]
141
-
140
+ param_type = py_json_msp.get(
141
+ param.annotation.__name__, param.annotation.__name__
142
+ )
142
143
  # Extract parameter description from docstring, if available
143
144
  param_description = parametert_description.get(name)
144
145
 
@@ -87,7 +87,7 @@ async def run_instruct(
87
87
  # Prepare config for the branch operation
88
88
  config = {**ins.model_dump(), **kwargs}
89
89
  result = await branch.operate(**config)
90
- branch._log_manager.dump()
90
+ branch.dump_logs()
91
91
 
92
92
  # Extract any newly generated instructions
93
93
  instructs = []
@@ -93,7 +93,7 @@ async def run_step(
93
93
 
94
94
  # Run the step
95
95
  result = await branch.operate(**config)
96
- branch.msgs.logger.dump() # Dump logs if needed
96
+ branch.dump_logs() # Dump logs if needed
97
97
  return result
98
98
 
99
99
 
@@ -92,11 +92,9 @@ class Tool(Element):
92
92
  @model_validator(mode="after")
93
93
  def _validate_tool_schema(self) -> Self:
94
94
  if self.tool_schema is None:
95
- self.tool_schema = function_to_schema(self.func_callable)
96
- if self.request_options is not None:
97
- schema_ = self.request_options.model_json_schema()
98
- schema_.pop("title", None)
99
- self.tool_schema["function"]["parameters"] = schema_
95
+ self.tool_schema = function_to_schema(
96
+ self.func_callable, request_options=self.request_options
97
+ )
100
98
 
101
99
  return self
102
100
 
@@ -80,7 +80,7 @@ class ActionRequest(RoledMessage):
80
80
 
81
81
  @action_response_id.setter
82
82
  def action_response_id(self, action_response_id: IDType) -> None:
83
- self.content["action_response_id"] = action_response_id
83
+ self.content["action_response_id"] = str(action_response_id)
84
84
 
85
85
  @property
86
86
  def request(self) -> dict[str, Any]:
@@ -10,7 +10,7 @@ from typing import Any
10
10
 
11
11
  from pydantic import BaseModel
12
12
 
13
- from lionagi.utils import copy, is_same_dtype
13
+ from lionagi.utils import copy
14
14
 
15
15
  from .base import MessageRole, SenderRecipient
16
16
  from .message import MessageRole, RoledMessage, Template, jinja_env
@@ -19,57 +19,60 @@ from .message import MessageRole, RoledMessage, Template, jinja_env
19
19
  def prepare_assistant_response(
20
20
  assistant_response: BaseModel | list[BaseModel] | dict | str | Any, /
21
21
  ) -> dict:
22
- if assistant_response:
23
- content = {}
24
- # Handle model.choices[0].message.content format
25
- if isinstance(assistant_response, BaseModel):
26
- content["assistant_response"] = (
27
- assistant_response.choices[0].message.content or ""
28
- )
29
- content["model_response"] = assistant_response.model_dump(
30
- exclude_none=True, exclude_unset=True
31
- )
32
- # Handle streaming response[i].choices[0].delta.content format
33
- elif isinstance(assistant_response, list):
34
- if is_same_dtype(assistant_response, BaseModel):
35
- msg = "".join(
36
- [
37
- i.choices[0].delta.content or ""
38
- for i in assistant_response
39
- ]
22
+
23
+ assistant_response = (
24
+ [assistant_response]
25
+ if not isinstance(assistant_response, list)
26
+ else assistant_response
27
+ )
28
+
29
+ text_contents = []
30
+ model_responses = []
31
+
32
+ for i in assistant_response:
33
+
34
+ if isinstance(i, BaseModel):
35
+ i = i.model_dump(exclude_none=True, exclude_unset=True)
36
+
37
+ model_responses.append(i)
38
+
39
+ if isinstance(i, dict):
40
+ # anthropic standard
41
+ if "content" in i:
42
+ content = i["content"]
43
+ content = (
44
+ [content] if not isinstance(content, list) else content
40
45
  )
41
- content["assistant_response"] = msg
42
- content["model_response"] = [
43
- i.model_dump(
44
- exclude_none=True,
45
- exclude_unset=True,
46
- )
47
- for i in assistant_response
48
- ]
49
- elif is_same_dtype(assistant_response, dict):
50
- msg = "".join(
51
- [
52
- i["choices"][0]["delta"]["content"] or ""
53
- for i in assistant_response
54
- ]
46
+ for j in content:
47
+ if isinstance(j, dict):
48
+ if j.get("type") == "text":
49
+ text_contents.append(j["text"])
50
+ elif isinstance(j, str):
51
+ text_contents.append(j)
52
+
53
+ # openai standard
54
+ elif "choices" in i:
55
+ choices = i["choices"]
56
+ choices = (
57
+ [choices] if not isinstance(choices, list) else choices
55
58
  )
56
- content["assistant_response"] = msg
57
- content["model_response"] = assistant_response
58
- elif isinstance(assistant_response, dict):
59
- if "content" in assistant_response:
60
- content["assistant_response"] = assistant_response["content"]
61
- elif "choices" in assistant_response:
62
- content["assistant_response"] = assistant_response["choices"][
63
- 0
64
- ]["message"]["content"]
65
- content["model_response"] = assistant_response
66
- elif isinstance(assistant_response, str):
67
- content["assistant_response"] = assistant_response
68
- else:
69
- content["assistant_response"] = str(assistant_response)
70
- return content
71
- else:
72
- return {"assistant_response": ""}
59
+ for j in choices:
60
+ if "message" in j:
61
+ text_contents.append(j["message"]["content"] or "")
62
+ elif "delta" in j:
63
+ text_contents.append(j["delta"]["content"] or "")
64
+
65
+ elif isinstance(i, str):
66
+ text_contents.append(i)
67
+
68
+ text_contents = "".join(text_contents)
69
+ model_responses = (
70
+ model_responses[0] if len(model_responses) == 1 else model_responses
71
+ )
72
+ return {
73
+ "assistant_response": text_contents,
74
+ "model_response": model_responses,
75
+ }
73
76
 
74
77
 
75
78
  class AssistantResponse(RoledMessage):
@@ -371,25 +371,43 @@ class APICalling(Event):
371
371
  if self.payload.get("stream") is True:
372
372
  self.streaming = True
373
373
 
374
- if self.include_token_usage_to_model:
374
+ if self.include_token_usage_to_model and self.endpoint.requires_tokens:
375
375
  if isinstance(self.payload["messages"][-1], dict):
376
376
  required_tokens = self.required_tokens
377
- self.payload["messages"][-1][
378
- "content"
379
- ] += f"\n\nEstimated Current Token Usage: {required_tokens}"
377
+ content = self.payload["messages"][-1]["content"]
378
+ token_msg = (
379
+ f"\n\nEstimated Current Token Usage: {required_tokens}"
380
+ )
381
+
380
382
  if "model" in self.payload:
381
383
  if (
382
384
  self.payload["model"].startswith("gpt-4")
383
385
  or "o1mini" in self.payload["model"]
384
386
  or "o1-preview" in self.payload["model"]
385
387
  ):
386
- self.payload["messages"][-1]["content"] += "/128_000"
388
+ token_msg += "/128_000"
387
389
  elif "o1" in self.payload["model"]:
388
- self.payload["messages"][-1]["content"] += "/200_000"
390
+ token_msg += "/200_000"
389
391
  elif "sonnet" in self.payload["model"]:
390
- self.payload["messages"][-1]["content"] += "/200_000"
392
+ token_msg += "/200_000"
391
393
  elif "haiku" in self.payload["model"]:
392
- self.payload["messages"][-1]["content"] += "/200_000"
394
+ token_msg += "/200_000"
395
+ elif "gemini" in self.payload["model"]:
396
+ token_msg += "/1_000_000"
397
+ elif "qwen-turbo" in self.payload["model"]:
398
+ token_msg += "/1_000_000"
399
+
400
+ if isinstance(content, str):
401
+ content += token_msg
402
+ elif isinstance(content, dict):
403
+ if "text" in content:
404
+ content["text"] += token_msg
405
+ elif isinstance(content, list):
406
+ for i in reversed(content):
407
+ if "text" in i:
408
+ i["text"] += token_msg
409
+ break
410
+ self.payload["messages"][-1]["content"] = content
393
411
 
394
412
  return self
395
413
 
@@ -9,9 +9,9 @@ from collections.abc import AsyncGenerator, Callable
9
9
  from pydantic import BaseModel
10
10
 
11
11
  from lionagi.protocols.generic.event import EventStatus
12
- from lionagi.utils import is_coro_func
12
+ from lionagi.utils import is_coro_func, to_dict
13
13
 
14
- from .endpoints.base import APICalling, EndPoint
14
+ from .endpoints.base import APICalling, EndPoint, EndpointConfig
15
15
  from .endpoints.match_endpoint import match_endpoint
16
16
  from .endpoints.rate_limited_processor import RateLimitedAPIExecutor
17
17
 
@@ -352,9 +352,10 @@ class iModel:
352
352
  kwargs = self.kwargs
353
353
  if "kwargs" in self.kwargs:
354
354
  kwargs = self.kwargs["kwargs"]
355
+
355
356
  return {
356
357
  "provider": self.endpoint.config.provider,
357
- "endpoint": self.endpoint.config.model_dump(),
358
+ "endpoint": self.endpoint.config.model_dump_json(),
358
359
  "api_key": (
359
360
  self.api_key_scheme
360
361
  if hasattr(self, "api_key_scheme")
@@ -370,18 +371,20 @@ class iModel:
370
371
  provider = data.pop("provider", None)
371
372
  base_url = data.pop("base_url", None)
372
373
  api_key = data.pop("api_key", None)
373
- processor_config = data.pop("processor_config", {})
374
374
 
375
+ processor_config = data.pop("processor_config", {})
375
376
  endpoint_config_params = data.pop("endpoint", {})
376
- endpoint_ = endpoint_config_params.pop("endpoint", None)
377
- endpoint_params = endpoint_config_params.get("endpoint_params", None)
377
+ endpoint_config_params = to_dict(endpoint_config_params)
378
378
 
379
- endpoint = match_endpoint(
380
- provider=provider,
381
- base_url=base_url,
382
- endpoint=endpoint_,
383
- endpoint_params=endpoint_params,
379
+ endpoint_config_params["endpoint"] = endpoint_config_params.get(
380
+ "endpoint", "chat"
384
381
  )
382
+ match_params = {}
383
+
384
+ for i in ("provider", "base_url", "endpoint", "endpoint_params"):
385
+ if endpoint_config_params.get(i):
386
+ match_params[i] = endpoint_config_params.pop(i)
387
+ endpoint = match_endpoint(**match_params)
385
388
  endpoint.update_config(**endpoint_config_params)
386
389
  return cls(
387
390
  provider=provider,
@@ -50,10 +50,15 @@ class AnthropicChatCompletionEndPoint(ChatCompletionEndPoint):
50
50
  for k, v in kwargs.items():
51
51
  if k in self.acceptable_kwargs:
52
52
  payload[k] = v
53
+
54
+ for i in self.required_kwargs:
55
+ if i not in payload:
56
+ raise ValueError(f"Missing required argument: {i}")
57
+
53
58
  if "cache_control" in payload:
54
59
  cache_control = payload.pop("cache_control")
55
60
  if cache_control:
56
- cache_control = "ephemeral"
61
+ cache_control = {"type": "ephemeral"}
57
62
  last_message = payload["messages"][-1]["content"]
58
63
  if isinstance(last_message, str):
59
64
  last_message = {
@@ -65,6 +70,20 @@ class AnthropicChatCompletionEndPoint(ChatCompletionEndPoint):
65
70
  last_message[-1], dict
66
71
  ):
67
72
  last_message[-1]["cache_control"] = cache_control
73
+ payload["messages"][-1]["content"] = (
74
+ [last_message]
75
+ if not isinstance(last_message, list)
76
+ else last_message
77
+ )
78
+
79
+ first_message = payload["messages"][0]
80
+ system = None
81
+ if first_message.get("role") == "system":
82
+ system = first_message["content"]
83
+ system = [{"type": "text", "text": system}]
84
+ payload["messages"] = payload["messages"][1:]
85
+ payload["system"] = system
86
+
68
87
  if "api_key" in kwargs:
69
88
  headers["x-api-key"] = kwargs["api_key"]
70
89
  headers["anthropic-version"] = kwargs.pop(
@@ -33,8 +33,8 @@ class PerplexityChatCompletionRequest(BaseModel):
33
33
  """
34
34
 
35
35
  model: str = Field(
36
- ...,
37
- description="The model name, e.g. 'llama-3.1-sonar-small-128k-online'.",
36
+ "sonar",
37
+ description="The model name, e.g. 'sonar', (the only model available at the time when this request model was updated, check doc for latest info).",
38
38
  )
39
39
  messages: list[PerplexityMessage] = Field(
40
40
  ..., description="A list of messages forming the conversation so far."
@@ -0,0 +1 @@
1
+ __version__ = "0.9.11"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lionagi"
3
- version = "0.9.9"
3
+ version = "0.9.11"
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.9"
1211
+ version = "0.9.11"
1212
1212
  source = { editable = "." }
1213
1213
  dependencies = [
1214
1214
  { name = "aiocache" },
@@ -1 +0,0 @@
1
- __version__ = "0.9.9"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes