swarms 7.8.0__tar.gz → 7.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. {swarms-7.8.0 → swarms-7.8.1}/PKG-INFO +1 -1
  2. {swarms-7.8.0 → swarms-7.8.1}/pyproject.toml +1 -1
  3. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_router.py +5 -4
  4. swarms-7.8.1/swarms/utils/litellm_tokenizer.py +106 -0
  5. swarms-7.8.0/swarms/utils/litellm_tokenizer.py +0 -20
  6. {swarms-7.8.0 → swarms-7.8.1}/LICENSE +0 -0
  7. {swarms-7.8.0 → swarms-7.8.1}/README.md +0 -0
  8. {swarms-7.8.0 → swarms-7.8.1}/swarms/__init__.py +0 -0
  9. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/__init__.py +0 -0
  10. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/agent_judge.py +0 -0
  11. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/agent_print.py +0 -0
  12. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/ape_agent.py +0 -0
  13. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/auto_generate_swarm_config.py +0 -0
  14. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/consistency_agent.py +0 -0
  15. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/cort_agent.py +0 -0
  16. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/create_agents_from_yaml.py +0 -0
  17. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/flexion_agent.py +0 -0
  18. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/gkp_agent.py +0 -0
  19. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/i_agent.py +0 -0
  20. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/openai_assistant.py +0 -0
  21. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/react_agent.py +0 -0
  22. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/reasoning_agents.py +0 -0
  23. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/reasoning_duo.py +0 -0
  24. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/self_agent_builder.py +0 -0
  25. {swarms-7.8.0 → swarms-7.8.1}/swarms/agents/tool_agent.py +0 -0
  26. {swarms-7.8.0 → swarms-7.8.1}/swarms/artifacts/__init__.py +0 -0
  27. {swarms-7.8.0 → swarms-7.8.1}/swarms/artifacts/main_artifact.py +0 -0
  28. {swarms-7.8.0 → swarms-7.8.1}/swarms/cli/__init__.py +0 -0
  29. {swarms-7.8.0 → swarms-7.8.1}/swarms/cli/create_agent.py +0 -0
  30. {swarms-7.8.0 → swarms-7.8.1}/swarms/cli/main.py +0 -0
  31. {swarms-7.8.0 → swarms-7.8.1}/swarms/cli/onboarding_process.py +0 -0
  32. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/__init__.py +0 -0
  33. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/base_communication.py +0 -0
  34. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/duckdb_wrap.py +0 -0
  35. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/pulsar_struct.py +0 -0
  36. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/redis_wrap.py +0 -0
  37. {swarms-7.8.0 → swarms-7.8.1}/swarms/communication/sqlite_wrap.py +0 -0
  38. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/__init__.py +0 -0
  39. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/accountant_swarm_prompts.py +0 -0
  40. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/ag_prompt.py +0 -0
  41. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/aga.py +0 -0
  42. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/agent_judge_prompt.py +0 -0
  43. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/agent_prompt.py +0 -0
  44. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/agent_prompts.py +0 -0
  45. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/agent_self_builder_prompt.py +0 -0
  46. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/agent_system_prompts.py +0 -0
  47. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/ai_research_team.py +0 -0
  48. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/aot_prompt.py +0 -0
  49. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/autobloggen.py +0 -0
  50. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/autoswarm.py +0 -0
  51. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/chat_prompt.py +0 -0
  52. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/code_interpreter.py +0 -0
  53. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/code_spawner.py +0 -0
  54. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/debate.py +0 -0
  55. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/documentation.py +0 -0
  56. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/education.py +0 -0
  57. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/finance_agent_prompt.py +0 -0
  58. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/finance_agent_sys_prompt.py +0 -0
  59. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/growth_agent_prompt.py +0 -0
  60. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/idea2img.py +0 -0
  61. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/legal_agent_prompt.py +0 -0
  62. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/logistics.py +0 -0
  63. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/max_loop_prompt.py +0 -0
  64. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/meta_system_prompt.py +0 -0
  65. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/multi_agent_collab_prompt.py +0 -0
  66. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/multi_modal_autonomous_instruction_prompt.py +0 -0
  67. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/multi_modal_prompts.py +0 -0
  68. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/multi_modal_visual_prompts.py +0 -0
  69. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/operations_agent_prompt.py +0 -0
  70. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/paper_idea_agent.py +0 -0
  71. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/personal_stylist.py +0 -0
  72. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/product_agent_prompt.py +0 -0
  73. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/programming.py +0 -0
  74. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/project_manager.py +0 -0
  75. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/prompt.py +0 -0
  76. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/prompt_generator.py +0 -0
  77. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/prompt_generator_optimizer.py +0 -0
  78. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/python.py +0 -0
  79. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/react.py +0 -0
  80. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/react_base_prompt.py +0 -0
  81. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/reasoning_prompt.py +0 -0
  82. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/refiner_agent_prompt.py +0 -0
  83. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/safety_prompt.py +0 -0
  84. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/sales.py +0 -0
  85. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/sales_prompts.py +0 -0
  86. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/security_team.py +0 -0
  87. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/self_operating_prompt.py +0 -0
  88. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/sop_generator_agent_prompt.py +0 -0
  89. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/summaries_prompts.py +0 -0
  90. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/support_agent_prompt.py +0 -0
  91. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/swarm_manager_agent.py +0 -0
  92. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/task_assignment_prompt.py +0 -0
  93. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/tests.py +0 -0
  94. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/tools.py +0 -0
  95. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/urban_planning.py +0 -0
  96. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/visual_cot.py +0 -0
  97. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/worker_prompt.py +0 -0
  98. {swarms-7.8.0 → swarms-7.8.1}/swarms/prompts/xray_swarm_prompt.py +0 -0
  99. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/__init__.py +0 -0
  100. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/agent_class_schema.py +0 -0
  101. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/agent_mcp_errors.py +0 -0
  102. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/agent_step_schemas.py +0 -0
  103. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/agent_tool_schema.py +0 -0
  104. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/base_schemas.py +0 -0
  105. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/llm_agent_schema.py +0 -0
  106. {swarms-7.8.0 → swarms-7.8.1}/swarms/schemas/mcp_schemas.py +0 -0
  107. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/__init__.py +0 -0
  108. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/agent.py +0 -0
  109. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/agent_builder.py +0 -0
  110. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/agent_registry.py +0 -0
  111. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/agent_roles.py +0 -0
  112. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/agent_router.py +0 -0
  113. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/aop.py +0 -0
  114. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/auto_swarm_builder.py +0 -0
  115. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/base_structure.py +0 -0
  116. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/base_swarm.py +0 -0
  117. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/base_workflow.py +0 -0
  118. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/batch_agent_execution.py +0 -0
  119. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/concat.py +0 -0
  120. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/concurrent_workflow.py +0 -0
  121. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/conversation.py +0 -0
  122. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/council_judge.py +0 -0
  123. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/csv_to_agent.py +0 -0
  124. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/de_hallucination_swarm.py +0 -0
  125. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/deep_research_swarm.py +0 -0
  126. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/dynamic_conversational_swarm.py +0 -0
  127. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/graph_workflow.py +0 -0
  128. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/groupchat.py +0 -0
  129. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/hiearchical_swarm.py +0 -0
  130. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/hybrid_hiearchical_peer_swarm.py +0 -0
  131. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/long_agent.py +0 -0
  132. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/ma_utils.py +0 -0
  133. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/majority_voting.py +0 -0
  134. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/malt.py +0 -0
  135. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/matrix_swarm.py +0 -0
  136. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/meme_agent_persona_generator.py +0 -0
  137. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/mixture_of_agents.py +0 -0
  138. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/model_router.py +0 -0
  139. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/multi_agent_collab.py +0 -0
  140. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/multi_agent_exec.py +0 -0
  141. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/multi_agent_router.py +0 -0
  142. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/multi_model_gpu_manager.py +0 -0
  143. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/omni_agent_types.py +0 -0
  144. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/output_types.py +0 -0
  145. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/rearrange.py +0 -0
  146. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/round_robin.py +0 -0
  147. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/safe_loading.py +0 -0
  148. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/sequential_workflow.py +0 -0
  149. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/spreadsheet_swarm.py +0 -0
  150. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/stopping_conditions.py +0 -0
  151. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_arange.py +0 -0
  152. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_eval.py +0 -0
  153. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_id_generator.py +0 -0
  154. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_matcher.py +0 -0
  155. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarm_registry.py +0 -0
  156. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/swarming_architectures.py +0 -0
  157. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/tree_swarm.py +0 -0
  158. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/utils.py +0 -0
  159. {swarms-7.8.0 → swarms-7.8.1}/swarms/structs/various_alt_swarms.py +0 -0
  160. {swarms-7.8.0 → swarms-7.8.1}/swarms/telemetry/__init__.py +0 -0
  161. {swarms-7.8.0 → swarms-7.8.1}/swarms/telemetry/bootup.py +0 -0
  162. {swarms-7.8.0 → swarms-7.8.1}/swarms/telemetry/main.py +0 -0
  163. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/__init__.py +0 -0
  164. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/base_tool.py +0 -0
  165. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/cohere_func_call_schema.py +0 -0
  166. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/create_agent_tool.py +0 -0
  167. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/func_calling_utils.py +0 -0
  168. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/func_to_str.py +0 -0
  169. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/function_util.py +0 -0
  170. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/json_former.py +0 -0
  171. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/json_utils.py +0 -0
  172. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/logits_processor.py +0 -0
  173. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/mcp_client_call.py +0 -0
  174. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/openai_func_calling_schema_pydantic.py +0 -0
  175. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/openai_tool_creator_decorator.py +0 -0
  176. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/py_func_to_openai_func_str.py +0 -0
  177. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/pydantic_to_json.py +0 -0
  178. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/tool_parse_exec.py +0 -0
  179. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/tool_registry.py +0 -0
  180. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/tool_schema_base_model.py +0 -0
  181. {swarms-7.8.0 → swarms-7.8.1}/swarms/tools/tool_utils.py +0 -0
  182. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/__init__.py +0 -0
  183. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/any_to_str.py +0 -0
  184. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/audio_processing.py +0 -0
  185. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/auto_download_check_packages.py +0 -0
  186. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/calculate_func_metrics.py +0 -0
  187. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/data_to_text.py +0 -0
  188. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/disable_logging.py +0 -0
  189. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/file_processing.py +0 -0
  190. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/formatter.py +0 -0
  191. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/function_caller_model.py +0 -0
  192. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/generate_keys.py +0 -0
  193. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/history_output_formatter.py +0 -0
  194. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/index.py +0 -0
  195. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/litellm_wrapper.py +0 -0
  196. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/loguru_logger.py +0 -0
  197. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/markdown_message.py +0 -0
  198. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/parse_code.py +0 -0
  199. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/pdf_to_text.py +0 -0
  200. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/str_to_dict.py +0 -0
  201. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/try_except_wrapper.py +0 -0
  202. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/visualizer.py +0 -0
  203. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/vllm_wrapper.py +0 -0
  204. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/wrapper_clusterop.py +0 -0
  205. {swarms-7.8.0 → swarms-7.8.1}/swarms/utils/xml_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: swarms
