lionagi 0.5.5__py3-none-any.whl → 0.6.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (433) hide show
  1. lionagi/__init__.py +18 -24
  2. lionagi/{core/_class_registry.py → _class_registry.py} +51 -10
  3. lionagi/_errors.py +35 -0
  4. lionagi/libs/__init__.py +3 -0
  5. lionagi/libs/compress/__init__.py +3 -0
  6. lionagi/libs/compress/models.py +6 -2
  7. lionagi/libs/compress/utils.py +4 -16
  8. lionagi/libs/file/__init__.py +3 -0
  9. lionagi/libs/file/chunk.py +4 -0
  10. lionagi/libs/file/file_ops.py +4 -0
  11. lionagi/libs/file/params.py +4 -41
  12. lionagi/libs/file/process.py +4 -0
  13. lionagi/libs/file/save.py +5 -1
  14. lionagi/libs/{parse/flatten → nested}/flatten.py +4 -0
  15. lionagi/libs/{parse/nested → nested}/nfilter.py +4 -0
  16. lionagi/libs/{parse/nested → nested}/nget.py +6 -1
  17. lionagi/libs/{parse/nested → nested}/ninsert.py +5 -1
  18. lionagi/libs/{parse/nested → nested}/nmerge.py +4 -0
  19. lionagi/libs/{parse/nested → nested}/npop.py +5 -2
  20. lionagi/libs/{parse/nested → nested}/nset.py +6 -1
  21. lionagi/libs/{parse/flatten → nested}/unflatten.py +4 -0
  22. lionagi/libs/{parse/nested → nested}/utils.py +5 -1
  23. lionagi/libs/package/__init__.py +3 -0
  24. lionagi/libs/package/imports.py +6 -2
  25. lionagi/libs/package/management.py +7 -3
  26. lionagi/libs/package/params.py +4 -0
  27. lionagi/libs/package/system.py +4 -0
  28. lionagi/libs/parse.py +30 -0
  29. lionagi/libs/{parse/json → schema}/as_readable.py +10 -4
  30. lionagi/libs/{parse/string_parse/code_block.py → schema/extract_code_block.py} +4 -0
  31. lionagi/libs/{parse/string_parse/docstring.py → schema/extract_docstring.py} +4 -0
  32. lionagi/libs/{parse/string_parse/function_.py → schema/function_to_schema.py} +21 -9
  33. lionagi/libs/{parse/json/schema.py → schema/json_schema.py} +5 -1
  34. lionagi/libs/validate/common_field_validators.py +170 -0
  35. lionagi/libs/{parse/validate/keys.py → validate/fuzzy_match_keys.py} +42 -8
  36. lionagi/libs/{parse/validate/mapping.py → validate/fuzzy_validate_mapping.py} +41 -6
  37. lionagi/libs/{string_similarity/algorithms.py → validate/string_similarity.py} +115 -1
  38. lionagi/libs/{parse/validate/boolean.py → validate/validate_boolean.py} +42 -3
  39. lionagi/operations/__init__.py +13 -3
  40. lionagi/operations/brainstorm/__init__.py +3 -3
  41. lionagi/operations/brainstorm/brainstorm.py +33 -19
  42. lionagi/operations/brainstorm/prompt.py +4 -0
  43. lionagi/operations/plan/__init__.py +4 -0
  44. lionagi/operations/plan/plan.py +19 -16
  45. lionagi/operations/plan/prompt.py +4 -0
  46. lionagi/operations/select/__init__.py +4 -0
  47. lionagi/operations/select/prompt.py +4 -0
  48. lionagi/operations/select/select.py +2 -2
  49. lionagi/operations/select/utils.py +4 -4
  50. lionagi/{strategies → operations/strategies}/base.py +6 -2
  51. lionagi/{strategies → operations/strategies}/concurrent.py +8 -5
  52. lionagi/{strategies → operations/strategies}/concurrent_chunk.py +6 -3
  53. lionagi/{strategies → operations/strategies}/concurrent_sequential_chunk.py +8 -4
  54. lionagi/{strategies → operations/strategies}/params.py +26 -6
  55. lionagi/{strategies → operations/strategies}/sequential.py +6 -2
  56. lionagi/{strategies → operations/strategies}/sequential_chunk.py +7 -3
  57. lionagi/{strategies → operations/strategies}/sequential_concurrent_chunk.py +9 -4
  58. lionagi/{strategies → operations/strategies}/utils.py +6 -3
  59. lionagi/operations/types.py +13 -0
  60. lionagi/operations/utils.py +6 -3
  61. lionagi/operatives/action/function_calling.py +136 -0
  62. lionagi/operatives/action/manager.py +236 -0
  63. lionagi/operatives/action/request_response_model.py +90 -0
  64. lionagi/operatives/action/tool.py +141 -0
  65. lionagi/{protocols/operatives/action.py → operatives/action/utils.py} +52 -90
  66. lionagi/{core → operatives}/forms/base.py +9 -4
  67. lionagi/{core → operatives}/forms/form.py +8 -13
  68. lionagi/{core → operatives}/forms/report.py +5 -3
  69. lionagi/operatives/instruct/base.py +79 -0
  70. lionagi/operatives/instruct/instruct.py +105 -0
  71. lionagi/operatives/instruct/instruct_collection.py +52 -0
  72. lionagi/operatives/instruct/node.py +13 -0
  73. lionagi/{protocols/operatives → operatives/instruct}/prompts.py +0 -34
  74. lionagi/{protocols/operatives → operatives/instruct}/reason.py +14 -7
  75. lionagi/{core/models/__init__.py → operatives/manager.py} +5 -1
  76. lionagi/operatives/models/field_model.py +194 -0
  77. lionagi/operatives/models/model_params.py +307 -0
  78. lionagi/{core → operatives}/models/note.py +20 -28
  79. lionagi/{core → operatives}/models/operable_model.py +153 -71
  80. lionagi/{core → operatives}/models/schema_model.py +4 -3
  81. lionagi/{protocols/operatives → operatives}/operative.py +10 -7
  82. lionagi/{protocols/operatives → operatives}/step.py +67 -26
  83. lionagi/operatives/types.py +69 -0
  84. lionagi/protocols/_concepts.py +94 -0
  85. lionagi/protocols/adapters/adapter.py +23 -7
  86. lionagi/protocols/adapters/json_adapter.py +72 -14
  87. lionagi/protocols/adapters/pandas_/csv_adapter.py +50 -0
  88. lionagi/protocols/adapters/pandas_/excel_adapter.py +52 -0
  89. lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py +31 -0
  90. lionagi/protocols/adapters/pandas_/pd_series_adapter.py +17 -0
  91. lionagi/protocols/adapters/types.py +18 -0
  92. lionagi/protocols/generic/element.py +460 -0
  93. lionagi/protocols/generic/event.py +177 -0
  94. lionagi/protocols/generic/log.py +237 -0
  95. lionagi/{core → protocols}/generic/pile.py +193 -131
  96. lionagi/protocols/generic/processor.py +316 -0
  97. lionagi/protocols/generic/progression.py +500 -0
  98. lionagi/protocols/graph/edge.py +166 -0
  99. lionagi/protocols/graph/graph.py +290 -0
  100. lionagi/protocols/graph/node.py +125 -0
  101. lionagi/protocols/mail/exchange.py +116 -0
  102. lionagi/protocols/mail/mail.py +25 -0
  103. lionagi/protocols/mail/mailbox.py +47 -0
  104. lionagi/protocols/mail/manager.py +168 -0
  105. lionagi/protocols/mail/package.py +55 -0
  106. lionagi/protocols/messages/action_request.py +165 -0
  107. lionagi/protocols/messages/action_response.py +132 -0
  108. lionagi/{core/communication → protocols/messages}/assistant_response.py +55 -79
  109. lionagi/protocols/messages/base.py +73 -0
  110. lionagi/protocols/messages/instruction.py +582 -0
  111. lionagi/protocols/messages/manager.py +429 -0
  112. lionagi/protocols/messages/message.py +216 -0
  113. lionagi/protocols/messages/system.py +115 -0
  114. lionagi/protocols/messages/templates/assistant_response.jinja2 +6 -0
  115. lionagi/{core/communication → protocols/messages}/templates/instruction_message.jinja2 +2 -2
  116. lionagi/protocols/types.py +96 -0
  117. lionagi/service/__init__.py +1 -16
  118. lionagi/service/endpoints/base.py +517 -0
  119. lionagi/service/endpoints/chat_completion.py +102 -0
  120. lionagi/service/endpoints/match_endpoint.py +60 -0
  121. lionagi/service/endpoints/rate_limited_processor.py +146 -0
  122. lionagi/service/endpoints/token_calculator.py +209 -0
  123. lionagi/service/imodel.py +263 -96
  124. lionagi/service/manager.py +45 -0
  125. lionagi/service/providers/anthropic_/messages.py +64 -0
  126. lionagi/service/providers/groq_/chat_completions.py +56 -0
  127. lionagi/service/providers/openai_/chat_completions.py +62 -0
  128. lionagi/service/providers/openrouter_/chat_completions.py +62 -0
  129. lionagi/service/providers/perplexity_/__init__.py +3 -0
  130. lionagi/service/providers/perplexity_/chat_completions.py +40 -0
  131. lionagi/service/types.py +18 -0
  132. lionagi/session/__init__.py +3 -0
  133. lionagi/session/branch.py +1287 -0
  134. lionagi/session/session.py +296 -0
  135. lionagi/settings.py +62 -118
  136. lionagi/utils.py +2386 -0
  137. lionagi/version.py +1 -1
  138. {lionagi-0.5.5.dist-info → lionagi-0.6.1.dist-info}/METADATA +10 -9
  139. lionagi-0.6.1.dist-info/RECORD +169 -0
  140. lionagi/core/action/action_manager.py +0 -289
  141. lionagi/core/action/base.py +0 -109
  142. lionagi/core/action/function_calling.py +0 -153
  143. lionagi/core/action/tool.py +0 -202
  144. lionagi/core/action/types.py +0 -16
  145. lionagi/core/communication/action_request.py +0 -163
  146. lionagi/core/communication/action_response.py +0 -149
  147. lionagi/core/communication/base_mail.py +0 -49
  148. lionagi/core/communication/instruction.py +0 -376
  149. lionagi/core/communication/message.py +0 -286
  150. lionagi/core/communication/message_manager.py +0 -543
  151. lionagi/core/communication/system.py +0 -116
  152. lionagi/core/communication/templates/assistant_response.jinja2 +0 -2
  153. lionagi/core/communication/types.py +0 -27
  154. lionagi/core/communication/utils.py +0 -256
  155. lionagi/core/forms/types.py +0 -13
  156. lionagi/core/generic/component.py +0 -422
  157. lionagi/core/generic/edge.py +0 -163
  158. lionagi/core/generic/element.py +0 -199
  159. lionagi/core/generic/graph.py +0 -377
  160. lionagi/core/generic/log.py +0 -151
  161. lionagi/core/generic/log_manager.py +0 -320
  162. lionagi/core/generic/node.py +0 -11
  163. lionagi/core/generic/progression.py +0 -395
  164. lionagi/core/generic/types.py +0 -23
  165. lionagi/core/generic/utils.py +0 -53
  166. lionagi/core/models/base.py +0 -28
  167. lionagi/core/models/field_model.py +0 -145
  168. lionagi/core/models/model_params.py +0 -194
  169. lionagi/core/models/types.py +0 -19
  170. lionagi/core/session/branch.py +0 -130
  171. lionagi/core/session/branch_mixins.py +0 -581
  172. lionagi/core/session/session.py +0 -163
  173. lionagi/core/session/types.py +0 -8
  174. lionagi/core/typing/__init__.py +0 -9
  175. lionagi/core/typing/_concepts.py +0 -173
  176. lionagi/core/typing/_id.py +0 -104
  177. lionagi/core/typing/_pydantic.py +0 -33
  178. lionagi/core/typing/_typing.py +0 -54
  179. lionagi/integrations/_services.py +0 -17
  180. lionagi/integrations/anthropic_/AnthropicModel.py +0 -268
  181. lionagi/integrations/anthropic_/AnthropicService.py +0 -127
  182. lionagi/integrations/anthropic_/anthropic_max_output_token_data.yaml +0 -12
  183. lionagi/integrations/anthropic_/anthropic_price_data.yaml +0 -34
  184. lionagi/integrations/anthropic_/api_endpoints/api_request.py +0 -277
  185. lionagi/integrations/anthropic_/api_endpoints/data_models.py +0 -40
  186. lionagi/integrations/anthropic_/api_endpoints/match_response.py +0 -119
  187. lionagi/integrations/anthropic_/api_endpoints/messages/request/message_models.py +0 -14
  188. lionagi/integrations/anthropic_/api_endpoints/messages/request/request_body.py +0 -74
  189. lionagi/integrations/anthropic_/api_endpoints/messages/response/__init__.py +0 -0
  190. lionagi/integrations/anthropic_/api_endpoints/messages/response/content_models.py +0 -32
  191. lionagi/integrations/anthropic_/api_endpoints/messages/response/response_body.py +0 -101
  192. lionagi/integrations/anthropic_/api_endpoints/messages/response/usage_models.py +0 -25
  193. lionagi/integrations/anthropic_/version.py +0 -5
  194. lionagi/integrations/groq_/GroqModel.py +0 -325
  195. lionagi/integrations/groq_/GroqService.py +0 -156
  196. lionagi/integrations/groq_/api_endpoints/__init__.py +0 -0
  197. lionagi/integrations/groq_/api_endpoints/data_models.py +0 -187
  198. lionagi/integrations/groq_/api_endpoints/groq_request.py +0 -288
  199. lionagi/integrations/groq_/api_endpoints/match_response.py +0 -106
  200. lionagi/integrations/groq_/api_endpoints/response_utils.py +0 -105
  201. lionagi/integrations/groq_/groq_max_output_token_data.yaml +0 -21
  202. lionagi/integrations/groq_/groq_price_data.yaml +0 -58
  203. lionagi/integrations/groq_/groq_rate_limits.yaml +0 -105
  204. lionagi/integrations/groq_/version.py +0 -5
  205. lionagi/integrations/litellm_/imodel.py +0 -76
  206. lionagi/integrations/ollama_/OllamaModel.py +0 -244
  207. lionagi/integrations/ollama_/OllamaService.py +0 -142
  208. lionagi/integrations/ollama_/api_endpoints/api_request.py +0 -179
  209. lionagi/integrations/ollama_/api_endpoints/chat_completion/message_models.py +0 -31
  210. lionagi/integrations/ollama_/api_endpoints/chat_completion/request_body.py +0 -46
  211. lionagi/integrations/ollama_/api_endpoints/chat_completion/response_body.py +0 -67
  212. lionagi/integrations/ollama_/api_endpoints/chat_completion/tool_models.py +0 -49
  213. lionagi/integrations/ollama_/api_endpoints/completion/__init__.py +0 -0
  214. lionagi/integrations/ollama_/api_endpoints/completion/request_body.py +0 -72
  215. lionagi/integrations/ollama_/api_endpoints/completion/response_body.py +0 -59
  216. lionagi/integrations/ollama_/api_endpoints/data_models.py +0 -15
  217. lionagi/integrations/ollama_/api_endpoints/embedding/__init__.py +0 -0
  218. lionagi/integrations/ollama_/api_endpoints/embedding/request_body.py +0 -33
  219. lionagi/integrations/ollama_/api_endpoints/embedding/response_body.py +0 -29
  220. lionagi/integrations/ollama_/api_endpoints/match_data_model.py +0 -62
  221. lionagi/integrations/ollama_/api_endpoints/match_response.py +0 -190
  222. lionagi/integrations/ollama_/api_endpoints/model/copy_model.py +0 -13
  223. lionagi/integrations/ollama_/api_endpoints/model/create_model.py +0 -28
  224. lionagi/integrations/ollama_/api_endpoints/model/delete_model.py +0 -11
  225. lionagi/integrations/ollama_/api_endpoints/model/list_model.py +0 -60
  226. lionagi/integrations/ollama_/api_endpoints/model/pull_model.py +0 -34
  227. lionagi/integrations/ollama_/api_endpoints/model/push_model.py +0 -35
  228. lionagi/integrations/ollama_/api_endpoints/model/show_model.py +0 -36
  229. lionagi/integrations/ollama_/api_endpoints/option_models.py +0 -68
  230. lionagi/integrations/openai_/OpenAIModel.py +0 -419
  231. lionagi/integrations/openai_/OpenAIService.py +0 -435
  232. lionagi/integrations/openai_/__init__.py +0 -0
  233. lionagi/integrations/openai_/api_endpoints/__init__.py +0 -3
  234. lionagi/integrations/openai_/api_endpoints/api_request.py +0 -277
  235. lionagi/integrations/openai_/api_endpoints/audio/__init__.py +0 -9
  236. lionagi/integrations/openai_/api_endpoints/audio/speech_models.py +0 -34
  237. lionagi/integrations/openai_/api_endpoints/audio/transcription_models.py +0 -136
  238. lionagi/integrations/openai_/api_endpoints/audio/translation_models.py +0 -41
  239. lionagi/integrations/openai_/api_endpoints/audio/types.py +0 -41
  240. lionagi/integrations/openai_/api_endpoints/batch/__init__.py +0 -17
  241. lionagi/integrations/openai_/api_endpoints/batch/batch_models.py +0 -146
  242. lionagi/integrations/openai_/api_endpoints/batch/cancel_batch.py +0 -7
  243. lionagi/integrations/openai_/api_endpoints/batch/create_batch.py +0 -26
  244. lionagi/integrations/openai_/api_endpoints/batch/list_batch.py +0 -37
  245. lionagi/integrations/openai_/api_endpoints/batch/request_object_models.py +0 -65
  246. lionagi/integrations/openai_/api_endpoints/batch/retrieve_batch.py +0 -7
  247. lionagi/integrations/openai_/api_endpoints/batch/types.py +0 -4
  248. lionagi/integrations/openai_/api_endpoints/chat_completions/__init__.py +0 -1
  249. lionagi/integrations/openai_/api_endpoints/chat_completions/request/__init__.py +0 -39
  250. lionagi/integrations/openai_/api_endpoints/chat_completions/request/message_models.py +0 -121
  251. lionagi/integrations/openai_/api_endpoints/chat_completions/request/request_body.py +0 -221
  252. lionagi/integrations/openai_/api_endpoints/chat_completions/request/response_format.py +0 -71
  253. lionagi/integrations/openai_/api_endpoints/chat_completions/request/stream_options.py +0 -14
  254. lionagi/integrations/openai_/api_endpoints/chat_completions/request/tool_choice_models.py +0 -17
  255. lionagi/integrations/openai_/api_endpoints/chat_completions/request/tool_models.py +0 -54
  256. lionagi/integrations/openai_/api_endpoints/chat_completions/request/types.py +0 -18
  257. lionagi/integrations/openai_/api_endpoints/chat_completions/response/__init__.py +0 -0
  258. lionagi/integrations/openai_/api_endpoints/chat_completions/response/choice_models.py +0 -62
  259. lionagi/integrations/openai_/api_endpoints/chat_completions/response/function_models.py +0 -16
  260. lionagi/integrations/openai_/api_endpoints/chat_completions/response/log_prob_models.py +0 -47
  261. lionagi/integrations/openai_/api_endpoints/chat_completions/response/message_models.py +0 -25
  262. lionagi/integrations/openai_/api_endpoints/chat_completions/response/response_body.py +0 -99
  263. lionagi/integrations/openai_/api_endpoints/chat_completions/response/types.py +0 -8
  264. lionagi/integrations/openai_/api_endpoints/chat_completions/response/usage_models.py +0 -24
  265. lionagi/integrations/openai_/api_endpoints/chat_completions/util.py +0 -46
  266. lionagi/integrations/openai_/api_endpoints/data_models.py +0 -23
  267. lionagi/integrations/openai_/api_endpoints/embeddings/__init__.py +0 -3
  268. lionagi/integrations/openai_/api_endpoints/embeddings/request_body.py +0 -79
  269. lionagi/integrations/openai_/api_endpoints/embeddings/response_body.py +0 -67
  270. lionagi/integrations/openai_/api_endpoints/files/__init__.py +0 -11
  271. lionagi/integrations/openai_/api_endpoints/files/delete_file.py +0 -20
  272. lionagi/integrations/openai_/api_endpoints/files/file_models.py +0 -56
  273. lionagi/integrations/openai_/api_endpoints/files/list_files.py +0 -27
  274. lionagi/integrations/openai_/api_endpoints/files/retrieve_file.py +0 -9
  275. lionagi/integrations/openai_/api_endpoints/files/upload_file.py +0 -38
  276. lionagi/integrations/openai_/api_endpoints/fine_tuning/__init__.py +0 -37
  277. lionagi/integrations/openai_/api_endpoints/fine_tuning/cancel_jobs.py +0 -9
  278. lionagi/integrations/openai_/api_endpoints/fine_tuning/create_jobs.py +0 -133
  279. lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_checkpoint_models.py +0 -58
  280. lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_event_models.py +0 -31
  281. lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_models.py +0 -140
  282. lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_checkpoints.py +0 -51
  283. lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_events.py +0 -42
  284. lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_jobs.py +0 -31
  285. lionagi/integrations/openai_/api_endpoints/fine_tuning/retrieve_jobs.py +0 -9
  286. lionagi/integrations/openai_/api_endpoints/fine_tuning/training_format.py +0 -30
  287. lionagi/integrations/openai_/api_endpoints/images/__init__.py +0 -9
  288. lionagi/integrations/openai_/api_endpoints/images/image_edit_models.py +0 -69
  289. lionagi/integrations/openai_/api_endpoints/images/image_models.py +0 -56
  290. lionagi/integrations/openai_/api_endpoints/images/image_variation_models.py +0 -56
  291. lionagi/integrations/openai_/api_endpoints/images/response_body.py +0 -30
  292. lionagi/integrations/openai_/api_endpoints/match_data_model.py +0 -197
  293. lionagi/integrations/openai_/api_endpoints/match_response.py +0 -336
  294. lionagi/integrations/openai_/api_endpoints/models/__init__.py +0 -7
  295. lionagi/integrations/openai_/api_endpoints/models/delete_fine_tuned_model.py +0 -17
  296. lionagi/integrations/openai_/api_endpoints/models/models_models.py +0 -31
  297. lionagi/integrations/openai_/api_endpoints/models/retrieve_model.py +0 -9
  298. lionagi/integrations/openai_/api_endpoints/moderations/__init__.py +0 -3
  299. lionagi/integrations/openai_/api_endpoints/moderations/request_body.py +0 -20
  300. lionagi/integrations/openai_/api_endpoints/moderations/response_body.py +0 -139
  301. lionagi/integrations/openai_/api_endpoints/uploads/__init__.py +0 -19
  302. lionagi/integrations/openai_/api_endpoints/uploads/add_upload_part.py +0 -11
  303. lionagi/integrations/openai_/api_endpoints/uploads/cancel_upload.py +0 -7
  304. lionagi/integrations/openai_/api_endpoints/uploads/complete_upload.py +0 -18
  305. lionagi/integrations/openai_/api_endpoints/uploads/create_upload.py +0 -17
  306. lionagi/integrations/openai_/api_endpoints/uploads/uploads_models.py +0 -52
  307. lionagi/integrations/openai_/image_token_calculator/__init__.py +0 -0
  308. lionagi/integrations/openai_/image_token_calculator/image_token_calculator.py +0 -98
  309. lionagi/integrations/openai_/image_token_calculator/openai_image_token_data.yaml +0 -15
  310. lionagi/integrations/openai_/openai_max_output_token_data.yaml +0 -12
  311. lionagi/integrations/openai_/openai_price_data.yaml +0 -26
  312. lionagi/integrations/openai_/version.py +0 -1
  313. lionagi/integrations/pandas_/__init__.py +0 -24
  314. lionagi/integrations/pandas_/extend_df.py +0 -61
  315. lionagi/integrations/pandas_/read.py +0 -103
  316. lionagi/integrations/pandas_/remove_rows.py +0 -61
  317. lionagi/integrations/pandas_/replace_keywords.py +0 -65
  318. lionagi/integrations/pandas_/save.py +0 -131
  319. lionagi/integrations/pandas_/search_keywords.py +0 -69
  320. lionagi/integrations/pandas_/to_df.py +0 -196
  321. lionagi/integrations/pandas_/update_cells.py +0 -54
  322. lionagi/integrations/perplexity_/PerplexityModel.py +0 -274
  323. lionagi/integrations/perplexity_/PerplexityService.py +0 -118
  324. lionagi/integrations/perplexity_/api_endpoints/__init__.py +0 -0
  325. lionagi/integrations/perplexity_/api_endpoints/api_request.py +0 -171
  326. lionagi/integrations/perplexity_/api_endpoints/chat_completions/__init__.py +0 -0
  327. lionagi/integrations/perplexity_/api_endpoints/chat_completions/request/__init__.py +0 -0
  328. lionagi/integrations/perplexity_/api_endpoints/chat_completions/request/request_body.py +0 -121
  329. lionagi/integrations/perplexity_/api_endpoints/chat_completions/response/__init__.py +0 -0
  330. lionagi/integrations/perplexity_/api_endpoints/chat_completions/response/response_body.py +0 -146
  331. lionagi/integrations/perplexity_/api_endpoints/data_models.py +0 -63
  332. lionagi/integrations/perplexity_/api_endpoints/match_response.py +0 -26
  333. lionagi/integrations/perplexity_/perplexity_max_output_token_data.yaml +0 -3
  334. lionagi/integrations/perplexity_/perplexity_price_data.yaml +0 -10
  335. lionagi/integrations/perplexity_/version.py +0 -1
  336. lionagi/integrations/pydantic_/__init__.py +0 -8
  337. lionagi/integrations/pydantic_/break_down_annotation.py +0 -81
  338. lionagi/integrations/pydantic_/new_model.py +0 -208
  339. lionagi/libs/constants.py +0 -98
  340. lionagi/libs/file/path.py +0 -301
  341. lionagi/libs/file/types.py +0 -22
  342. lionagi/libs/func/__init__.py +0 -0
  343. lionagi/libs/func/async_calls/__init__.py +0 -24
  344. lionagi/libs/func/async_calls/alcall.py +0 -210
  345. lionagi/libs/func/async_calls/bcall.py +0 -130
  346. lionagi/libs/func/async_calls/mcall.py +0 -134
  347. lionagi/libs/func/async_calls/pcall.py +0 -149
  348. lionagi/libs/func/async_calls/rcall.py +0 -217
  349. lionagi/libs/func/async_calls/tcall.py +0 -114
  350. lionagi/libs/func/async_calls/ucall.py +0 -85
  351. lionagi/libs/func/decorators.py +0 -277
  352. lionagi/libs/func/lcall.py +0 -57
  353. lionagi/libs/func/params.py +0 -64
  354. lionagi/libs/func/throttle.py +0 -119
  355. lionagi/libs/func/types.py +0 -39
  356. lionagi/libs/func/utils.py +0 -96
  357. lionagi/libs/package/types.py +0 -26
  358. lionagi/libs/parse/__init__.py +0 -1
  359. lionagi/libs/parse/flatten/__init__.py +0 -9
  360. lionagi/libs/parse/flatten/params.py +0 -52
  361. lionagi/libs/parse/json/__init__.py +0 -27
  362. lionagi/libs/parse/json/extract.py +0 -102
  363. lionagi/libs/parse/json/parse.py +0 -179
  364. lionagi/libs/parse/json/to_json.py +0 -71
  365. lionagi/libs/parse/nested/__init__.py +0 -33
  366. lionagi/libs/parse/nested/to_flat_list.py +0 -64
  367. lionagi/libs/parse/params.py +0 -0
  368. lionagi/libs/parse/string_parse/__init__.py +0 -11
  369. lionagi/libs/parse/type_convert/__init__.py +0 -19
  370. lionagi/libs/parse/type_convert/params.py +0 -145
  371. lionagi/libs/parse/type_convert/to_dict.py +0 -333
  372. lionagi/libs/parse/type_convert/to_list.py +0 -186
  373. lionagi/libs/parse/type_convert/to_num.py +0 -358
  374. lionagi/libs/parse/type_convert/to_str.py +0 -195
  375. lionagi/libs/parse/types.py +0 -9
  376. lionagi/libs/parse/validate/__init__.py +0 -14
  377. lionagi/libs/parse/validate/params.py +0 -62
  378. lionagi/libs/parse/xml/__init__.py +0 -10
  379. lionagi/libs/parse/xml/convert.py +0 -56
  380. lionagi/libs/parse/xml/parser.py +0 -93
  381. lionagi/libs/string_similarity/__init__.py +0 -32
  382. lionagi/libs/string_similarity/matcher.py +0 -102
  383. lionagi/libs/string_similarity/utils.py +0 -15
  384. lionagi/libs/utils.py +0 -266
  385. lionagi/protocols/adapters/pandas_adapter.py +0 -96
  386. lionagi/protocols/configs/__init__.py +0 -0
  387. lionagi/protocols/configs/branch_config.py +0 -86
  388. lionagi/protocols/configs/id_config.py +0 -15
  389. lionagi/protocols/configs/imodel_config.py +0 -73
  390. lionagi/protocols/configs/log_config.py +0 -93
  391. lionagi/protocols/configs/retry_config.py +0 -29
  392. lionagi/protocols/configs/types.py +0 -15
  393. lionagi/protocols/operatives/instruct.py +0 -194
  394. lionagi/protocols/operatives/types.py +0 -19
  395. lionagi/protocols/registries/_component_registry.py +0 -23
  396. lionagi/protocols/registries/_pile_registry.py +0 -30
  397. lionagi/service/complete_request_info.py +0 -11
  398. lionagi/service/rate_limiter.py +0 -108
  399. lionagi/service/service.py +0 -41
  400. lionagi/service/service_match_util.py +0 -131
  401. lionagi/service/service_util.py +0 -72
  402. lionagi/service/token_calculator.py +0 -51
  403. lionagi/strategies/__init__.py +0 -0
  404. lionagi/strategies/types.py +0 -21
  405. lionagi-0.5.5.dist-info/RECORD +0 -374
  406. /lionagi/{core → libs/nested}/__init__.py +0 -0
  407. /lionagi/{core/action → libs/schema}/__init__.py +0 -0
  408. /lionagi/{core/communication → libs/validate}/__init__.py +0 -0
  409. /lionagi/{core/forms → operations/strategies}/__init__.py +0 -0
  410. /lionagi/{core/generic → operatives}/__init__.py +0 -0
  411. /lionagi/{core/session → operatives/action}/__init__.py +0 -0
  412. /lionagi/{integrations/anthropic_ → operatives/forms}/__init__.py +0 -0
  413. /lionagi/{core → operatives}/forms/utils.py +0 -0
  414. /lionagi/{integrations/anthropic_/api_endpoints → operatives/instruct}/__init__.py +0 -0
  415. /lionagi/{integrations/anthropic_/api_endpoints/messages → operatives/models}/__init__.py +0 -0
  416. /lionagi/{integrations → protocols/adapters/pandas_}/__init__.py +0 -0
  417. /lionagi/{integrations/anthropic_/api_endpoints/messages/request → protocols/generic}/__init__.py +0 -0
  418. /lionagi/{integrations/groq_ → protocols/graph}/__init__.py +0 -0
  419. /lionagi/{integrations/litellm_ → protocols/mail}/__init__.py +0 -0
  420. /lionagi/{integrations/ollama_ → protocols/messages}/__init__.py +0 -0
  421. /lionagi/{core/communication → protocols/messages}/templates/README.md +0 -0
  422. /lionagi/{core/communication → protocols/messages}/templates/action_request.jinja2 +0 -0
  423. /lionagi/{core/communication → protocols/messages}/templates/action_response.jinja2 +0 -0
  424. /lionagi/{core/communication → protocols/messages}/templates/system_message.jinja2 +0 -0
  425. /lionagi/{core/communication → protocols/messages}/templates/tool_schemas.jinja2 +0 -0
  426. /lionagi/{integrations/ollama_/api_endpoints → service/endpoints}/__init__.py +0 -0
  427. /lionagi/{integrations/ollama_/api_endpoints/chat_completion → service/providers}/__init__.py +0 -0
  428. /lionagi/{integrations/ollama_/api_endpoints/model → service/providers/anthropic_}/__init__.py +0 -0
  429. /lionagi/{integrations/perplexity_ → service/providers/groq_}/__init__.py +0 -0
  430. /lionagi/{protocols/operatives → service/providers/openai_}/__init__.py +0 -0
  431. /lionagi/{protocols/registries → service/providers/openrouter_}/__init__.py +0 -0
  432. {lionagi-0.5.5.dist-info → lionagi-0.6.1.dist-info}/WHEEL +0 -0
  433. {lionagi-0.5.5.dist-info → lionagi-0.6.1.dist-info}/licenses/LICENSE +0 -0
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.5.5"
1
+ __version__ = "0.6.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.5.5
3
+ Version: 0.6.1
4
4
  Summary: An AGentic Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -217,21 +217,22 @@ Classifier: Programming Language :: Python :: 3 :: Only
