ag2 0.9.1a1__py3-none-any.whl → 0.9.2__py3-none-any.whl

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.

Potentially problematic release.


This version of ag2 might be problematic. Click here for more details.

Files changed (371) hide show
  1. {ag2-0.9.1a1.dist-info → ag2-0.9.2.dist-info}/METADATA +272 -75
  2. ag2-0.9.2.dist-info/RECORD +406 -0
  3. {ag2-0.9.1a1.dist-info → ag2-0.9.2.dist-info}/WHEEL +1 -2
  4. autogen/__init__.py +89 -0
  5. autogen/_website/__init__.py +3 -0
  6. autogen/_website/generate_api_references.py +427 -0
  7. autogen/_website/generate_mkdocs.py +1174 -0
  8. autogen/_website/notebook_processor.py +476 -0
  9. autogen/_website/process_notebooks.py +656 -0
  10. autogen/_website/utils.py +412 -0
  11. autogen/agentchat/__init__.py +44 -0
  12. autogen/agentchat/agent.py +182 -0
  13. autogen/agentchat/assistant_agent.py +85 -0
  14. autogen/agentchat/chat.py +309 -0
  15. autogen/agentchat/contrib/__init__.py +5 -0
  16. autogen/agentchat/contrib/agent_eval/README.md +7 -0
  17. autogen/agentchat/contrib/agent_eval/agent_eval.py +108 -0
  18. autogen/agentchat/contrib/agent_eval/criterion.py +43 -0
  19. autogen/agentchat/contrib/agent_eval/critic_agent.py +44 -0
  20. autogen/agentchat/contrib/agent_eval/quantifier_agent.py +39 -0
  21. autogen/agentchat/contrib/agent_eval/subcritic_agent.py +45 -0
  22. autogen/agentchat/contrib/agent_eval/task.py +42 -0
  23. autogen/agentchat/contrib/agent_optimizer.py +429 -0
  24. autogen/agentchat/contrib/capabilities/__init__.py +5 -0
  25. autogen/agentchat/contrib/capabilities/agent_capability.py +20 -0
  26. autogen/agentchat/contrib/capabilities/generate_images.py +301 -0
  27. autogen/agentchat/contrib/capabilities/teachability.py +393 -0
  28. autogen/agentchat/contrib/capabilities/text_compressors.py +66 -0
  29. autogen/agentchat/contrib/capabilities/tools_capability.py +22 -0
  30. autogen/agentchat/contrib/capabilities/transform_messages.py +93 -0
  31. autogen/agentchat/contrib/capabilities/transforms.py +566 -0
  32. autogen/agentchat/contrib/capabilities/transforms_util.py +122 -0
  33. autogen/agentchat/contrib/capabilities/vision_capability.py +214 -0
  34. autogen/agentchat/contrib/captainagent/__init__.py +9 -0
  35. autogen/agentchat/contrib/captainagent/agent_builder.py +790 -0
  36. autogen/agentchat/contrib/captainagent/captainagent.py +512 -0
  37. autogen/agentchat/contrib/captainagent/tool_retriever.py +335 -0
  38. autogen/agentchat/contrib/captainagent/tools/README.md +44 -0
  39. autogen/agentchat/contrib/captainagent/tools/__init__.py +5 -0
  40. autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_correlation.py +40 -0
  41. autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_skewness_and_kurtosis.py +28 -0
  42. autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_iqr.py +28 -0
  43. autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_zscore.py +28 -0
  44. autogen/agentchat/contrib/captainagent/tools/data_analysis/explore_csv.py +21 -0
  45. autogen/agentchat/contrib/captainagent/tools/data_analysis/shapiro_wilk_test.py +30 -0
  46. autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_download.py +27 -0
  47. autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_search.py +53 -0
  48. autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_image.py +53 -0
  49. autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_text.py +38 -0
  50. autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_wikipedia_text.py +21 -0
  51. autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_youtube_caption.py +34 -0
  52. autogen/agentchat/contrib/captainagent/tools/information_retrieval/image_qa.py +60 -0
  53. autogen/agentchat/contrib/captainagent/tools/information_retrieval/optical_character_recognition.py +61 -0
  54. autogen/agentchat/contrib/captainagent/tools/information_retrieval/perform_web_search.py +47 -0
  55. autogen/agentchat/contrib/captainagent/tools/information_retrieval/scrape_wikipedia_tables.py +33 -0
  56. autogen/agentchat/contrib/captainagent/tools/information_retrieval/transcribe_audio_file.py +21 -0
  57. autogen/agentchat/contrib/captainagent/tools/information_retrieval/youtube_download.py +35 -0
  58. autogen/agentchat/contrib/captainagent/tools/math/calculate_circle_area_from_diameter.py +21 -0
  59. autogen/agentchat/contrib/captainagent/tools/math/calculate_day_of_the_week.py +18 -0
  60. autogen/agentchat/contrib/captainagent/tools/math/calculate_fraction_sum.py +28 -0
  61. autogen/agentchat/contrib/captainagent/tools/math/calculate_matrix_power.py +31 -0
  62. autogen/agentchat/contrib/captainagent/tools/math/calculate_reflected_point.py +16 -0
  63. autogen/agentchat/contrib/captainagent/tools/math/complex_numbers_product.py +25 -0
  64. autogen/agentchat/contrib/captainagent/tools/math/compute_currency_conversion.py +23 -0
  65. autogen/agentchat/contrib/captainagent/tools/math/count_distinct_permutations.py +27 -0
  66. autogen/agentchat/contrib/captainagent/tools/math/evaluate_expression.py +28 -0
  67. autogen/agentchat/contrib/captainagent/tools/math/find_continuity_point.py +34 -0
  68. autogen/agentchat/contrib/captainagent/tools/math/fraction_to_mixed_numbers.py +39 -0
  69. autogen/agentchat/contrib/captainagent/tools/math/modular_inverse_sum.py +23 -0
  70. autogen/agentchat/contrib/captainagent/tools/math/simplify_mixed_numbers.py +36 -0
  71. autogen/agentchat/contrib/captainagent/tools/math/sum_of_digit_factorials.py +15 -0
  72. autogen/agentchat/contrib/captainagent/tools/math/sum_of_primes_below.py +15 -0
  73. autogen/agentchat/contrib/captainagent/tools/requirements.txt +10 -0
  74. autogen/agentchat/contrib/captainagent/tools/tool_description.tsv +34 -0
  75. autogen/agentchat/contrib/gpt_assistant_agent.py +526 -0
  76. autogen/agentchat/contrib/graph_rag/__init__.py +9 -0
  77. autogen/agentchat/contrib/graph_rag/document.py +29 -0
  78. autogen/agentchat/contrib/graph_rag/falkor_graph_query_engine.py +170 -0
  79. autogen/agentchat/contrib/graph_rag/falkor_graph_rag_capability.py +103 -0
  80. autogen/agentchat/contrib/graph_rag/graph_query_engine.py +53 -0
  81. autogen/agentchat/contrib/graph_rag/graph_rag_capability.py +63 -0
  82. autogen/agentchat/contrib/graph_rag/neo4j_graph_query_engine.py +268 -0
  83. autogen/agentchat/contrib/graph_rag/neo4j_graph_rag_capability.py +83 -0
  84. autogen/agentchat/contrib/graph_rag/neo4j_native_graph_query_engine.py +210 -0
  85. autogen/agentchat/contrib/graph_rag/neo4j_native_graph_rag_capability.py +93 -0
  86. autogen/agentchat/contrib/img_utils.py +397 -0
  87. autogen/agentchat/contrib/llamaindex_conversable_agent.py +117 -0
  88. autogen/agentchat/contrib/llava_agent.py +187 -0
  89. autogen/agentchat/contrib/math_user_proxy_agent.py +464 -0
  90. autogen/agentchat/contrib/multimodal_conversable_agent.py +125 -0
  91. autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py +324 -0
  92. autogen/agentchat/contrib/rag/__init__.py +10 -0
  93. autogen/agentchat/contrib/rag/chromadb_query_engine.py +272 -0
  94. autogen/agentchat/contrib/rag/llamaindex_query_engine.py +198 -0
  95. autogen/agentchat/contrib/rag/mongodb_query_engine.py +329 -0
  96. autogen/agentchat/contrib/rag/query_engine.py +74 -0
  97. autogen/agentchat/contrib/retrieve_assistant_agent.py +56 -0
  98. autogen/agentchat/contrib/retrieve_user_proxy_agent.py +703 -0
  99. autogen/agentchat/contrib/society_of_mind_agent.py +199 -0
  100. autogen/agentchat/contrib/swarm_agent.py +1425 -0
  101. autogen/agentchat/contrib/text_analyzer_agent.py +79 -0
  102. autogen/agentchat/contrib/vectordb/__init__.py +5 -0
  103. autogen/agentchat/contrib/vectordb/base.py +232 -0
  104. autogen/agentchat/contrib/vectordb/chromadb.py +315 -0
  105. autogen/agentchat/contrib/vectordb/couchbase.py +407 -0
  106. autogen/agentchat/contrib/vectordb/mongodb.py +550 -0
  107. autogen/agentchat/contrib/vectordb/pgvectordb.py +928 -0
  108. autogen/agentchat/contrib/vectordb/qdrant.py +320 -0
  109. autogen/agentchat/contrib/vectordb/utils.py +126 -0
  110. autogen/agentchat/contrib/web_surfer.py +303 -0
  111. autogen/agentchat/conversable_agent.py +4023 -0
  112. autogen/agentchat/group/__init__.py +64 -0
  113. autogen/agentchat/group/available_condition.py +91 -0
  114. autogen/agentchat/group/context_condition.py +77 -0
  115. autogen/agentchat/group/context_expression.py +238 -0
  116. autogen/agentchat/group/context_str.py +41 -0
  117. autogen/agentchat/group/context_variables.py +192 -0
  118. autogen/agentchat/group/group_tool_executor.py +202 -0
  119. autogen/agentchat/group/group_utils.py +591 -0
  120. autogen/agentchat/group/handoffs.py +244 -0
  121. autogen/agentchat/group/llm_condition.py +93 -0
  122. autogen/agentchat/group/multi_agent_chat.py +237 -0
  123. autogen/agentchat/group/on_condition.py +58 -0
  124. autogen/agentchat/group/on_context_condition.py +54 -0
  125. autogen/agentchat/group/patterns/__init__.py +18 -0
  126. autogen/agentchat/group/patterns/auto.py +159 -0
  127. autogen/agentchat/group/patterns/manual.py +176 -0
  128. autogen/agentchat/group/patterns/pattern.py +288 -0
  129. autogen/agentchat/group/patterns/random.py +106 -0
  130. autogen/agentchat/group/patterns/round_robin.py +117 -0
  131. autogen/agentchat/group/reply_result.py +26 -0
  132. autogen/agentchat/group/speaker_selection_result.py +41 -0
  133. autogen/agentchat/group/targets/__init__.py +4 -0
  134. autogen/agentchat/group/targets/group_chat_target.py +132 -0
  135. autogen/agentchat/group/targets/group_manager_target.py +151 -0
  136. autogen/agentchat/group/targets/transition_target.py +413 -0
  137. autogen/agentchat/group/targets/transition_utils.py +6 -0
  138. autogen/agentchat/groupchat.py +1694 -0
  139. autogen/agentchat/realtime/__init__.py +3 -0
  140. autogen/agentchat/realtime/experimental/__init__.py +20 -0
  141. autogen/agentchat/realtime/experimental/audio_adapters/__init__.py +8 -0
  142. autogen/agentchat/realtime/experimental/audio_adapters/twilio_audio_adapter.py +148 -0
  143. autogen/agentchat/realtime/experimental/audio_adapters/websocket_audio_adapter.py +139 -0
  144. autogen/agentchat/realtime/experimental/audio_observer.py +42 -0
  145. autogen/agentchat/realtime/experimental/clients/__init__.py +15 -0
  146. autogen/agentchat/realtime/experimental/clients/gemini/__init__.py +7 -0
  147. autogen/agentchat/realtime/experimental/clients/gemini/client.py +274 -0
  148. autogen/agentchat/realtime/experimental/clients/oai/__init__.py +8 -0
  149. autogen/agentchat/realtime/experimental/clients/oai/base_client.py +220 -0
  150. autogen/agentchat/realtime/experimental/clients/oai/rtc_client.py +243 -0
  151. autogen/agentchat/realtime/experimental/clients/oai/utils.py +48 -0
  152. autogen/agentchat/realtime/experimental/clients/realtime_client.py +190 -0
  153. autogen/agentchat/realtime/experimental/function_observer.py +85 -0
  154. autogen/agentchat/realtime/experimental/realtime_agent.py +158 -0
  155. autogen/agentchat/realtime/experimental/realtime_events.py +42 -0
  156. autogen/agentchat/realtime/experimental/realtime_observer.py +100 -0
  157. autogen/agentchat/realtime/experimental/realtime_swarm.py +475 -0
  158. autogen/agentchat/realtime/experimental/websockets.py +21 -0
  159. autogen/agentchat/realtime_agent/__init__.py +21 -0
  160. autogen/agentchat/user_proxy_agent.py +111 -0
  161. autogen/agentchat/utils.py +206 -0
  162. autogen/agents/__init__.py +3 -0
  163. autogen/agents/contrib/__init__.py +10 -0
  164. autogen/agents/contrib/time/__init__.py +8 -0
  165. autogen/agents/contrib/time/time_reply_agent.py +73 -0
  166. autogen/agents/contrib/time/time_tool_agent.py +51 -0
  167. autogen/agents/experimental/__init__.py +27 -0
  168. autogen/agents/experimental/deep_research/__init__.py +7 -0
  169. autogen/agents/experimental/deep_research/deep_research.py +52 -0
  170. autogen/agents/experimental/discord/__init__.py +7 -0
  171. autogen/agents/experimental/discord/discord.py +66 -0
  172. autogen/agents/experimental/document_agent/__init__.py +19 -0
  173. autogen/agents/experimental/document_agent/chroma_query_engine.py +316 -0
  174. autogen/agents/experimental/document_agent/docling_doc_ingest_agent.py +118 -0
  175. autogen/agents/experimental/document_agent/document_agent.py +461 -0
  176. autogen/agents/experimental/document_agent/document_conditions.py +50 -0
  177. autogen/agents/experimental/document_agent/document_utils.py +380 -0
  178. autogen/agents/experimental/document_agent/inmemory_query_engine.py +220 -0
  179. autogen/agents/experimental/document_agent/parser_utils.py +130 -0
  180. autogen/agents/experimental/document_agent/url_utils.py +426 -0
  181. autogen/agents/experimental/reasoning/__init__.py +7 -0
  182. autogen/agents/experimental/reasoning/reasoning_agent.py +1178 -0
  183. autogen/agents/experimental/slack/__init__.py +7 -0
  184. autogen/agents/experimental/slack/slack.py +73 -0
  185. autogen/agents/experimental/telegram/__init__.py +7 -0
  186. autogen/agents/experimental/telegram/telegram.py +77 -0
  187. autogen/agents/experimental/websurfer/__init__.py +7 -0
  188. autogen/agents/experimental/websurfer/websurfer.py +62 -0
  189. autogen/agents/experimental/wikipedia/__init__.py +7 -0
  190. autogen/agents/experimental/wikipedia/wikipedia.py +90 -0
  191. autogen/browser_utils.py +309 -0
  192. autogen/cache/__init__.py +10 -0
  193. autogen/cache/abstract_cache_base.py +75 -0
  194. autogen/cache/cache.py +203 -0
  195. autogen/cache/cache_factory.py +88 -0
  196. autogen/cache/cosmos_db_cache.py +144 -0
  197. autogen/cache/disk_cache.py +102 -0
  198. autogen/cache/in_memory_cache.py +58 -0
  199. autogen/cache/redis_cache.py +123 -0
  200. autogen/code_utils.py +596 -0
  201. autogen/coding/__init__.py +22 -0
  202. autogen/coding/base.py +119 -0
  203. autogen/coding/docker_commandline_code_executor.py +268 -0
  204. autogen/coding/factory.py +47 -0
  205. autogen/coding/func_with_reqs.py +202 -0
  206. autogen/coding/jupyter/__init__.py +23 -0
  207. autogen/coding/jupyter/base.py +36 -0
  208. autogen/coding/jupyter/docker_jupyter_server.py +167 -0
  209. autogen/coding/jupyter/embedded_ipython_code_executor.py +182 -0
  210. autogen/coding/jupyter/import_utils.py +82 -0
  211. autogen/coding/jupyter/jupyter_client.py +231 -0
  212. autogen/coding/jupyter/jupyter_code_executor.py +160 -0
  213. autogen/coding/jupyter/local_jupyter_server.py +172 -0
  214. autogen/coding/local_commandline_code_executor.py +405 -0
  215. autogen/coding/markdown_code_extractor.py +45 -0
  216. autogen/coding/utils.py +56 -0
  217. autogen/doc_utils.py +34 -0
  218. autogen/events/__init__.py +7 -0
  219. autogen/events/agent_events.py +1013 -0
  220. autogen/events/base_event.py +99 -0
  221. autogen/events/client_events.py +167 -0
  222. autogen/events/helpers.py +36 -0
  223. autogen/events/print_event.py +46 -0
  224. autogen/exception_utils.py +73 -0
  225. autogen/extensions/__init__.py +5 -0
  226. autogen/fast_depends/__init__.py +16 -0
  227. autogen/fast_depends/_compat.py +80 -0
  228. autogen/fast_depends/core/__init__.py +14 -0
  229. autogen/fast_depends/core/build.py +225 -0
  230. autogen/fast_depends/core/model.py +576 -0
  231. autogen/fast_depends/dependencies/__init__.py +15 -0
  232. autogen/fast_depends/dependencies/model.py +29 -0
  233. autogen/fast_depends/dependencies/provider.py +39 -0
  234. autogen/fast_depends/library/__init__.py +10 -0
  235. autogen/fast_depends/library/model.py +46 -0
  236. autogen/fast_depends/py.typed +6 -0
  237. autogen/fast_depends/schema.py +66 -0
  238. autogen/fast_depends/use.py +280 -0
  239. autogen/fast_depends/utils.py +187 -0
  240. autogen/formatting_utils.py +83 -0
  241. autogen/function_utils.py +13 -0
  242. autogen/graph_utils.py +178 -0
  243. autogen/import_utils.py +526 -0
  244. autogen/interop/__init__.py +22 -0
  245. autogen/interop/crewai/__init__.py +7 -0
  246. autogen/interop/crewai/crewai.py +88 -0
  247. autogen/interop/interoperability.py +71 -0
  248. autogen/interop/interoperable.py +46 -0
  249. autogen/interop/langchain/__init__.py +8 -0
  250. autogen/interop/langchain/langchain_chat_model_factory.py +155 -0
  251. autogen/interop/langchain/langchain_tool.py +82 -0
  252. autogen/interop/litellm/__init__.py +7 -0
  253. autogen/interop/litellm/litellm_config_factory.py +179 -0
  254. autogen/interop/pydantic_ai/__init__.py +7 -0
  255. autogen/interop/pydantic_ai/pydantic_ai.py +168 -0
  256. autogen/interop/registry.py +69 -0
  257. autogen/io/__init__.py +15 -0
  258. autogen/io/base.py +151 -0
  259. autogen/io/console.py +56 -0
  260. autogen/io/processors/__init__.py +12 -0
  261. autogen/io/processors/base.py +21 -0
  262. autogen/io/processors/console_event_processor.py +56 -0
  263. autogen/io/run_response.py +293 -0
  264. autogen/io/thread_io_stream.py +63 -0
  265. autogen/io/websockets.py +213 -0
  266. autogen/json_utils.py +43 -0
  267. autogen/llm_config.py +382 -0
  268. autogen/logger/__init__.py +11 -0
  269. autogen/logger/base_logger.py +128 -0
  270. autogen/logger/file_logger.py +261 -0
  271. autogen/logger/logger_factory.py +42 -0
  272. autogen/logger/logger_utils.py +57 -0
  273. autogen/logger/sqlite_logger.py +523 -0
  274. autogen/math_utils.py +339 -0
  275. autogen/mcp/__init__.py +7 -0
  276. autogen/mcp/__main__.py +78 -0
  277. autogen/mcp/mcp_client.py +208 -0
  278. autogen/mcp/mcp_proxy/__init__.py +19 -0
  279. autogen/mcp/mcp_proxy/fastapi_code_generator_helpers.py +63 -0
  280. autogen/mcp/mcp_proxy/mcp_proxy.py +581 -0
  281. autogen/mcp/mcp_proxy/operation_grouping.py +158 -0
  282. autogen/mcp/mcp_proxy/operation_renaming.py +114 -0
  283. autogen/mcp/mcp_proxy/patch_fastapi_code_generator.py +98 -0
  284. autogen/mcp/mcp_proxy/security.py +400 -0
  285. autogen/mcp/mcp_proxy/security_schema_visitor.py +37 -0
  286. autogen/messages/__init__.py +7 -0
  287. autogen/messages/agent_messages.py +948 -0
  288. autogen/messages/base_message.py +107 -0
  289. autogen/messages/client_messages.py +171 -0
  290. autogen/messages/print_message.py +49 -0
  291. autogen/oai/__init__.py +53 -0
  292. autogen/oai/anthropic.py +714 -0
  293. autogen/oai/bedrock.py +628 -0
  294. autogen/oai/cerebras.py +299 -0
  295. autogen/oai/client.py +1444 -0
  296. autogen/oai/client_utils.py +169 -0
  297. autogen/oai/cohere.py +479 -0
  298. autogen/oai/gemini.py +998 -0
  299. autogen/oai/gemini_types.py +155 -0
  300. autogen/oai/groq.py +305 -0
  301. autogen/oai/mistral.py +303 -0
  302. autogen/oai/oai_models/__init__.py +11 -0
  303. autogen/oai/oai_models/_models.py +16 -0
  304. autogen/oai/oai_models/chat_completion.py +87 -0
  305. autogen/oai/oai_models/chat_completion_audio.py +32 -0
  306. autogen/oai/oai_models/chat_completion_message.py +86 -0
  307. autogen/oai/oai_models/chat_completion_message_tool_call.py +37 -0
  308. autogen/oai/oai_models/chat_completion_token_logprob.py +63 -0
  309. autogen/oai/oai_models/completion_usage.py +60 -0
  310. autogen/oai/ollama.py +643 -0
  311. autogen/oai/openai_utils.py +881 -0
  312. autogen/oai/together.py +370 -0
  313. autogen/retrieve_utils.py +491 -0
  314. autogen/runtime_logging.py +160 -0
  315. autogen/token_count_utils.py +267 -0
  316. autogen/tools/__init__.py +20 -0
  317. autogen/tools/contrib/__init__.py +9 -0
  318. autogen/tools/contrib/time/__init__.py +7 -0
  319. autogen/tools/contrib/time/time.py +41 -0
  320. autogen/tools/dependency_injection.py +254 -0
  321. autogen/tools/experimental/__init__.py +48 -0
  322. autogen/tools/experimental/browser_use/__init__.py +7 -0
  323. autogen/tools/experimental/browser_use/browser_use.py +161 -0
  324. autogen/tools/experimental/crawl4ai/__init__.py +7 -0
  325. autogen/tools/experimental/crawl4ai/crawl4ai.py +153 -0
  326. autogen/tools/experimental/deep_research/__init__.py +7 -0
  327. autogen/tools/experimental/deep_research/deep_research.py +328 -0
  328. autogen/tools/experimental/duckduckgo/__init__.py +7 -0
  329. autogen/tools/experimental/duckduckgo/duckduckgo_search.py +109 -0
  330. autogen/tools/experimental/google/__init__.py +14 -0
  331. autogen/tools/experimental/google/authentication/__init__.py +11 -0
  332. autogen/tools/experimental/google/authentication/credentials_hosted_provider.py +43 -0
  333. autogen/tools/experimental/google/authentication/credentials_local_provider.py +91 -0
  334. autogen/tools/experimental/google/authentication/credentials_provider.py +35 -0
  335. autogen/tools/experimental/google/drive/__init__.py +9 -0
  336. autogen/tools/experimental/google/drive/drive_functions.py +124 -0
  337. autogen/tools/experimental/google/drive/toolkit.py +88 -0
  338. autogen/tools/experimental/google/model.py +17 -0
  339. autogen/tools/experimental/google/toolkit_protocol.py +19 -0
  340. autogen/tools/experimental/google_search/__init__.py +8 -0
  341. autogen/tools/experimental/google_search/google_search.py +93 -0
  342. autogen/tools/experimental/google_search/youtube_search.py +181 -0
  343. autogen/tools/experimental/messageplatform/__init__.py +17 -0
  344. autogen/tools/experimental/messageplatform/discord/__init__.py +7 -0
  345. autogen/tools/experimental/messageplatform/discord/discord.py +288 -0
  346. autogen/tools/experimental/messageplatform/slack/__init__.py +7 -0
  347. autogen/tools/experimental/messageplatform/slack/slack.py +391 -0
  348. autogen/tools/experimental/messageplatform/telegram/__init__.py +7 -0
  349. autogen/tools/experimental/messageplatform/telegram/telegram.py +275 -0
  350. autogen/tools/experimental/perplexity/__init__.py +7 -0
  351. autogen/tools/experimental/perplexity/perplexity_search.py +260 -0
  352. autogen/tools/experimental/reliable/__init__.py +10 -0
  353. autogen/tools/experimental/reliable/reliable.py +1316 -0
  354. autogen/tools/experimental/tavily/__init__.py +7 -0
  355. autogen/tools/experimental/tavily/tavily_search.py +183 -0
  356. autogen/tools/experimental/web_search_preview/__init__.py +7 -0
  357. autogen/tools/experimental/web_search_preview/web_search_preview.py +114 -0
  358. autogen/tools/experimental/wikipedia/__init__.py +7 -0
  359. autogen/tools/experimental/wikipedia/wikipedia.py +287 -0
  360. autogen/tools/function_utils.py +411 -0
  361. autogen/tools/tool.py +187 -0
  362. autogen/tools/toolkit.py +86 -0
  363. autogen/types.py +29 -0
  364. autogen/version.py +7 -0
  365. templates/client_template/main.jinja2 +69 -0
  366. templates/config_template/config.jinja2 +7 -0
  367. templates/main.jinja2 +61 -0
  368. ag2-0.9.1a1.dist-info/RECORD +0 -6
  369. ag2-0.9.1a1.dist-info/top_level.txt +0 -1
  370. {ag2-0.9.1a1.dist-info → ag2-0.9.2.dist-info/licenses}/LICENSE +0 -0
  371. {ag2-0.9.1a1.dist-info → ag2-0.9.2.dist-info/licenses}/NOTICE.md +0 -0