3
- Version: 7.8.0
3
+ Version: 7.8.1
4
4
  Summary: Swarms - TGSC
5
5
  License: MIT
6
6
  Keywords: artificial intelligence,deep learning,optimizers,Prompt Engineering,swarms,agents,llms,transformers,multi-agent,swarms of agents,Enterprise-Grade Agents,Production-Grade Agents,Agents,Multi-Grade-Agents,Swarms,Transformers,LLMs,Prompt Engineering,Agents,Generative Agents,Generative AI,Agent Marketplace,Agent Store,quant,finance,algorithmic trading,portfolio optimization,risk management,financial modeling,machine learning for finance,natural language processing for finance
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
 
6
6
  [tool.poetry]
7
7
  name = "swarms"
8
- version = "7.8.0"
8
+ version = "7.8.1"
9
9
  description = "Swarms - TGSC"
10
10
  license = "MIT"
11
11
  authors = ["Kye Gomez <kye@apac.ai>"]
@@ -538,8 +538,8 @@ class SwarmRouter:
538
538
  def _run(
539
539
  self,
540
540
  task: str,
541
- img: str,
542
- model_response: str,
541
+ img: Optional[str] = None,
542
+ model_response: Optional[str] = None,
543
543
  *args,
544
544
  **kwargs,
545
545
  ) -> Any:
@@ -591,7 +591,8 @@ class SwarmRouter:
591
591
  def run(
592
592
  self,
593
593
  task: str,
594
- img: str = None,
594
+ img: Optional[str] = None,
595
+ model_response: Optional[str] = None,
595
596
  *args,
596
597
  **kwargs,
597
598
  ) -> Any:
@@ -613,7 +614,7 @@ class SwarmRouter:
613
614
  Exception: If an error occurs during task execution.
614
615
  """
615
616
  try:
616
- return self._run(task=task, img=img, *args, **kwargs)
617
+ return self._run(task=task, img=img, model_response=model_response, *args, **kwargs)
617
618
  except Exception as e:
618
619
  logger.error(f"Error executing task on swarm: {str(e)}")
619
620
  raise
@@ -0,0 +1,106 @@
1
+ from litellm import encode, model_list
2
+ from loguru import logger
3
+ from typing import Optional
4
+ from functools import lru_cache
5
+
6
+ # Use consistent default model
7
+ DEFAULT_MODEL = "gpt-4o-mini"
8
+
9
+
10
+ def count_tokens(
11
+ text: str,
12
+ model: str = DEFAULT_MODEL,
13
+ default_encoder: Optional[str] = DEFAULT_MODEL,
14
+ ) -> int:
15
+ """
16
+ Count the number of tokens in the given text using the specified model.
17
+
18
+ Args:
19
+ text: The text to tokenize
20
+ model: The model to use for tokenization (defaults to gpt-4o-mini)
21
+ default_encoder: Fallback encoder if the primary model fails (defaults to DEFAULT_MODEL)
22
+
23
+ Returns:
24
+ int: Number of tokens in the text
25
+
26
+ Raises:
27
+ ValueError: If text is empty or if both primary and fallback models fail
28
+ """
29
+ if not text or not text.strip():
30
+ logger.warning("Empty or whitespace-only text provided")
31
+ return 0
32
+
33
+ # Set fallback encoder
34
+ fallback_model = default_encoder or DEFAULT_MODEL
35
+
36
+ # First attempt with the requested model
37
+ try:
38
+ tokens = encode(model=model, text=text)
39
+ return len(tokens)
40
+
41
+ except Exception as e:
42
+ logger.warning(
43
+ f"Failed to tokenize with model '{model}': {e} using fallback model '{fallback_model}'"
44
+ )
45
+
46
+ logger.info(f"Using fallback model '{fallback_model}'")
47
+
48
+ # Only try fallback if it's different from the original model
49
+ if fallback_model != model:
50
+ try:
51
+ logger.info(
52
+ f"Falling back to default encoder: {fallback_model}"
53
+ )
54
+ tokens = encode(model=fallback_model, text=text)
55
+ return len(tokens)
56
+
57
+ except Exception as fallback_error:
58
+ logger.error(
59
+ f"Fallback encoder '{fallback_model}' also failed: {fallback_error}"
60
+ )
61
+ raise ValueError(
62
+ f"Both primary model '{model}' and fallback '{fallback_model}' failed to tokenize text"
63
+ )
64
+ else:
65
+ logger.error(
66
+ f"Primary model '{model}' failed and no different fallback available"
67
+ )
68
+ raise ValueError(
69
+ f"Model '{model}' failed to tokenize text: {e}"
70
+ )
71
+
72
+
73
+ @lru_cache(maxsize=100)
74
+ def get_supported_models() -> list:
75
+ """Get list of supported models from litellm."""
76
+ try:
77
+ return model_list
78
+ except Exception as e:
79
+ logger.warning(f"Could not retrieve model list: {e}")
80
+ return []
81
+
82
+
83
+ # if __name__ == "__main__":
84
+ # # Test with different scenarios
85
+ # test_text = "Hello, how are you?"
86
+
87
+ # # # Test with Claude model
88
+ # # try:
89
+ # # tokens = count_tokens(test_text, model="claude-3-5-sonnet-20240620")
90
+ # # print(f"Claude tokens: {tokens}")
91
+ # # except Exception as e:
92
+ # # print(f"Claude test failed: {e}")
93
+
94
+ # # # Test with default model
95
+ # # try:
96
+ # # tokens = count_tokens(test_text)
97
+ # # print(f"Default model tokens: {tokens}")
98
+ # # except Exception as e:
99
+ # # print(f"Default test failed: {e}")
100
+
101
+ # # Test with explicit fallback
102
+ # try:
103
+ # tokens = count_tokens(test_text, model="some-invalid-model", default_encoder="gpt-4o-mini")
104
+ # print(f"Fallback test tokens: {tokens}")
105
+ # except Exception as e:
106
+ # print(f"Fallback test failed: {e}")
@@ -1,20 +0,0 @@
1
- import subprocess
2
-
3
-
4
- def count_tokens(text: str, model: str = "gpt-4o") -> int:
5
- """Count the number of tokens in the given text."""
6
- try:
7
- from litellm import encode
8
- except ImportError:
9
- import sys
10
-
11
- subprocess.run(
12
- [sys.executable, "-m", "pip", "install", "litellm"]
13
- )
14
- from litellm import encode
15
-
16
- return len(encode(model=model, text=text))
17
-
18
-
19
- # if __name__ == "__main__":
20
- # print(count_tokens("Hello, how are you?"))
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
File without changes
File without changes
File without changes
File without changes