217
217
  Classifier: Programming Language :: Python :: 3.11
218
218
  Classifier: Programming Language :: Python :: 3.12
219
219
  Classifier: Programming Language :: Python :: 3.13
220
- Requires-Python: >=3.11
221
- Requires-Dist: aiohttp>=3.11.10
222
- Requires-Dist: jinja2>=3.1.4
220
+ Requires-Python: >=3.10
221
+ Requires-Dist: aiocache>=0.12.0
222
+ Requires-Dist: aiohttp>=3.11.0
223
+ Requires-Dist: jinja2>=3.1.0
223
224
  Requires-Dist: litellm>=1.55.3
224
225
  Requires-Dist: pandas>=2.0.0
225
- Requires-Dist: pillow>=11.0.0
226
- Requires-Dist: pydantic>=2.10.3
226
+ Requires-Dist: pillow>=10.0.0
227
+ Requires-Dist: pydantic>=2.0.0
227
228
  Requires-Dist: python-dotenv>=1.0.1
228
229
  Description-Content-Type: text/markdown
229
230
 
230
231
  ![PyPI - Version](https://img.shields.io/pypi/v/lionagi?labelColor=233476aa&color=231fc935)
231
232
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?color=blue)
232
- ![Python Version](https://img.shields.io/badge/python-3.11%2B-blue)
233
+ ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)
233
234
 