@@ -0,0 +1,107 @@
1
+ # Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+
6
+ from abc import ABC
7
+ from typing import Annotated, Any, Callable, Literal, Optional, TypeVar, Union
8
+ from uuid import UUID, uuid4
9
+
10
+ from pydantic import BaseModel, Field, create_model
11
+
12
+ from ..doc_utils import export_module
13
+
14
+ PetType = TypeVar("PetType", bound=Literal["cat", "dog"])
15
+
16
+ __all__ = ["BaseMessage", "get_annotated_type_for_message_classes", "wrap_message"]
17
+
18
+
19
+ @export_module("autogen.messages")
20
+ class BaseMessage(BaseModel, ABC):
21
+ uuid: UUID
22
+
23
+ def __init__(self, uuid: Optional[UUID] = None, **kwargs: Any) -> None:
24
+ """Base message class
25
+
26
+ Args:
27
+ uuid (Optional[UUID], optional): Unique identifier for the message. Defaults to None.
28
+ **kwargs (Any): Additional keyword arguments
29
+ """
30
+ uuid = uuid or uuid4()
31
+ super().__init__(uuid=uuid, **kwargs)
32
+
33
+ def print(self, f: Optional[Callable[..., Any]] = None) -> None:
34
+ """Print message
35
+
36
+ Args:
37
+ f (Optional[Callable[..., Any]], optional): Print function. If none, python's default print will be used.
38
+ """
39
+ ...
40
+
41
+
42
+ def camel2snake(name: str) -> str:
43
+ return "".join(["_" + i.lower() if i.isupper() else i for i in name]).lstrip("_")
44
+
45
+
46
+ _message_classes: dict[str, type[BaseModel]] = {}
47
+
48
+
49
+ @export_module("autogen.messages")
50
+ def wrap_message(message_cls: type[BaseMessage]) -> type[BaseModel]:
51
+ """Wrap a message class with a type field to be used in a union type
52
+
53
+ This is needed for proper serialization and deserialization of messages in a union type.
54
+
55
+ Args:
56
+ message_cls (type[BaseMessage]): Message class to wrap
57
+ """
58
+ global _message_classes
59
+
60
+ if not message_cls.__name__.endswith("Message"):
61
+ raise ValueError("Message class name must end with 'Message'")
62
+
63
+ type_name = camel2snake(message_cls.__name__)
64
+ type_name = type_name[: -len("_message")]
65
+
66
+ class WrapperBase(BaseModel):
67
+ # these types are generated dynamically so we need to disable the type checker
68
+ type: Literal[type_name] = type_name # type: ignore[valid-type]
69
+ content: message_cls # type: ignore[valid-type]
70
+
71
+ def __init__(self, *args: Any, **data: Any):
72
+ if set(data.keys()) == {"type", "content"} and "content" in data:
73
+ super().__init__(*args, **data)
74
+ else:
75
+ if "content" in data:
76
+ content = data.pop("content")
77
+ super().__init__(*args, content=message_cls(*args, **data, content=content), **data)
78
+ else:
79
+ super().__init__(content=message_cls(*args, **data), **data)
80
+
81
+ def print(self, f: Optional[Callable[..., Any]] = None) -> None:
82
+ self.content.print(f) # type: ignore[attr-defined]
83
+
84
+ wrapper_cls = create_model(message_cls.__name__, __base__=WrapperBase)
85
+
86
+ # Preserve the original class's docstring and other attributes
87
+ wrapper_cls.__doc__ = message_cls.__doc__
88
+ wrapper_cls.__module__ = message_cls.__module__
89
+
90
+ # Copy any other relevant attributes/metadata from the original class
91
+ if hasattr(message_cls, "__annotations__"):
92
+ wrapper_cls.__annotations__ = message_cls.__annotations__
93
+
94
+ _message_classes[type_name] = wrapper_cls
95
+
96
+ return wrapper_cls
97
+
98
+
99
+ @export_module("autogen.messages")
100
+ def get_annotated_type_for_message_classes() -> type[Any]:
101
+ # this is a dynamic type so we need to disable the type checker
102
+ union_type = Union[tuple(_message_classes.values())] # type: ignore[valid-type]
103
+ return Annotated[union_type, Field(discriminator="type")] # type: ignore[return-value]
104
+
105
+
106
+ def get_message_classes() -> dict[str, type[BaseModel]]:
107
+ return _message_classes
@@ -0,0 +1,171 @@
1
+ # Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ from typing import Any, Callable, Literal, Optional, Union
6
+ from uuid import UUID
7
+
8
+ from pydantic import BaseModel
9
+
10
+ from ..events import deprecated_by
11
+ from ..events.client_events import StreamEvent, UsageSummaryEvent
12
+ from .base_message import BaseMessage, wrap_message
13
+
14
+ __all__ = ["UsageSummaryMessage"]
15
+
16
+
17
+ class ModelUsageSummary(BaseModel):
18
+ """Model usage summary."""
19
+
20
+ model: str
21
+ """Model name."""
22
+ completion_tokens: int
23
+ """Number of tokens used for completion."""
24
+ cost: float
25
+ """Cost of the completion."""
26
+ prompt_tokens: int
27
+ """Number of tokens used for prompt."""
28
+ total_tokens: int
29
+ """Total number of tokens used."""
30
+
31
+
32
+ class ActualUsageSummary(BaseModel):
33
+ """Actual usage summary."""
34
+
35
+ usages: Optional[list[ModelUsageSummary]] = None
36
+ """List of model usage summaries."""
37
+ total_cost: Optional[float] = None
38
+ """Total cost."""
39
+
40
+
41
+ class TotalUsageSummary(BaseModel):
42
+ """Total usage summary."""
43
+
44
+ usages: Optional[list[ModelUsageSummary]] = None
45
+ """List of model usage summaries."""
46
+ total_cost: Optional[float] = None
47
+ """Total cost."""
48
+
49
+
50
+ Mode = Literal["both", "total", "actual"]
51
+
52
+
53
+ def _change_usage_summary_format(
54
+ actual_usage_summary: Optional[dict[str, Any]] = None, total_usage_summary: Optional[dict[str, Any]] = None
55
+ ) -> dict[str, dict[str, Any]]:
56
+ summary: dict[str, Any] = {}
57
+
58
+ for usage_type, usage_summary in {"actual": actual_usage_summary, "total": total_usage_summary}.items():
59
+ if usage_summary is None:
60
+ summary[usage_type] = {"usages": None, "total_cost": None}
61
+ continue
62
+
63
+ usage_summary_altered_format: dict[str, list[dict[str, Any]]] = {"usages": []}
64
+ for k, v in usage_summary.items():
65
+ if isinstance(k, str) and isinstance(v, dict):
66
+ current_usage = {key: value for key, value in v.items()}
67
+ current_usage["model"] = k
68
+ usage_summary_altered_format["usages"].append(current_usage)
69
+ else:
70
+ usage_summary_altered_format[k] = v
71
+ summary[usage_type] = usage_summary_altered_format
72
+
73
+ return summary
74
+
75
+
76
+ @deprecated_by(UsageSummaryEvent)
77
+ @wrap_message
78
+ class UsageSummaryMessage(BaseMessage):
79
+ """Usage summary message."""
80
+
81
+ actual: ActualUsageSummary
82
+ """Actual usage summary."""
83
+ total: TotalUsageSummary
84
+ """Total usage summary."""
85
+ mode: Mode
86
+ """Mode to display the usage summary."""
87
+
88
+ def __init__(
89
+ self,
90
+ *,
91
+ uuid: Optional[UUID] = None,
92
+ actual_usage_summary: Optional[dict[str, Any]] = None,
93
+ total_usage_summary: Optional[dict[str, Any]] = None,
94
+ mode: Mode = "both",
95
+ ):
96
+ # print(f"{actual_usage_summary=}")
97
+ # print(f"{total_usage_summary=}")
98
+
99
+ summary_dict = _change_usage_summary_format(actual_usage_summary, total_usage_summary)
100
+
101
+ super().__init__(uuid=uuid, **summary_dict, mode=mode)
102
+
103
+ def _print_usage(
104
+ self,
105
+ usage_summary: Union[ActualUsageSummary, TotalUsageSummary],
106
+ usage_type: str = "total",
107
+ f: Optional[Callable[..., Any]] = None,
108
+ ) -> None:
109
+ f = f or print
110
+ word_from_type = "including" if usage_type == "total" else "excluding"
111
+ if usage_summary.usages is None or len(usage_summary.usages) == 0:
112
+ f("No actual cost incurred (all completions are using cache).", flush=True)
113
+ return
114
+
115
+ f(f"Usage summary {word_from_type} cached usage: ", flush=True)
116
+ f(f"Total cost: {round(usage_summary.total_cost, 5)}", flush=True) # type: ignore [arg-type]
117
+
118
+ for usage in usage_summary.usages:
119
+ f(
120
+ f"* Model '{usage.model}': cost: {round(usage.cost, 5)}, prompt_tokens: {usage.prompt_tokens}, completion_tokens: {usage.completion_tokens}, total_tokens: {usage.total_tokens}",
121
+ flush=True,
122
+ )
123
+
124
+ def print(self, f: Optional[Callable[..., Any]] = None) -> None:
125
+ f = f or print
126
+
127
+ if self.total.usages is None:
128
+ f('No usage summary. Please call "create" first.', flush=True)
129
+ return
130
+
131
+ f("-" * 100, flush=True)
132
+ if self.mode == "both":
133
+ self._print_usage(self.actual, "actual", f)
134
+ f()
135
+ if self.total.model_dump_json() != self.actual.model_dump_json():
136
+ self._print_usage(self.total, "total", f)
137
+ else:
138
+ f(
139
+ "All completions are non-cached: the total cost with cached completions is the same as actual cost.",
140
+ flush=True,
141
+ )
142
+ elif self.mode == "total":
143
+ self._print_usage(self.total, "total", f)
144
+ elif self.mode == "actual":
145
+ self._print_usage(self.actual, "actual", f)
146
+ else:
147
+ raise ValueError(f'Invalid mode: {self.mode}, choose from "actual", "total", ["actual", "total"]')
148
+ f("-" * 100, flush=True)
149
+
150
+
151
+ @deprecated_by(StreamEvent)
152
+ @wrap_message
153
+ class StreamMessage(BaseMessage):
154
+ """Stream message."""
155
+
156
+ content: str
157
+ """Content of the message."""
158
+
159
+ def __init__(self, *, uuid: Optional[UUID] = None, content: str) -> None:
160
+ super().__init__(uuid=uuid, content=content)
161
+
162
+ def print(self, f: Optional[Callable[..., Any]] = None) -> None:
163
+ f = f or print
164
+
165
+ # Set the terminal text color to green
166
+ f("\033[32m", end="")
167
+
168
+ f(self.content, end="", flush=True)
169
+
170
+ # Reset the terminal text color
171
+ f("\033[0m\n")
@@ -0,0 +1,49 @@
1
+ # Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+
6
+ import json
7
+ from typing import Any, Callable, Optional
8
+ from uuid import UUID
9
+
10
+ from ..events import deprecated_by
11
+ from ..events.print_event import PrintEvent
12
+ from .base_message import BaseMessage, wrap_message
13
+
14
+
15
+ @deprecated_by(PrintEvent)
16
+ @wrap_message
17
+ class PrintMessage(BaseMessage):
18
+ """Print message"""
19
+
20
+ objects: list[str]
21
+ """List of objects to print"""
22
+ sep: str
23
+ """Separator between objects"""
24
+ end: str
25
+ """End of the print"""
26
+
27
+ def __init__(
28
+ self, *objects: Any, sep: str = " ", end: str = "\n", flush: bool = False, uuid: Optional[UUID] = None
29
+ ):
30
+ objects_as_string = [self._to_json(x) for x in objects]
31
+
32
+ super().__init__(uuid=uuid, objects=objects_as_string, sep=sep, end=end)
33
+
34
+ def _to_json(self, obj: Any) -> str:
35
+ if isinstance(obj, str):
36
+ return obj
37
+
38
+ if hasattr(obj, "model_dump_json"):
39
+ return obj.model_dump_json() # type: ignore [no-any-return]
40
+ try:
41
+ return json.dumps(obj)
42
+ except Exception:
43
+ return str(obj)
44
+ # return repr(obj)
45
+
46
+ def print(self, f: Optional[Callable[..., Any]] = None) -> None:
47
+ f = f or print
48
+
49
+ f(*self.objects, sep=self.sep, end=self.end, flush=True)
@@ -0,0 +1,53 @@
1
+ # Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+ #
5
+ # Portions derived from https://github.com/microsoft/autogen are under the MIT License.
6
+ # SPDX-License-Identifier: MIT
7
+ from ..cache.cache import Cache
8
+ from .anthropic import AnthropicLLMConfigEntry
9
+ from .bedrock import BedrockLLMConfigEntry
10
+ from .cerebras import CerebrasLLMConfigEntry
11
+ from .client import AzureOpenAILLMConfigEntry, DeepSeekLLMConfigEntry, ModelClient, OpenAILLMConfigEntry, OpenAIWrapper
12
+ from .cohere import CohereLLMConfigEntry
13
+ from .gemini import GeminiLLMConfigEntry
14
+ from .groq import GroqLLMConfigEntry
15
+ from .mistral import MistralLLMConfigEntry
16
+ from .ollama import OllamaLLMConfigEntry
17
+ from .openai_utils import (
18
+ config_list_from_dotenv,
19
+ config_list_from_json,
20
+ config_list_from_models,
21
+ config_list_gpt4_gpt35,
22
+ config_list_openai_aoai,
23
+ filter_config,
24
+ get_config_list,
25
+ get_first_llm_config,
26
+ )
27
+ from .together import TogetherLLMConfigEntry
28
+
29
+ __all__ = [
30
+ "AnthropicLLMConfigEntry",
31
+ "AzureOpenAILLMConfigEntry",
32
+ "BedrockLLMConfigEntry",
33
+ "Cache",
34
+ "CerebrasLLMConfigEntry",
35
+ "CohereLLMConfigEntry",
36
+ "DeepSeekLLMConfigEntry",
37
+ "GeminiLLMConfigEntry",
38
+ "GroqLLMConfigEntry",
39
+ "MistralLLMConfigEntry",
40
+ "ModelClient",
41
+ "OllamaLLMConfigEntry",
42
+ "OpenAILLMConfigEntry",
43
+ "OpenAIWrapper",
44
+ "TogetherLLMConfigEntry",
45
+ "config_list_from_dotenv",
46
+ "config_list_from_json",
47
+ "config_list_from_models",
48
+ "config_list_gpt4_gpt35",
49
+ "config_list_openai_aoai",
50
+ "filter_config",
51
+ "get_config_list",
52
+ "get_first_llm_config",
53
+ ]