234
- [Documentation](https://ocean-lion.com/Welcome) | [Discord](https://discord.gg/aqSJ2v46vu) | [PyPI](https://pypi.org/project/lionagi/) | [Roadmap](https://trello.com/b/3seomsrI/lionagi)
235
+ [Documentation](https://lion-agi.github.io/lionagi/) | [Discord](https://discord.gg/aqSJ2v46vu) | [PyPI](https://pypi.org/project/lionagi/) | [Roadmap](https://trello.com/b/3seomsrI/lionagi)
235
236
 
236
237
  # LION Framework
237
238
  ### Language InterOperable Network - The Future of Controlled AI Operations
@@ -541,7 +542,7 @@ Join our [Discord community](https://discord.gg/aqSJ2v46vu) to:
541
542
  author = {Haiyang Li},
542
543
  month = {12},
543
544
  year = {2023},
544
- title = {LionAGI: Intelligent Integration Framework},
545
+ title = {LionAGI: Towards Automated General Intelligence},
545
546
  url = {https://github.com/lion-agi/lionagi},
546
547
  }
547
548
  ```
@@ -0,0 +1,169 @@
1
+ lionagi/__init__.py,sha256=sBS47lQGuXNAdfSoVLW8szKbCfDWrfAceMMUVYNK3IU,541
2
+ lionagi/_class_registry.py,sha256=dutMsw-FQNqVV5gGH-NEIv90uBkSr8fERJ_x3swbb-s,3112
3
+ lionagi/_errors.py,sha256=wNKdnVQvE_CHEstK7htrrj334RA_vbGcIds-3pUiRkc,455
4
+ lionagi/settings.py,sha256=k9zRJXv57TveyfHO3Vr9VGiKrSwlRUUVKt5zf6v9RU4,1627
5
+ lionagi/utils.py,sha256=hBlGmi8Px_ng3v4_D_k8xNpW3X93u01930lkZIHUQ-Y,73019
6
+ lionagi/version.py,sha256=baAcEjLSYFIeNZF51tOMmA_zAMhN8HvKael-UU-Ruec,22
7
+ lionagi/libs/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
8
+ lionagi/libs/parse.py,sha256=tpEbmIRGuHhLCJlUlm6fjmqm_Z6XJLAXGNFHNuk422I,1011
9
+ lionagi/libs/compress/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
10
+ lionagi/libs/compress/models.py,sha256=MJ5hmRjzlWIyKbkFpkUXjgi8kvGXPUoIvgdVZXUnUZ8,1906
11
+ lionagi/libs/compress/utils.py,sha256=QZQWB-lJiarqlr0fiRN6yUdOddGsqK89qvPWT2YsMM0,1802
12
+ lionagi/libs/file/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
13
+ lionagi/libs/file/chunk.py,sha256=YS1EZXQFnYlFLKMveLXHKWZGk43vtLjuYb8D663T4IA,8835
14
+ lionagi/libs/file/file_ops.py,sha256=_h30SBV-Es4-X7c5iPoRE3oQFu_V7OIxWQVU7c5UQvw,3430
15
+ lionagi/libs/file/params.py,sha256=bsau6qtI5aqggMTT9IXp1q8biSWtMlpQ5d_CR5N4xXo,5824
16
+ lionagi/libs/file/process.py,sha256=JqmOp7LpehYzOnLhBkRveHtHu2PrRzdUUobcNfV1U08,5199
17
+ lionagi/libs/file/save.py,sha256=Hi4Fl_K-rByMCWmepDh0ulH9ZvRuRp2KnIN5mZwqX_8,2842
18
+ lionagi/libs/nested/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
19
+ lionagi/libs/nested/flatten.py,sha256=uH8cl3UU9sAo9xOqNATQGAXunrVdEjpEAZ_o2MD3t_o,5479
20
+ lionagi/libs/nested/nfilter.py,sha256=Y5NAp9AHuqkQXeVUhq-N5-tkljIGevyTV5lXBI_Bz8o,1768
21
+ lionagi/libs/nested/nget.py,sha256=BHMy6LTZ8gSqU99S10QFAuwCA7qMpWVhqMjKUE00BJQ,1284
22
+ lionagi/libs/nested/ninsert.py,sha256=0ekL4X5rX3516mOKll-RxJ6oP9LvUt-85AUsBx-q-G4,3887
23
+ lionagi/libs/nested/nmerge.py,sha256=rlZudYzDPwD95HyFsCEfkeCvK8cdi7HNND1Pz-afQOc,5304
24
+ lionagi/libs/nested/npop.py,sha256=mzL8ooHW5kexpJPhJvx_k9mn4ahE3dx_TmMi_nn9im0,2173
25
+ lionagi/libs/nested/nset.py,sha256=8fUcnRKLhpfDnkphpN43j0oAbrX_3Xlxf01KUUY439w,3393
26
+ lionagi/libs/nested/unflatten.py,sha256=uVfRrp1bECbLFxkxUxFm_p2Pul4CQsPZYWaZVeSOb4k,2618
27
+ lionagi/libs/nested/utils.py,sha256=IqfElHkg4-lg65hsJaylOkNevt9wWdBqrBM4Ej5y0QM,6090
28
+ lionagi/libs/package/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
29
+ lionagi/libs/package/imports.py,sha256=SQKRLnwU5K-Fe_7VdOb2DmL33ATq8uOc3y4DV9oikmw,4999
30
+ lionagi/libs/package/management.py,sha256=dZ5t23H_V6ig4kfE4sWcYV_bSaGWfQhj24wYkRsrr-k,1684
31
+ lionagi/libs/package/params.py,sha256=1AMF-YtiyYPcS9P_7IbLq1iJjjX12o3dSUbQ0LJVTM0,1056
32
+ lionagi/libs/package/system.py,sha256=_kBjraQGEQOWfR956YSwuIvMXksfwnK_qNm6mZ4LjuA,564
33
+ lionagi/libs/schema/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
34
+ lionagi/libs/schema/as_readable.py,sha256=zSplL3X99DellAqbHaDn9T-MZqG9n2TOUpsrq5IUAbA,3085
35
+ lionagi/libs/schema/extract_code_block.py,sha256=ZfOFh6psjYyS9nm7zJoMMUYBkFPh9-JmL-Bq2Gp3OHY,2394
36
+ lionagi/libs/schema/extract_docstring.py,sha256=VbxB4ZDsaZAMc0r8hphdvSsqXSyJ2w80zloAUirGFts,5729
37
+ lionagi/libs/schema/function_to_schema.py,sha256=_wuuZOxohCDdJCPnUi8_YobJ47XRVI5HjrwnWO_3xeQ,3393
38
+ lionagi/libs/schema/json_schema.py,sha256=Z45azAI_7lr5BWj-X6VQwUhuvuqXibciXgla8wi4gPY,7670
39
+ lionagi/libs/validate/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
40
+ lionagi/libs/validate/common_field_validators.py,sha256=5pu3kH13dVy1Nq-AQcHx0bIPusOnhvvCwUmaBX5l8bw,4778
41
+ lionagi/libs/validate/fuzzy_match_keys.py,sha256=S7kzJnh-aKDMFbecmtMjFHNk2h-xMJqtQygMnq839lY,6255
42
+ lionagi/libs/validate/fuzzy_validate_mapping.py,sha256=SQqyxgrAgJ5zBKxIAnulWsZXb-PAzLBEF2NhV6G0x-E,4935
43
+ lionagi/libs/validate/string_similarity.py,sha256=7x8D4LZCMNJGz2ZCeKmct7Nc4i8m_ORoHIeGvkeMZOA,8733
44
+ lionagi/libs/validate/validate_boolean.py,sha256=h3d7Dn7asJokBozWaKxaV_3Y6vUWBc0-zfNJjTQ9Bo8,3614
45
+ lionagi/operations/__init__.py,sha256=_TvmWRotAQILyE3JWls7uY1luV7GAwwddtVdKnvjgIk,280
46
+ lionagi/operations/types.py,sha256=_TvmWRotAQILyE3JWls7uY1luV7GAwwddtVdKnvjgIk,280
47
+ lionagi/operations/utils.py,sha256=Twy6L_UFt9JqJFRYuKKTKVZIXsePidNl5ipcYcCbesI,1220
48
+ lionagi/operations/brainstorm/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
49
+ lionagi/operations/brainstorm/brainstorm.py,sha256=88Cq2IBrUs5du9q_8rf_VmhLYBfGKJv4rCeDTcJ07_g,17196
50
+ lionagi/operations/brainstorm/prompt.py,sha256=f-Eh6pO606dT2TrX9BFv_einRDpYwFi6Gep9Strd1cM,610
51
+ lionagi/operations/plan/__init__.py,sha256=AFkAmOJBTqPlYuqFRRn7rCvIw3CGh9XXH_22cNWbfig,156
52
+ lionagi/operations/plan/plan.py,sha256=Uxysob3evbjhXWS_wseO3Mb_A90p1wk3ralJ17rHFCk,15333
53
+ lionagi/operations/plan/prompt.py,sha256=ig4JjJR5gV-lXPRVbiaJuL9qeoahM_afYvWphpY1lWA,993
54
+ lionagi/operations/select/__init__.py,sha256=an28I5IbKj0waICk5SjYnz3WmkQLpIARO0yNUu9VWNE,162
55
+ lionagi/operations/select/prompt.py,sha256=2OJQE8EKPj9nubP_drp6BYyF7J8RiDs1BEkv0D-HLn8,299
56
+ lionagi/operations/select/select.py,sha256=B_XZcdmW9mmVGFZGnfCn89TxZvAMlS27YcD9RQ96f40,3166
57
+ lionagi/operations/select/utils.py,sha256=hYOSGx7vMvjGHibcFOUuCfTXFO2IzzIUwQy82PQtluQ,3251
58
+ lionagi/operations/strategies/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
59
+ lionagi/operations/strategies/base.py,sha256=cfZXUZYPypW-hFZJj7HDtTPc-x99XB6dO_S5os1srTk,1820
60
+ lionagi/operations/strategies/concurrent.py,sha256=bLLL90LYywkxGlMY8XXGsZ1GRZrtB_8lsfkqspLgQ6o,2721
61
+ lionagi/operations/strategies/concurrent_chunk.py,sha256=9qwYoqO0LO1BMIyxU-tc_9ppBK0J94cnWs3e7wx7PR0,1678
62
+ lionagi/operations/strategies/concurrent_sequential_chunk.py,sha256=5Zw9fO1YWSj81w6IjOdEPzHE-4TxIdui-ljjrAsbEEI,3658
63
+ lionagi/operations/strategies/params.py,sha256=XNCD8sQJCm7xk0yGFKSQ14FuUNV1f8wLfNNJg_NYsn8,5407
64
+ lionagi/operations/strategies/sequential.py,sha256=nSMtYy10P4W8U2SoARfKCBDN6y8_WoubKjoORUnewjY,949
65
+ lionagi/operations/strategies/sequential_chunk.py,sha256=bs_0zZJjJpYdmEEWx3mwh3it5ErQYfZr-ImahyKEy8Y,3161
66
+ lionagi/operations/strategies/sequential_concurrent_chunk.py,sha256=GJurnTuu6U7FOPR9mZxkjoJMIiQbgvRGt5iZZtmB2mY,3559
67
+ lionagi/operations/strategies/utils.py,sha256=plZg84Yqba5GAmNPvsiUjbAavdDmCfwZkKnK_c_aORw,1414
68
+ lionagi/operatives/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
69
+ lionagi/operatives/manager.py,sha256=pFGKSOIkXayHfDHCMJJwZXBhx3O02UlYK5mZ_-53AVg,190
70
+ lionagi/operatives/operative.py,sha256=WZeg1XHS8iuzs4I3-va9FS9tOWu0XZ7xnOVzHthvEUQ,6724
71
+ lionagi/operatives/step.py,sha256=DevwisZc2q88ynUiiSu7VBEY2A_G4Q5iRLrVgVLHNJU,9843
72
+ lionagi/operatives/types.py,sha256=8krpGIeJL2GkO580ePOuAZfGc7vUVPIanemoA77tbVY,1697
73
+ lionagi/operatives/action/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
74
+ lionagi/operatives/action/function_calling.py,sha256=VHUq8qebCAAdaWcPJQCZNI-P6zC_P1kp9o-d7nhZf_0,4602
75
+ lionagi/operatives/action/manager.py,sha256=H50L9fv6kpQ87vW4nEIfP1JHZ5gX4fQs0uPDeRpEYEw,7929
76
+ lionagi/operatives/action/request_response_model.py,sha256=7X_ZkcgmQ0D77qyP8_39RdEAKASCjEPWH4ey83jIUKc,2326
77
+ lionagi/operatives/action/tool.py,sha256=fUwlzmi6kuuwHU6xA8Soo_bWOgD-I7TBLtJ-WJ1OBLk,4277
78
+ lionagi/operatives/action/utils.py,sha256=vUe7Aysuzbg16rAfe2Ttp5QUz5_L6mMedBVAWzGAHwk,4330
79
+ lionagi/operatives/forms/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
80
+ lionagi/operatives/forms/base.py,sha256=ALPREgOkRcY2wtRG0JpTXztlohkRjyCiwoleQfGCpSg,7207
81
+ lionagi/operatives/forms/form.py,sha256=5z5VfDqcKVFYvhDVZZQwMDczSof2lSx_VxQo32jlkGk,27178
82
+ lionagi/operatives/forms/report.py,sha256=KUapeSAB67ElyU1fl4DxtfvobKGnpDPetso6cT6GT4E,11167
83
+ lionagi/operatives/forms/utils.py,sha256=sCjYRy-EJIh1py9qIb04LVgALy2YiPHbhXhNyDNwvoQ,701
84
+ lionagi/operatives/instruct/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
85
+ lionagi/operatives/instruct/base.py,sha256=dyw5JZw0o1FCm4KQqeSvYGaO75ReHQQ-xOyPjgOdfJM,1877
86
+ lionagi/operatives/instruct/instruct.py,sha256=kRKc-OGcY4nSMqTTR7uUjMFBJpYcBfKv8iiEmpKAp0s,2674
87
+ lionagi/operatives/instruct/instruct_collection.py,sha256=Fj7R7TR33PdkqzbWhev52jKeIMmEQ1q227Bu4zsrHiA,1449
88
+ lionagi/operatives/instruct/node.py,sha256=0g7g2jsLO8L8VlD-L1mFmjcFTwWy39moWCDtLNmNEFY,317
89
+ lionagi/operatives/instruct/prompts.py,sha256=g16IooxpAJfNvv1jdRe7nLQ28mO9UezRS2SDQE8Lnus,1729
90
+ lionagi/operatives/instruct/reason.py,sha256=1DYviNf5D_3DH0lnguXYGEyFycYzRjoyLob-BnIpmSA,1679
91
+ lionagi/operatives/models/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
92
+ lionagi/operatives/models/field_model.py,sha256=hksMP7GR-sSWpKTuYXMj35ZWVo18kKcqRSI6KgNzZI4,6054
93
+ lionagi/operatives/models/model_params.py,sha256=yElYJ0el2CFykdVlBHhpVG77PO_q6Zq77hbjIx-LZdk,9642
94
+ lionagi/operatives/models/note.py,sha256=8TS0Zi0eSo1fmVoqBMWB6ChSrXKb36ozAM70o7P4kTU,9495
95
+ lionagi/operatives/models/operable_model.py,sha256=mnTIAXJHJecXjqKNZWSch5w6x3U3Fl_9mUK4RudnM64,15573
96
+ lionagi/operatives/models/schema_model.py,sha256=-BeCwW_1Rle--w-f7MajbOYH7t_8SPWw0_qK0fpTsRg,666
97
+ lionagi/protocols/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
98
+ lionagi/protocols/_concepts.py,sha256=aIV3cIuKxRcEFdROemlFR6mMAwqiYv-rjkZQ4rHBfXo,1554
99
+ lionagi/protocols/types.py,sha256=M-cWgRGl8vaU776MuX-QSQVmaI1rbXmzyW9tfPHzGYc,2065
100
+ lionagi/protocols/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ lionagi/protocols/adapters/adapter.py,sha256=CyAZ4IR6S4FSmKMk_3YzyE1Ny8TJjeYc4h1Z710WL6M,2417
102
+ lionagi/protocols/adapters/json_adapter.py,sha256=Jl0pyu2r-vZ5PVfqBzp3eAl9no9MQwg2ln5ty3UDI4s,2337
103
+ lionagi/protocols/adapters/types.py,sha256=qYCbxjWNLVIUOosC3N8oJHP8tDJ9kjsnaYuUh_h-70c,563
104
+ lionagi/protocols/adapters/pandas_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ lionagi/protocols/adapters/pandas_/csv_adapter.py,sha256=iKBX1XXRh85O4595pvxKwxv5A-80OYBhzQoaAeF6MgI,1307
106
+ lionagi/protocols/adapters/pandas_/excel_adapter.py,sha256=XoPD16Kus6lPNUEsy8JZDi5JMlwSsB6VVOQU3QIOoIs,1356
107
+ lionagi/protocols/adapters/pandas_/pd_dataframe_adapter.py,sha256=3JQFTN7xTovPet98cOxx2mCq1O7OXZnXZEZv6m06dtc,908
108
+ lionagi/protocols/adapters/pandas_/pd_series_adapter.py,sha256=f5mj4HSL6G1R02RaRRxQ06bfxble19da8BtH3WD889M,434
109
+ lionagi/protocols/generic/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
110
+ lionagi/protocols/generic/element.py,sha256=Pi-YHinDDab7sIYNo4Caj-gJGBidcIAEN1Bpl1D100Q,14161
111
+ lionagi/protocols/generic/event.py,sha256=SjR9N4Egr5_oqOBSKVsxQjsn6MlqNcwf48bee-qIT6Y,4879
112
+ lionagi/protocols/generic/log.py,sha256=xi8dRKwxtxVYU8T_E4wYJE4lCQzkERgAUARcAN7ZngI,7441
113
+ lionagi/protocols/generic/pile.py,sha256=kXzN9ZHmmR__tOItwvx9xcB9IDxJYYHIkHOtDX0wsFE,31509
114
+ lionagi/protocols/generic/processor.py,sha256=4Gkie1DxE0U-uZAdNBTuTibUlyeEGm_OyVlMXilCEm8,10115
115
+ lionagi/protocols/generic/progression.py,sha256=3PjIBlPoj7jahy75ERbo9vHKVNU7fFl4be5ETNzphJU,15160
116
+ lionagi/protocols/graph/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
117
+ lionagi/protocols/graph/edge.py,sha256=LOESNQc3aVNKXZrr5ZrRCK5biTWkyxGtTQ7GxJFyCx8,5221
118
+ lionagi/protocols/graph/graph.py,sha256=bRlZot_6eN4K3CYxgFnfehnQHDGJTQ3OPqITaz8ETiU,10055
119
+ lionagi/protocols/graph/node.py,sha256=5VStUHSV0Qjv6DtwJPCzod2stveixnsErJR09uLLYhc,3773
120
+ lionagi/protocols/mail/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
121
+ lionagi/protocols/mail/exchange.py,sha256=bT-JUU9CXDdUn6GlAjB1Pc4KD7J8Ncm7s-xbmFKI45g,4066
122
+ lionagi/protocols/mail/mail.py,sha256=4O4R0ak7dFar80wjj1DK64SPgRhYAR7qKjv_tSDbkXA,625
123
+ lionagi/protocols/mail/mailbox.py,sha256=lOHi74714hTd22nH9WxXcWD1DmIohj_H4NZsxbe6LD4,1297
124
+ lionagi/protocols/mail/manager.py,sha256=hQ63lZIdmx4L0t2ofhnRHjobA-Bi0uuCNyd0yhwldhE,5617
125
+ lionagi/protocols/mail/package.py,sha256=qjLzvSyZ3R4AQg2nUcF5j8h-3ggWS22prxYtSPPP0PI,1409
126
+ lionagi/protocols/messages/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
127
+ lionagi/protocols/messages/action_request.py,sha256=PpuB1UQ_b0Y1V5K8fQLX7-X4ULyb9RYOxUIyLpk7UGg,5010
128
+ lionagi/protocols/messages/action_response.py,sha256=24p8ZBSYuckvYlySGoR2U7Au6ZYKtDVEI8owv5fqzDg,3818
129
+ lionagi/protocols/messages/assistant_response.py,sha256=yg0FHttHuVMX1DIAAHpXSVDWmFh2W6sSqH1E8H8Nuro,4992
130
+ lionagi/protocols/messages/base.py,sha256=6eAACK_b7pvjCcEswxm9FHqMXNOBx6r8cnIP_jUDBtQ,1567
131
+ lionagi/protocols/messages/instruction.py,sha256=gz5d0yMURN_TaGwtvKFyg4miOEg8TZPAF7rC1ts57kM,18138
132
+ lionagi/protocols/messages/manager.py,sha256=TFbgnkeBvsFaWXR01o8PsJ4SGzlOa6dnDOWJunVp8Lo,13762
133
+ lionagi/protocols/messages/message.py,sha256=mhQwFBxaNE71KUWvU5tkLxAqaLwTHH3DvWbjLXrTf9A,6686
134
+ lionagi/protocols/messages/system.py,sha256=kPmUMGIarOBlbD6f-QCS-ol4OfFI6HOo1nRBQGJy-Wo,3393
135
+ lionagi/protocols/messages/templates/README.md,sha256=Ch4JrKSjd85fLitAYO1OhZjNOGKHoEwaKQlcV16jiUI,1286
136
+ lionagi/protocols/messages/templates/action_request.jinja2,sha256=d6OmxHKyvvNDSK4bnBM3TGSUk_HeE_Q2EtLAQ0ZBEJg,120
137
+ lionagi/protocols/messages/templates/action_response.jinja2,sha256=Mg0UxmXlIvtP_KPB0GcJxE1TP6lml9BwdPkW1PZxkg8,142
138
+ lionagi/protocols/messages/templates/assistant_response.jinja2,sha256=oKOX4myBy7it1J1f92mvTS1iBUUlZfsJsY2fC42ygvc,119
139
+ lionagi/protocols/messages/templates/instruction_message.jinja2,sha256=L-ptw5OHxdL1KVKVhLOn0KAFw6IEFI9QHZxiFuovzhk,1382
140
+ lionagi/protocols/messages/templates/system_message.jinja2,sha256=JRKJ0aFpYfaXSFouKc_N4unZ35C3yZTOWhIrIdCB5qk,215
141
+ lionagi/protocols/messages/templates/tool_schemas.jinja2,sha256=ozIaSDCRjIAhLyA8VM6S-YqS0w2NcctALSwx4LjDwII,126
142
+ lionagi/service/__init__.py,sha256=DMGXIqPsmut9H5GT0ZeSzQIzYzzPwI-2gLXydpbwiV8,21
143
+ lionagi/service/imodel.py,sha256=-FudX8C_wmc7ByUv-pILrybtQd4E2gfE51C5l0IR0ho,10815
144
+ lionagi/service/manager.py,sha256=MKSYBkg23s7YhZy5GEFdnpspEnhPVfFhpkpoJe20D7k,1435
145
+ lionagi/service/types.py,sha256=v9SAn5-GTmds4Mar13Or_VFrRHCinBK99dmeDUd-QNk,486
146
+ lionagi/service/endpoints/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
147
+ lionagi/service/endpoints/base.py,sha256=RbBBQIbtNtkP1LT9U3ZrhL35SfmVIpaq-AGW8d538k4,18275
148
+ lionagi/service/endpoints/chat_completion.py,sha256=9ltSQaKPH43WdEDW32_-f5x07I9hOU8g-T_PAG-nYsQ,2529
149
+ lionagi/service/endpoints/match_endpoint.py,sha256=n7F9NoTXfUBL29HrDcFLF5AXYR8pcx_IumQ7BiJXC-w,1740
150
+ lionagi/service/endpoints/rate_limited_processor.py,sha256=GkWK9XR3XNwn6qKUif6HMeqMJtO1E2Hq_tqGYai_wp8,4681
151
+ lionagi/service/endpoints/token_calculator.py,sha256=MflqImGUr_1jh465hB7cUAaIPICBkjirvre1fWGXLrA,6161
152
+ lionagi/service/providers/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
153
+ lionagi/service/providers/anthropic_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
154
+ lionagi/service/providers/anthropic_/messages.py,sha256=PTZZ2VXVMRHWY84YFIzrft9gVrcH2V-NIq_Phi9_-xI,1760
155
+ lionagi/service/providers/groq_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
156
+ lionagi/service/providers/groq_/chat_completions.py,sha256=578NqQYyrIYjIemyL3bagvFGE6ear_w4S1HNlPWA5mg,1343
157
+ lionagi/service/providers/openai_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
158
+ lionagi/service/providers/openai_/chat_completions.py,sha256=SfRcEnMTn3MD59YuZClRWGp1uDXJi7L0mp_Gc4nnpQs,1522
159
+ lionagi/service/providers/openrouter_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
160
+ lionagi/service/providers/openrouter_/chat_completions.py,sha256=MRf4ZbMCgzNIL4gxUZTD-KeFe8JYDn1Fu40Jph3bCH8,1525
161
+ lionagi/service/providers/perplexity_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
162
+ lionagi/service/providers/perplexity_/chat_completions.py,sha256=SsDbrtXwQsR4Yu2VMU43KfeS86QWI8UTNhDth5lNWNs,1055
163
+ lionagi/session/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
164
+ lionagi/session/branch.py,sha256=-lu63-Eua1pgo9RVoiS54G4_JtmNC__ZEaegRtKFPro,47448
165
+ lionagi/session/session.py,sha256=A2PCG1BD1noMLtCJD3C_H7r-0GUQ_ru2szOhF1pOCtY,8976
166
+ lionagi-0.6.1.dist-info/METADATA,sha256=_KZh-djuuzJ-mwnUvpVUJ7TGmw_ghQnj0_QvqG8nkFY,22776
167
+ lionagi-0.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
168
+ lionagi-0.6.1.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
169
+ lionagi-0.6.1.dist-info/RECORD,,
@@ -1,289 +0,0 @@
1
- # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
- #
3
- # SPDX-License-Identifier: Apache-2.0
4
-
5
- from functools import singledispatchmethod
6
-
7
- from lionagi.core.communication.action_request import ActionRequest
8
- from lionagi.core.generic.log_manager import LogManager
9
- from lionagi.core.typing import Any, Callable
10
- from lionagi.libs.parse.types import to_dict, to_list
11
- from lionagi.protocols.operatives.action import ActionRequestModel
12
-
13
- from .function_calling import FunctionCalling
14
- from .tool import Tool, func_to_tool
15
-
16
- # Type definitions for tool registration and lookup
17
- FUNCTOOL = Tool | Callable[..., Any]
18
- FINDABLE_TOOL = FUNCTOOL | str
19
- INPUTTABLE_TOOL = dict[str, Any] | bool | FINDABLE_TOOL
20
- TOOL_TYPE = FINDABLE_TOOL | list[FINDABLE_TOOL] | INPUTTABLE_TOOL
21
-
22
-
23
- class ActionManager:
24
- """Manages registration and execution of tools.
25
-
26
- The ActionManager serves as a central registry for tools, providing:
27
- 1. Tool registration and management
28
- 2. Function call matching to registered tools
29
- 3. Tool invocation with argument handling
30
- 4. Logging of tool execution
31
-
32
- Tools can be registered either as Tool objects or as callable functions
33
- (which are automatically converted to Tool objects). The manager supports
34
- various formats for function calls and provides comprehensive logging
35
- of tool execution.
36
-
37
- Attributes:
38
- registry (dict[str, Tool]): Dictionary mapping tool names to Tool objects.
39
- logger (LogManager): Logger for tracking tool execution.
40
- """
41
-
42
- def __init__(
43
- self, registry: dict[str, Tool] | None = None, logger=None
44
- ) -> None:
45
- """Initialize the ActionManager instance.
46
-
47
- Args:
48
- registry: Optional dictionary of pre-registered tools.
49
- Keys are tool names, values are Tool objects.
50
- logger: Optional logger for tracking tool execution.
51
- If None, creates a new LogManager instance.
52
- """
53
- self.registry: dict[str, Tool] = registry or {}
54
- self.logger = logger or LogManager()
55
-
56
- def __contains__(self, tool: FINDABLE_TOOL) -> bool:
57
- """Check if a tool is registered in the registry.
58
-
59
- Supports checking by:
60
- - Tool object
61
- - Tool name (string)
62
- - Callable function
63
-
64
- Args:
65
- tool: The tool to check for registration.
66
-
67
- Returns:
68
- bool: True if tool is registered, False otherwise.
69
- """
70
- if isinstance(tool, Tool):
71
- return tool.function_name in self.registry
72
- elif isinstance(tool, str):
73
- return tool in self.registry
74
- elif callable(tool):
75
- return tool.__name__ in self.registry
76
- return False
77
-
78
- def register_tool(
79
- self,
80
- tool: FUNCTOOL,
81
- update: bool = False,
82
- ) -> None:
83
- """Register a single tool in the registry.
84
-
85
- If the tool is a callable function, it is automatically converted
86
- to a Tool object. Existing tools can be updated if update=True.
87
-
88
- Args:
89
- tool: The tool to register (Tool object or callable).
90
- update: If True, update existing tool; if False, raise error.
91
-
92
- Raises:
93
- ValueError: If tool already registered and update=False.
94
- TypeError: If tool is not a Tool object or callable.
95
- """
96
- if not update and tool in self:
97
- name = None
98
- if isinstance(tool, Tool):
99
- name = tool.function_name
100
- elif callable(tool):
101
- name = tool.__name__
102
- raise ValueError(f"Tool {name} is already registered.")
103
-
104
- if callable(tool):
105
- tool = func_to_tool(tool)[0]
106
- if not isinstance(tool, Tool):
107
- raise TypeError("Please register a Tool object or callable.")
108
-
109
- self.registry[tool.function_name] = tool
110
-
111
- def register_tools(
112
- self,
113
- tools: list[FUNCTOOL] | FUNCTOOL,
114
- update: bool = False,
115
- ) -> None:
116
- """Register multiple tools in the registry.
117
-
118
- Handles both single tools and lists of tools. Each tool can be
119
- either a Tool object or a callable function.
120
-
121
- Args:
122
- tools: Single tool or list of tools to register.
123
- update: If True, update existing tools; if False, raise error.
124
-
125
- Raises:
126
- ValueError: If any tool is already registered.
127
- TypeError: If any tool is not a Tool object or callable.
128
- """
129
- tools_list = tools if isinstance(tools, list) else [tools]
130
- [
131
- self.register_tool(tool, update=update)
132
- for tool in to_list(tools_list, dropna=True, flatten=True)
133
- ]
134
-
135
- @singledispatchmethod
136
- def match_tool(self, func_call: Any) -> FunctionCalling:
137
- """Match a function call to a registered tool.
138
-
139
- This is a single dispatch method that handles different function
140
- call formats. The base method handles unsupported types.
141
-
142
- Args:
143
- func_call: The function call specification.
144
-
145
- Raises:
146
- TypeError: If input type is not supported.
147
- """
148
- raise TypeError(f"Unsupported type {type(func_call)}")
149
-
150
- @match_tool.register
151
- def _(self, func_call: tuple) -> FunctionCalling:
152
- if len(func_call) == 2:
153
- function_name = func_call[0]
154
- arguments = func_call[1]
155
- tool = self.registry.get(function_name)
156
- if not tool:
157
- raise ValueError(f"Function {function_name} is not registered")
158
- return FunctionCalling(func_tool=tool, arguments=arguments)
159
- else:
160
- raise ValueError(f"Invalid function call {func_call}")
161
-
162
- @match_tool.register
163
- def _(self, func_call: dict) -> FunctionCalling:
164
- if len(func_call) == 2 and (
165
- {
166
- "function",
167
- "arguments",
168
- }
169
- <= func_call.keys()
170
- ):
171
- function_name = func_call["function"]
172
- tool = self.registry.get(function_name)
173
- if not tool:
174
- raise ValueError(f"Function {function_name} is not registered")
175
- return FunctionCalling(
176
- func_tool=tool,
177
- arguments=func_call["arguments"],
178
- )
179
- raise ValueError(f"Invalid function call {func_call}")
180
-
181
- @match_tool.register
182
- def _(
183
- self, func_call: ActionRequest | ActionRequestModel
184
- ) -> FunctionCalling:
185
- tool = self.registry.get(func_call.function)
186
- if not tool:
187
- func_ = func_call.function
188
- raise ValueError(f"Function {func_} is not registered.")
189
- return FunctionCalling(func_tool=tool, arguments=func_call.arguments)
190
-
191
- @match_tool.register
192
- def _(self, func_call: str) -> FunctionCalling:
193
- _call = None
194
- try:
195
- _call = to_dict(func_call, str_type="json", fuzzy_parse=True)
196
- except Exception as e:
197
- raise ValueError(f"Invalid function call {func_call}") from e
198
-
199
- if isinstance(_call, dict):
200
- return self.match_tool(_call)
201
- raise ValueError(f"Invalid function call {func_call}")
202
-
203
- async def invoke(self, func_call: dict | str | ActionRequest) -> Any:
204
- """Invoke a tool based on the provided function call.
205
-
206
- 1. Matches function call to registered tool
207
- 2. Creates FunctionCalling instance
208
- 3. Invokes function with arguments
209
- 4. Logs execution details
210
- 5. Returns result
211
-
212
- Args:
213
- func_call: Function call specification in supported format.
214
- log_manager: Optional logger for execution tracking.
215
-
216
- Returns:
217
- Result of tool invocation after processing pipeline.
218
-
219
- Raises:
220
- ValueError: If function not registered or call format invalid.
221
- """
222
- function_calling = self.match_tool(func_call)
223
- result = await function_calling.invoke()
224
- await self.logger.alog(function_calling.to_log())
225
- return result
226
-
227
- @property
228
- def schema_list(self) -> list[dict[str, Any]]:
229
- """List all tool schemas currently registered.
230
-
231
- Returns:
232
- List of OpenAI function schemas for all registered tools.
233
- """
234
- return [tool.schema_ for tool in self.registry.values()]
235
-
236
- def get_tool_schema(
237
- self,
238
- tools: TOOL_TYPE = False,
239
- **kwargs: Any,
240
- ) -> dict[str, Any]:
241
- """Retrieve the schema for specific tools or all tools.
242
-
243
- Args:
244
- tools: Specification of which tools to retrieve schemas for.
245
- If True, return all tools. If False, return empty dict.
246
- Can also be a specific tool or list of tools.
247
- **kwargs: Additional keyword arguments to include in output.
248
-
249
- Returns:
250
- Dictionary containing tool schemas and additional kwargs.
251
-
252
- Raises:
253
- ValueError: If a specified tool is not registered.
254
- TypeError: If an unsupported tool type is provided.
255
- """
256
- if isinstance(tools, list | tuple) and len(tools) == 1:
257
- tools = tools[0]
258
- if isinstance(tools, bool):
259
- if tools:
260
- tool_kwarg = {"tools": self.schema_list}
261
- else:
262
- tool_kwarg = {}
263
- else:
264
- tool_kwarg = {"tools": self._get_tool_schema(tools)}
265
- return tool_kwarg | kwargs
266
-
267
- def _get_tool_schema(
268
- self,
269
- tool: Any,
270
- ) -> dict[str, Any] | list[dict[str, Any]]:
271
- if isinstance(tool, dict):
272
- return tool
273
- if isinstance(tool, Callable):
274
- name = tool.__name__
275
- if name in self.registry:
276
- return self.registry[name].schema_
277
- raise ValueError(f"Tool {name} is not registered.")
278
-
279
- elif isinstance(tool, Tool) or isinstance(tool, str):
280
- name = tool.function_name if isinstance(tool, Tool) else tool
281
- if name in self.registry:
282
- return self.registry[name].schema_
283
- raise ValueError(f"Tool {name} is not registered.")
284
- elif isinstance(tool, list):
285
- return [self._get_tool_schema(t) for t in tool]
286
- raise TypeError(f"Unsupported type {type(tool)}")
287
-
288
-
289
- __all__ = ["ActionManager"]
@@ -1,109 +0,0 @@
1
- # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
- #
3
- # SPDX-License-Identifier: Apache-2.0
4
-
5
- from lionagi.core.generic.types import Element, Log
6
- from lionagi.core.typing import Any, Enum, NoReturn, PrivateAttr, override
7
- from lionagi.settings import Settings, TimedFuncCallConfig
8
-
9
-
10
- class EventStatus(str, Enum):
11
- """Status states for tracking action execution progress.
12
-
13
- Attributes:
14
- PENDING: Initial state before execution starts
15
- PROCESSING: Action is currently being executed
16
- COMPLETED: Action completed successfully
17
- FAILED: Action failed during execution
18
- """
19
-
20
- PENDING = "pending"
21
- PROCESSING = "processing"
22
- COMPLETED = "completed"
23
- FAILED = "failed"
24
-
25
-
26
- class ObservableAction(Element):
27
- """Base class for actions that can be monitored and tracked.
28
-
29
- Provides functionality for tracking execution status, timing, and results
30
- of action invocations. Inherits from Element for serialization capabilities.
31
-
32
- Attributes:
33
- status (EventStatus): Current execution status of the action
34
- execution_time (float | None): Time taken to execute the action in seconds
35
- execution_response (Any): Result returned from the action execution
36
- execution_error (str | None): Error message if execution failed
37
- _timed_config (TimedFuncCallConfig): Configuration for timed execution
38
- _content_fields (list): Fields to include in content section of logs
39
- """
40
-
41
- status: EventStatus = EventStatus.PENDING
42
- execution_time: float | None = None
43
- execution_response: Any = None
44
- execution_error: str | None = None
45
- _timed_config: TimedFuncCallConfig | None = PrivateAttr(None)
46
- _content_fields: list = PrivateAttr(["execution_response"])
47
-
48
- @override
49
- def __init__(
50
- self, timed_config: dict | TimedFuncCallConfig | None, **kwargs: Any
51
- ) -> None:
52
- """Initialize an ObservableAction instance.
53
-
54
- Args:
55
- timed_config: Configuration for timed function execution.
56
- If None, uses default config from Settings.
57
- If dict, converts to TimedFuncCallConfig.
58
- **kwargs: Additional keyword arguments passed to TimedFuncCallConfig
59
- if timed_config is a dict.
60
- """
61
- super().__init__()
62
- if timed_config is None:
63
- self._timed_config = Settings.Config.TIMED_CALL
64
-
65
- else:
66
- if isinstance(timed_config, TimedFuncCallConfig):
67
- timed_config = timed_config.to_dict()
68
- if isinstance(timed_config, dict):
69
- timed_config = {**timed_config, **kwargs}
70
- timed_config = TimedFuncCallConfig(**timed_config)
71
- self._timed_config = timed_config
72
-
73
- def to_log(self) -> Log:
74
- """Convert the action to a log entry.
75
-
76
- Creates a structured log entry with execution details split into
77
- content and loginfo sections. Content includes execution results,
78
- while loginfo includes metadata and status information.
79
-
80
- Returns:
81
- Log: A log entry representing the action's execution state
82
- and results.
83
- """
84
- dict_ = self.to_dict()
85
- dict_["status"] = self.status.value
86
- content = {k: dict_[k] for k in self._content_fields if k in dict_}
87
- loginfo = {k: dict_[k] for k in dict_ if k not in self._content_fields}
88
- return Log(content=content, loginfo=loginfo)
89
-
90
- @classmethod
91
- def from_dict(cls, data: dict, /, **kwargs: Any) -> NoReturn:
92
- """Event cannot be re-created from dictionary.
93
-
94
- This method is intentionally not implemented as actions represent
95
- one-time events that should not be recreated from serialized state.
96
-
97
- Args:
98
- data: Dictionary of serialized action data
99
- **kwargs: Additional keyword arguments
100
-
101
- Raises:
102
- NotImplementedError: Always raised as actions cannot be recreated
103
- """
104
- raise NotImplementedError(
105
- "An event cannot be recreated. Once it's done, it's done."
106
- )
107
-
108
-
109
- __all__ = ["ObservableAction"]