camel-ai 0.2.82__py3-none-any.whl → 0.2.83a6__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 camel-ai might be problematic. Click here for more details.

Files changed (481) hide show
  1. camel/__init__.py +3 -3
  2. camel/agents/__init__.py +2 -2
  3. camel/agents/_types.py +2 -2
  4. camel/agents/_utils.py +2 -2
  5. camel/agents/base.py +2 -2
  6. camel/agents/chat_agent.py +765 -541
  7. camel/agents/critic_agent.py +2 -2
  8. camel/agents/deductive_reasoner_agent.py +2 -2
  9. camel/agents/embodied_agent.py +2 -2
  10. camel/agents/knowledge_graph_agent.py +2 -2
  11. camel/agents/mcp_agent.py +2 -2
  12. camel/agents/multi_hop_generator_agent.py +2 -2
  13. camel/agents/programmed_agent_instruction.py +2 -2
  14. camel/agents/repo_agent.py +2 -2
  15. camel/agents/role_assignment_agent.py +2 -2
  16. camel/agents/search_agent.py +2 -2
  17. camel/agents/task_agent.py +2 -2
  18. camel/agents/tool_agents/__init__.py +2 -2
  19. camel/agents/tool_agents/base.py +2 -2
  20. camel/agents/tool_agents/hugging_face_tool_agent.py +2 -2
  21. camel/benchmarks/__init__.py +2 -2
  22. camel/benchmarks/apibank.py +2 -2
  23. camel/benchmarks/apibench.py +2 -2
  24. camel/benchmarks/base.py +2 -2
  25. camel/benchmarks/browsecomp.py +2 -2
  26. camel/benchmarks/gaia.py +2 -2
  27. camel/benchmarks/mock_website/mock_web.py +2 -2
  28. camel/benchmarks/mock_website/shopping_mall/app.py +2 -2
  29. camel/benchmarks/nexus.py +2 -2
  30. camel/benchmarks/ragbench.py +2 -2
  31. camel/bots/__init__.py +2 -2
  32. camel/bots/discord/__init__.py +2 -2
  33. camel/bots/discord/discord_app.py +2 -2
  34. camel/bots/discord/discord_installation.py +2 -2
  35. camel/bots/discord/discord_store.py +2 -2
  36. camel/bots/slack/__init__.py +2 -2
  37. camel/bots/slack/models.py +2 -2
  38. camel/bots/slack/slack_app.py +2 -2
  39. camel/bots/telegram_bot.py +2 -2
  40. camel/configs/__init__.py +8 -2
  41. camel/configs/aihubmix_config.py +2 -2
  42. camel/configs/aiml_config.py +2 -2
  43. camel/configs/amd_config.py +2 -2
  44. camel/configs/anthropic_config.py +2 -2
  45. camel/configs/base_config.py +2 -2
  46. camel/configs/bedrock_config.py +2 -2
  47. camel/configs/cerebras_config.py +2 -2
  48. camel/configs/cohere_config.py +2 -2
  49. camel/configs/cometapi_config.py +2 -2
  50. camel/configs/crynux_config.py +2 -2
  51. camel/configs/deepseek_config.py +2 -2
  52. camel/configs/function_gemma_config.py +59 -0
  53. camel/configs/gemini_config.py +2 -2
  54. camel/configs/groq_config.py +2 -2
  55. camel/configs/internlm_config.py +2 -2
  56. camel/configs/litellm_config.py +2 -2
  57. camel/configs/lmstudio_config.py +2 -2
  58. camel/configs/minimax_config.py +2 -2
  59. camel/configs/mistral_config.py +2 -2
  60. camel/configs/modelscope_config.py +2 -2
  61. camel/configs/moonshot_config.py +2 -2
  62. camel/configs/nebius_config.py +2 -2
  63. camel/configs/netmind_config.py +2 -2
  64. camel/configs/novita_config.py +2 -2
  65. camel/configs/nvidia_config.py +2 -2
  66. camel/configs/ollama_config.py +2 -2
  67. camel/configs/openai_config.py +2 -2
  68. camel/configs/openrouter_config.py +2 -2
  69. camel/configs/ppio_config.py +2 -2
  70. camel/configs/qianfan_config.py +2 -2
  71. camel/configs/qwen_config.py +2 -2
  72. camel/configs/reka_config.py +2 -2
  73. camel/configs/samba_config.py +2 -2
  74. camel/configs/sglang_config.py +2 -2
  75. camel/configs/siliconflow_config.py +2 -2
  76. camel/configs/togetherai_config.py +2 -2
  77. camel/configs/vllm_config.py +2 -2
  78. camel/configs/watsonx_config.py +2 -2
  79. camel/configs/yi_config.py +2 -2
  80. camel/configs/zhipuai_config.py +2 -2
  81. camel/data_collectors/__init__.py +2 -2
  82. camel/data_collectors/alpaca_collector.py +2 -2
  83. camel/data_collectors/base.py +2 -2
  84. camel/data_collectors/sharegpt_collector.py +2 -2
  85. camel/datagen/__init__.py +2 -2
  86. camel/datagen/cot_datagen.py +2 -2
  87. camel/datagen/evol_instruct/__init__.py +2 -2
  88. camel/datagen/evol_instruct/evol_instruct.py +2 -2
  89. camel/datagen/evol_instruct/scorer.py +2 -2
  90. camel/datagen/evol_instruct/templates.py +2 -2
  91. camel/datagen/self_improving_cot.py +2 -2
  92. camel/datagen/self_instruct/__init__.py +2 -2
  93. camel/datagen/self_instruct/filter/__init__.py +2 -2
  94. camel/datagen/self_instruct/filter/filter_function.py +2 -2
  95. camel/datagen/self_instruct/filter/filter_registry.py +2 -2
  96. camel/datagen/self_instruct/filter/instruction_filter.py +2 -2
  97. camel/datagen/self_instruct/self_instruct.py +2 -2
  98. camel/datagen/self_instruct/templates.py +2 -2
  99. camel/datagen/source2synth/__init__.py +2 -2
  100. camel/datagen/source2synth/data_processor.py +2 -2
  101. camel/datagen/source2synth/models.py +2 -2
  102. camel/datagen/source2synth/user_data_processor_config.py +2 -2
  103. camel/datahubs/__init__.py +2 -2
  104. camel/datahubs/base.py +2 -2
  105. camel/datahubs/huggingface.py +2 -2
  106. camel/datahubs/models.py +2 -2
  107. camel/datasets/__init__.py +2 -2
  108. camel/datasets/base_generator.py +2 -2
  109. camel/datasets/few_shot_generator.py +2 -2
  110. camel/datasets/models.py +2 -2
  111. camel/datasets/self_instruct_generator.py +2 -2
  112. camel/datasets/static_dataset.py +2 -2
  113. camel/embeddings/__init__.py +2 -2
  114. camel/embeddings/azure_embedding.py +2 -2
  115. camel/embeddings/base.py +2 -2
  116. camel/embeddings/gemini_embedding.py +2 -2
  117. camel/embeddings/jina_embedding.py +2 -2
  118. camel/embeddings/mistral_embedding.py +2 -2
  119. camel/embeddings/openai_compatible_embedding.py +2 -2
  120. camel/embeddings/openai_embedding.py +2 -2
  121. camel/embeddings/sentence_transformers_embeddings.py +2 -2
  122. camel/embeddings/together_embedding.py +2 -2
  123. camel/embeddings/vlm_embedding.py +2 -2
  124. camel/environments/__init__.py +2 -2
  125. camel/environments/models.py +2 -2
  126. camel/environments/multi_step.py +2 -2
  127. camel/environments/rlcards_env.py +2 -2
  128. camel/environments/single_step.py +2 -2
  129. camel/environments/tic_tac_toe.py +2 -2
  130. camel/extractors/__init__.py +2 -2
  131. camel/extractors/base.py +2 -2
  132. camel/extractors/python_strategies.py +2 -2
  133. camel/generators.py +2 -2
  134. camel/human.py +2 -2
  135. camel/interpreters/__init__.py +2 -2
  136. camel/interpreters/base.py +2 -2
  137. camel/interpreters/docker_interpreter.py +2 -2
  138. camel/interpreters/e2b_interpreter.py +2 -2
  139. camel/interpreters/internal_python_interpreter.py +2 -2
  140. camel/interpreters/interpreter_error.py +2 -2
  141. camel/interpreters/ipython_interpreter.py +2 -2
  142. camel/interpreters/microsandbox_interpreter.py +2 -2
  143. camel/interpreters/subprocess_interpreter.py +2 -2
  144. camel/loaders/__init__.py +2 -2
  145. camel/loaders/apify_reader.py +2 -2
  146. camel/loaders/base_io.py +2 -2
  147. camel/loaders/base_loader.py +2 -2
  148. camel/loaders/chunkr_reader.py +2 -2
  149. camel/loaders/crawl4ai_reader.py +2 -2
  150. camel/loaders/firecrawl_reader.py +2 -2
  151. camel/loaders/jina_url_reader.py +2 -2
  152. camel/loaders/markitdown.py +2 -2
  153. camel/loaders/mineru_extractor.py +2 -2
  154. camel/loaders/mistral_reader.py +2 -2
  155. camel/loaders/scrapegraph_reader.py +2 -2
  156. camel/loaders/unstructured_io.py +2 -2
  157. camel/logger.py +2 -2
  158. camel/memories/__init__.py +2 -2
  159. camel/memories/agent_memories.py +2 -2
  160. camel/memories/base.py +2 -2
  161. camel/memories/blocks/__init__.py +2 -2
  162. camel/memories/blocks/chat_history_block.py +2 -2
  163. camel/memories/blocks/vectordb_block.py +2 -2
  164. camel/memories/context_creators/__init__.py +2 -2
  165. camel/memories/context_creators/score_based.py +89 -2
  166. camel/memories/records.py +2 -2
  167. camel/messages/__init__.py +2 -2
  168. camel/messages/base.py +2 -2
  169. camel/messages/conversion/__init__.py +2 -2
  170. camel/messages/conversion/alpaca.py +2 -2
  171. camel/messages/conversion/conversation_models.py +2 -2
  172. camel/messages/conversion/sharegpt/__init__.py +2 -2
  173. camel/messages/conversion/sharegpt/function_call_formatter.py +2 -2
  174. camel/messages/conversion/sharegpt/hermes/__init__.py +2 -2
  175. camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +2 -2
  176. camel/messages/func_message.py +2 -2
  177. camel/models/__init__.py +4 -2
  178. camel/models/_utils.py +2 -2
  179. camel/models/aihubmix_model.py +2 -2
  180. camel/models/aiml_model.py +2 -2
  181. camel/models/amd_model.py +2 -2
  182. camel/models/anthropic_model.py +2 -2
  183. camel/models/aws_bedrock_model.py +2 -2
  184. camel/models/azure_openai_model.py +4 -28
  185. camel/models/base_audio_model.py +2 -2
  186. camel/models/base_model.py +192 -14
  187. camel/models/cerebras_model.py +2 -2
  188. camel/models/cohere_model.py +4 -30
  189. camel/models/cometapi_model.py +2 -2
  190. camel/models/crynux_model.py +2 -2
  191. camel/models/deepseek_model.py +4 -28
  192. camel/models/fish_audio_model.py +2 -2
  193. camel/models/function_gemma_model.py +889 -0
  194. camel/models/gemini_model.py +4 -28
  195. camel/models/groq_model.py +2 -2
  196. camel/models/internlm_model.py +2 -2
  197. camel/models/litellm_model.py +3 -17
  198. camel/models/lmstudio_model.py +2 -2
  199. camel/models/minimax_model.py +2 -2
  200. camel/models/mistral_model.py +4 -30
  201. camel/models/model_factory.py +4 -2
  202. camel/models/model_manager.py +2 -2
  203. camel/models/modelscope_model.py +2 -2
  204. camel/models/moonshot_model.py +3 -15
  205. camel/models/nebius_model.py +2 -2
  206. camel/models/nemotron_model.py +2 -2
  207. camel/models/netmind_model.py +2 -2
  208. camel/models/novita_model.py +2 -2
  209. camel/models/nvidia_model.py +2 -2
  210. camel/models/ollama_model.py +2 -2
  211. camel/models/openai_audio_models.py +2 -2
  212. camel/models/openai_compatible_model.py +4 -28
  213. camel/models/openai_model.py +4 -43
  214. camel/models/openrouter_model.py +2 -2
  215. camel/models/ppio_model.py +2 -2
  216. camel/models/qianfan_model.py +2 -2
  217. camel/models/qwen_model.py +2 -2
  218. camel/models/reka_model.py +4 -30
  219. camel/models/reward/__init__.py +2 -2
  220. camel/models/reward/base_reward_model.py +2 -2
  221. camel/models/reward/evaluator.py +2 -2
  222. camel/models/reward/nemotron_model.py +2 -2
  223. camel/models/reward/skywork_model.py +2 -2
  224. camel/models/samba_model.py +4 -30
  225. camel/models/sglang_model.py +4 -30
  226. camel/models/siliconflow_model.py +2 -2
  227. camel/models/stub_model.py +2 -2
  228. camel/models/togetherai_model.py +2 -2
  229. camel/models/vllm_model.py +2 -2
  230. camel/models/volcano_model.py +147 -4
  231. camel/models/watsonx_model.py +4 -30
  232. camel/models/yi_model.py +2 -2
  233. camel/models/zhipuai_model.py +2 -2
  234. camel/parsers/__init__.py +2 -2
  235. camel/parsers/mcp_tool_call_parser.py +2 -2
  236. camel/personas/__init__.py +2 -2
  237. camel/personas/persona.py +2 -2
  238. camel/personas/persona_hub.py +2 -2
  239. camel/prompts/__init__.py +2 -2
  240. camel/prompts/ai_society.py +2 -2
  241. camel/prompts/base.py +2 -2
  242. camel/prompts/code.py +2 -2
  243. camel/prompts/evaluation.py +2 -2
  244. camel/prompts/generate_text_embedding_data.py +2 -2
  245. camel/prompts/image_craft.py +2 -2
  246. camel/prompts/misalignment.py +2 -2
  247. camel/prompts/multi_condition_image_craft.py +2 -2
  248. camel/prompts/object_recognition.py +2 -2
  249. camel/prompts/persona_hub.py +2 -2
  250. camel/prompts/prompt_templates.py +2 -2
  251. camel/prompts/role_description_prompt_template.py +2 -2
  252. camel/prompts/solution_extraction.py +2 -2
  253. camel/prompts/task_prompt_template.py +2 -2
  254. camel/prompts/translation.py +2 -2
  255. camel/prompts/video_description_prompt.py +2 -2
  256. camel/responses/__init__.py +2 -2
  257. camel/responses/agent_responses.py +2 -2
  258. camel/retrievers/__init__.py +2 -2
  259. camel/retrievers/auto_retriever.py +2 -2
  260. camel/retrievers/base.py +2 -2
  261. camel/retrievers/bm25_retriever.py +2 -2
  262. camel/retrievers/cohere_rerank_retriever.py +2 -2
  263. camel/retrievers/hybrid_retrival.py +2 -2
  264. camel/retrievers/vector_retriever.py +2 -2
  265. camel/runtimes/__init__.py +2 -2
  266. camel/runtimes/api.py +2 -2
  267. camel/runtimes/base.py +2 -2
  268. camel/runtimes/configs.py +2 -2
  269. camel/runtimes/daytona_runtime.py +2 -2
  270. camel/runtimes/docker_runtime.py +2 -2
  271. camel/runtimes/llm_guard_runtime.py +2 -2
  272. camel/runtimes/remote_http_runtime.py +2 -2
  273. camel/runtimes/ubuntu_docker_runtime.py +2 -2
  274. camel/runtimes/utils/__init__.py +2 -2
  275. camel/runtimes/utils/function_risk_toolkit.py +2 -2
  276. camel/runtimes/utils/ignore_risk_toolkit.py +2 -2
  277. camel/schemas/__init__.py +2 -2
  278. camel/schemas/base.py +2 -2
  279. camel/schemas/openai_converter.py +2 -2
  280. camel/schemas/outlines_converter.py +2 -2
  281. camel/services/agent_openapi_server.py +2 -2
  282. camel/societies/__init__.py +2 -2
  283. camel/societies/babyagi_playing.py +2 -2
  284. camel/societies/role_playing.py +2 -2
  285. camel/societies/workforce/__init__.py +2 -2
  286. camel/societies/workforce/base.py +2 -2
  287. camel/societies/workforce/events.py +4 -2
  288. camel/societies/workforce/prompts.py +9 -8
  289. camel/societies/workforce/role_playing_worker.py +2 -2
  290. camel/societies/workforce/single_agent_worker.py +2 -2
  291. camel/societies/workforce/structured_output_handler.py +2 -2
  292. camel/societies/workforce/task_channel.py +2 -2
  293. camel/societies/workforce/utils.py +2 -2
  294. camel/societies/workforce/worker.py +2 -2
  295. camel/societies/workforce/workflow_memory_manager.py +2 -2
  296. camel/societies/workforce/workforce.py +132 -71
  297. camel/societies/workforce/workforce_callback.py +2 -2
  298. camel/societies/workforce/workforce_logger.py +2 -2
  299. camel/societies/workforce/workforce_metrics.py +2 -2
  300. camel/storages/__init__.py +2 -2
  301. camel/storages/graph_storages/__init__.py +2 -2
  302. camel/storages/graph_storages/base.py +2 -2
  303. camel/storages/graph_storages/graph_element.py +2 -2
  304. camel/storages/graph_storages/nebula_graph.py +2 -2
  305. camel/storages/graph_storages/neo4j_graph.py +2 -2
  306. camel/storages/key_value_storages/__init__.py +2 -2
  307. camel/storages/key_value_storages/base.py +2 -2
  308. camel/storages/key_value_storages/in_memory.py +2 -2
  309. camel/storages/key_value_storages/json.py +2 -2
  310. camel/storages/key_value_storages/mem0_cloud.py +2 -2
  311. camel/storages/key_value_storages/redis.py +2 -2
  312. camel/storages/object_storages/__init__.py +2 -2
  313. camel/storages/object_storages/amazon_s3.py +2 -2
  314. camel/storages/object_storages/azure_blob.py +2 -2
  315. camel/storages/object_storages/base.py +2 -2
  316. camel/storages/object_storages/google_cloud.py +2 -2
  317. camel/storages/vectordb_storages/__init__.py +2 -2
  318. camel/storages/vectordb_storages/base.py +2 -2
  319. camel/storages/vectordb_storages/chroma.py +2 -2
  320. camel/storages/vectordb_storages/faiss.py +2 -2
  321. camel/storages/vectordb_storages/milvus.py +2 -2
  322. camel/storages/vectordb_storages/oceanbase.py +2 -2
  323. camel/storages/vectordb_storages/pgvector.py +2 -2
  324. camel/storages/vectordb_storages/qdrant.py +2 -2
  325. camel/storages/vectordb_storages/surreal.py +2 -2
  326. camel/storages/vectordb_storages/tidb.py +2 -2
  327. camel/storages/vectordb_storages/weaviate.py +2 -2
  328. camel/tasks/__init__.py +2 -2
  329. camel/tasks/task.py +2 -2
  330. camel/tasks/task_prompt.py +2 -2
  331. camel/terminators/__init__.py +2 -2
  332. camel/terminators/base.py +2 -2
  333. camel/terminators/response_terminator.py +2 -2
  334. camel/terminators/token_limit_terminator.py +2 -2
  335. camel/toolkits/__init__.py +6 -3
  336. camel/toolkits/aci_toolkit.py +2 -2
  337. camel/toolkits/arxiv_toolkit.py +2 -2
  338. camel/toolkits/ask_news_toolkit.py +2 -2
  339. camel/toolkits/async_browser_toolkit.py +2 -2
  340. camel/toolkits/audio_analysis_toolkit.py +2 -2
  341. camel/toolkits/base.py +47 -5
  342. camel/toolkits/bohrium_toolkit.py +2 -2
  343. camel/toolkits/browser_toolkit.py +2 -2
  344. camel/toolkits/browser_toolkit_commons.py +2 -2
  345. camel/toolkits/code_execution.py +2 -2
  346. camel/toolkits/context_summarizer_toolkit.py +2 -2
  347. camel/toolkits/craw4ai_toolkit.py +2 -2
  348. camel/toolkits/dappier_toolkit.py +2 -2
  349. camel/toolkits/data_commons_toolkit.py +2 -2
  350. camel/toolkits/dingtalk.py +2 -2
  351. camel/toolkits/earth_science_toolkit.py +2 -2
  352. camel/toolkits/edgeone_pages_mcp_toolkit.py +2 -2
  353. camel/toolkits/excel_toolkit.py +2 -2
  354. camel/toolkits/file_toolkit.py +2 -2
  355. camel/toolkits/function_tool.py +95 -25
  356. camel/toolkits/github_toolkit.py +2 -2
  357. camel/toolkits/gmail_toolkit.py +2 -2
  358. camel/toolkits/google_calendar_toolkit.py +2 -2
  359. camel/toolkits/google_drive_mcp_toolkit.py +2 -2
  360. camel/toolkits/google_maps_toolkit.py +2 -2
  361. camel/toolkits/google_scholar_toolkit.py +2 -2
  362. camel/toolkits/human_toolkit.py +2 -2
  363. camel/toolkits/hybrid_browser_toolkit/__init__.py +2 -2
  364. camel/toolkits/hybrid_browser_toolkit/config_loader.py +2 -2
  365. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +2 -2
  366. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +89 -104
  367. camel/toolkits/hybrid_browser_toolkit/installer.py +2 -2
  368. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +25 -14
  369. camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +6 -0
  370. camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +2 -2
  371. camel/toolkits/hybrid_browser_toolkit_py/__init__.py +2 -2
  372. camel/toolkits/hybrid_browser_toolkit_py/actions.py +2 -2
  373. camel/toolkits/hybrid_browser_toolkit_py/agent.py +2 -2
  374. camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +2 -2
  375. camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +2 -2
  376. camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2 -2
  377. camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +2 -2
  378. camel/toolkits/image_analysis_toolkit.py +2 -2
  379. camel/toolkits/image_generation_toolkit.py +2 -2
  380. camel/toolkits/jina_reranker_toolkit.py +2 -2
  381. camel/toolkits/klavis_toolkit.py +2 -2
  382. camel/toolkits/linkedin_toolkit.py +2 -2
  383. camel/toolkits/markitdown_toolkit.py +2 -2
  384. camel/toolkits/math_toolkit.py +2 -2
  385. camel/toolkits/mcp_toolkit.py +2 -2
  386. camel/toolkits/memory_toolkit.py +2 -2
  387. camel/toolkits/meshy_toolkit.py +2 -2
  388. camel/toolkits/message_agent_toolkit.py +2 -2
  389. camel/toolkits/message_integration.py +6 -2
  390. camel/toolkits/microsoft_outlook_mail_toolkit.py +1885 -0
  391. camel/toolkits/mineru_toolkit.py +2 -2
  392. camel/toolkits/minimax_mcp_toolkit.py +2 -2
  393. camel/toolkits/networkx_toolkit.py +2 -2
  394. camel/toolkits/note_taking_toolkit.py +2 -2
  395. camel/toolkits/notion_mcp_toolkit.py +2 -2
  396. camel/toolkits/notion_toolkit.py +2 -2
  397. camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
  398. camel/toolkits/open_api_specs/coursera/__init__.py +2 -2
  399. camel/toolkits/open_api_specs/create_qr_code/__init__.py +2 -2
  400. camel/toolkits/open_api_specs/klarna/__init__.py +2 -2
  401. camel/toolkits/open_api_specs/nasa_apod/__init__.py +2 -2
  402. camel/toolkits/open_api_specs/outschool/__init__.py +2 -2
  403. camel/toolkits/open_api_specs/outschool/paths/__init__.py +2 -2
  404. camel/toolkits/open_api_specs/outschool/paths/get_classes.py +2 -2
  405. camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +2 -2
  406. camel/toolkits/open_api_specs/security_config.py +2 -2
  407. camel/toolkits/open_api_specs/speak/__init__.py +2 -2
  408. camel/toolkits/open_api_specs/web_scraper/__init__.py +2 -2
  409. camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +2 -2
  410. camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +2 -2
  411. camel/toolkits/open_api_toolkit.py +2 -2
  412. camel/toolkits/openbb_toolkit.py +2 -2
  413. camel/toolkits/origene_mcp_toolkit.py +2 -2
  414. camel/toolkits/playwright_mcp_toolkit.py +2 -2
  415. camel/toolkits/pptx_toolkit.py +2 -2
  416. camel/toolkits/pubmed_toolkit.py +2 -2
  417. camel/toolkits/pulse_mcp_search_toolkit.py +2 -2
  418. camel/toolkits/pyautogui_toolkit.py +2 -2
  419. camel/toolkits/reddit_toolkit.py +2 -2
  420. camel/toolkits/resend_toolkit.py +2 -2
  421. camel/toolkits/retrieval_toolkit.py +2 -2
  422. camel/toolkits/screenshot_toolkit.py +2 -2
  423. camel/toolkits/search_toolkit.py +70 -13
  424. camel/toolkits/searxng_toolkit.py +2 -2
  425. camel/toolkits/semantic_scholar_toolkit.py +2 -2
  426. camel/toolkits/slack_toolkit.py +2 -2
  427. camel/toolkits/sql_toolkit.py +2 -2
  428. camel/toolkits/stripe_toolkit.py +2 -2
  429. camel/toolkits/sympy_toolkit.py +2 -2
  430. camel/toolkits/task_planning_toolkit.py +2 -2
  431. camel/toolkits/terminal_toolkit/__init__.py +2 -2
  432. camel/toolkits/terminal_toolkit/terminal_toolkit.py +323 -112
  433. camel/toolkits/terminal_toolkit/utils.py +179 -52
  434. camel/toolkits/thinking_toolkit.py +2 -2
  435. camel/toolkits/twitter_toolkit.py +2 -2
  436. camel/toolkits/vertex_ai_veo_toolkit.py +2 -2
  437. camel/toolkits/video_analysis_toolkit.py +2 -2
  438. camel/toolkits/video_download_toolkit.py +2 -2
  439. camel/toolkits/weather_toolkit.py +2 -2
  440. camel/toolkits/web_deploy_toolkit.py +2 -2
  441. camel/toolkits/wechat_official_toolkit.py +2 -2
  442. camel/toolkits/whatsapp_toolkit.py +2 -2
  443. camel/toolkits/wolfram_alpha_toolkit.py +2 -2
  444. camel/toolkits/zapier_toolkit.py +2 -2
  445. camel/types/__init__.py +2 -2
  446. camel/types/agents/__init__.py +2 -2
  447. camel/types/agents/tool_calling_record.py +2 -2
  448. camel/types/enums.py +5 -4
  449. camel/types/mcp_registries.py +2 -2
  450. camel/types/openai_types.py +2 -2
  451. camel/types/unified_model_type.py +10 -6
  452. camel/utils/__init__.py +5 -2
  453. camel/utils/agent_context.py +41 -0
  454. camel/utils/async_func.py +2 -2
  455. camel/utils/chunker/__init__.py +2 -2
  456. camel/utils/chunker/base.py +2 -2
  457. camel/utils/chunker/code_chunker.py +2 -2
  458. camel/utils/chunker/uio_chunker.py +2 -2
  459. camel/utils/commons.py +2 -2
  460. camel/utils/constants.py +2 -2
  461. camel/utils/context_utils.py +2 -2
  462. camel/utils/deduplication.py +2 -2
  463. camel/utils/filename.py +2 -2
  464. camel/utils/langfuse.py +18 -10
  465. camel/utils/mcp.py +2 -2
  466. camel/utils/mcp_client.py +2 -2
  467. camel/utils/message_summarizer.py +2 -2
  468. camel/utils/response_format.py +2 -2
  469. camel/utils/token_counting.py +2 -2
  470. camel/utils/tool_result.py +2 -2
  471. camel/verifiers/__init__.py +2 -2
  472. camel/verifiers/base.py +2 -2
  473. camel/verifiers/math_verifier.py +2 -2
  474. camel/verifiers/models.py +2 -2
  475. camel/verifiers/physics_verifier.py +2 -2
  476. camel/verifiers/python_verifier.py +2 -2
  477. {camel_ai-0.2.82.dist-info → camel_ai-0.2.83a6.dist-info}/METADATA +34 -29
  478. camel_ai-0.2.83a6.dist-info/RECORD +511 -0
  479. camel_ai-0.2.82.dist-info/RECORD +0 -507
  480. {camel_ai-0.2.82.dist-info → camel_ai-0.2.83a6.dist-info}/WHEEL +0 -0
  481. {camel_ai-0.2.82.dist-info → camel_ai-0.2.83a6.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, Union
16
16
 
@@ -25,9 +25,7 @@ from camel.utils import (
25
25
  OpenAITokenCounter,
26
26
  api_keys_required,
27
27
  dependencies_required,
28
- get_current_agent_session_id,
29
28
  update_current_observation,
30
- update_langfuse_trace,
31
29
  )
32
30
 
33
31
  if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
@@ -240,19 +238,7 @@ class RekaModel(BaseModelBackend):
240
238
  model=str(self.model_type),
241
239
  model_parameters=self.model_config_dict,
242
240
  )
243
- # Update Langfuse trace with current agent session and metadata
244
- agent_session_id = get_current_agent_session_id()
245
- if agent_session_id:
246
- update_langfuse_trace(
247
- session_id=agent_session_id,
248
- metadata={
249
- "source": "camel",
250
- "agent_id": agent_session_id,
251
- "agent_type": "camel_chat_agent",
252
- "model_type": str(self.model_type),
253
- },
254
- tags=["CAMEL-AI", str(self.model_type)],
255
- )
241
+ self._log_and_trace()
256
242
 
257
243
  reka_messages = self._convert_openai_to_reka_messages(messages)
258
244
 
@@ -310,19 +296,7 @@ class RekaModel(BaseModelBackend):
310
296
  model_parameters=self.model_config_dict,
311
297
  )
312
298
 
313
- # Update Langfuse trace with current agent session and metadata
314
- agent_session_id = get_current_agent_session_id()
315
- if agent_session_id:
316
- update_langfuse_trace(
317
- session_id=agent_session_id,
318
- metadata={
319
- "source": "camel",
320
- "agent_id": agent_session_id,
321
- "agent_type": "camel_chat_agent",
322
- "model_type": str(self.model_type),
323
- },
324
- tags=["CAMEL-AI", str(self.model_type)],
325
- )
299
+ self._log_and_trace()
326
300
 
327
301
  reka_messages = self._convert_openai_to_reka_messages(messages)
328
302
 
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from .base_reward_model import BaseRewardModel
15
15
  from .evaluator import Evaluator
16
16
  from .nemotron_model import NemotronRewardModel
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from abc import ABC, abstractmethod
15
15
  from typing import Dict, List, Optional, Union
16
16
 
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from typing import Dict, List
15
15
 
16
16
  from camel.models.reward import BaseRewardModel
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from typing import Dict, List, Optional, Union
16
16
 
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from typing import Dict, List, Optional, Union
15
15
 
16
16
  import torch
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import json
15
15
  import os
16
16
  import time
@@ -36,9 +36,7 @@ from camel.utils import (
36
36
  BaseTokenCounter,
37
37
  OpenAITokenCounter,
38
38
  api_keys_required,
39
- get_current_agent_session_id,
40
39
  update_current_observation,
41
- update_langfuse_trace,
42
40
  )
43
41
 
44
42
  try:
@@ -201,19 +199,7 @@ class SambaModel(BaseModelBackend):
201
199
  model_parameters=self.model_config_dict,
202
200
  )
203
201
 
204
- # Update Langfuse trace with current agent session and metadata
205
- agent_session_id = get_current_agent_session_id()
206
- if agent_session_id:
207
- update_langfuse_trace(
208
- session_id=agent_session_id,
209
- metadata={
210
- "source": "camel",
211
- "agent_id": agent_session_id,
212
- "agent_type": "camel_chat_agent",
213
- "model_type": str(self.model_type),
214
- },
215
- tags=["CAMEL-AI", str(self.model_type)],
216
- )
202
+ self._log_and_trace()
217
203
 
218
204
  if "tools" in self.model_config_dict:
219
205
  del self.model_config_dict["tools"]
@@ -252,19 +238,7 @@ class SambaModel(BaseModelBackend):
252
238
  model=str(self.model_type),
253
239
  model_parameters=self.model_config_dict,
254
240
  )
255
- # Update Langfuse trace with current agent session and metadata
256
- agent_session_id = get_current_agent_session_id()
257
- if agent_session_id:
258
- update_langfuse_trace(
259
- session_id=agent_session_id,
260
- metadata={
261
- "source": "camel",
262
- "agent_id": agent_session_id,
263
- "agent_type": "camel_chat_agent",
264
- "model_type": str(self.model_type),
265
- },
266
- tags=["CAMEL-AI", str(self.model_type)],
267
- )
241
+ self._log_and_trace()
268
242
 
269
243
  if "tools" in self.model_config_dict:
270
244
  del self.model_config_dict["tools"]
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import logging
15
15
  import os
16
16
  import subprocess
@@ -32,9 +32,7 @@ from camel.types import (
32
32
  from camel.utils import (
33
33
  BaseTokenCounter,
34
34
  OpenAITokenCounter,
35
- get_current_agent_session_id,
36
35
  update_current_observation,
37
- update_langfuse_trace,
38
36
  )
39
37
 
40
38
  if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
@@ -266,19 +264,7 @@ class SGLangModel(BaseModelBackend):
266
264
  model=str(self.model_type),
267
265
  model_parameters=self.model_config_dict,
268
266
  )
269
- # Update Langfuse trace with current agent session and metadata
270
- agent_session_id = get_current_agent_session_id()
271
- if agent_session_id:
272
- update_langfuse_trace(
273
- session_id=agent_session_id,
274
- metadata={
275
- "source": "camel",
276
- "agent_id": agent_session_id,
277
- "agent_type": "camel_chat_agent",
278
- "model_type": str(self.model_type),
279
- },
280
- tags=["CAMEL-AI", str(self.model_type)],
281
- )
267
+ self._log_and_trace()
282
268
 
283
269
  # Ensure server is running
284
270
  self._ensure_server_running()
@@ -341,19 +327,7 @@ class SGLangModel(BaseModelBackend):
341
327
  model=str(self.model_type),
342
328
  model_parameters=self.model_config_dict,
343
329
  )
344
- # Update Langfuse trace with current agent session and metadata
345
- agent_session_id = get_current_agent_session_id()
346
- if agent_session_id:
347
- update_langfuse_trace(
348
- session_id=agent_session_id,
349
- metadata={
350
- "source": "camel",
351
- "agent_id": agent_session_id,
352
- "agent_type": "camel_chat_agent",
353
- "model_type": str(self.model_type),
354
- },
355
- tags=["CAMEL-AI", str(self.model_type)],
356
- )
330
+ self._log_and_trace()
357
331
 
358
332
  # Ensure server is running
359
333
  self._ensure_server_running()
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from typing import Any, Dict, Optional, Union
16
16
 
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import time
15
15
  from typing import Any, Dict, List, Optional, Type, Union
16
16
 
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, Optional, Union
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  import subprocess
16
16
  from typing import Any, Dict, Optional, Union
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,13 +10,17 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
- from typing import Any, Dict, Optional, Union
16
+ from typing import Any, Dict, List, Optional, Type, Union
17
17
 
18
+ from openai import AsyncStream, Stream
19
+ from pydantic import BaseModel
20
+
21
+ from camel.messages import OpenAIMessage
18
22
  from camel.models.openai_compatible_model import OpenAICompatibleModel
19
- from camel.types import ModelType
23
+ from camel.types import ChatCompletion, ChatCompletionChunk, ModelType
20
24
  from camel.utils import (
21
25
  BaseTokenCounter,
22
26
  api_keys_required,
@@ -85,3 +89,142 @@ class VolcanoModel(OpenAICompatibleModel):
85
89
  max_retries,
86
90
  **kwargs,
87
91
  )
92
+ # Store the last reasoning_content from model response
93
+ # This will be injected into the next request's assistant message
94
+ self._last_reasoning_content: Optional[str] = None
95
+
96
+ def _inject_reasoning_content(
97
+ self,
98
+ messages: List[OpenAIMessage],
99
+ ) -> List[OpenAIMessage]:
100
+ r"""Inject the last reasoning_content into assistant messages.
101
+
102
+ For Volcano Engine's doubao-seed models with deep thinking enabled,
103
+ the reasoning_content from the model response needs to be passed back
104
+ in subsequent requests for proper context management.
105
+
106
+ Args:
107
+ messages: The original messages list.
108
+
109
+ Returns:
110
+ Messages with reasoning_content added to the last assistant
111
+ message that has tool_calls.
112
+ """
113
+ if not self._last_reasoning_content:
114
+ return messages
115
+
116
+ # Find the last assistant message with tool_calls and inject
117
+ # reasoning_content
118
+ processed: List[OpenAIMessage] = []
119
+ reasoning_injected = False
120
+
121
+ for msg in reversed(messages):
122
+ if (
123
+ not reasoning_injected
124
+ and isinstance(msg, dict)
125
+ and msg.get("role") == "assistant"
126
+ and msg.get("tool_calls")
127
+ and "reasoning_content" not in msg
128
+ ):
129
+ # Inject reasoning_content into this message
130
+ new_msg = dict(msg)
131
+ new_msg["reasoning_content"] = self._last_reasoning_content
132
+ processed.append(new_msg) # type: ignore[arg-type]
133
+ reasoning_injected = True
134
+ else:
135
+ processed.append(msg)
136
+
137
+ # Only clear after successful injection
138
+ if reasoning_injected:
139
+ self._last_reasoning_content = None
140
+
141
+ return list(reversed(processed))
142
+
143
+ def _extract_reasoning_content(
144
+ self, response: ChatCompletion
145
+ ) -> Optional[str]:
146
+ r"""Extract reasoning_content from the model response.
147
+
148
+ Args:
149
+ response: The model response.
150
+
151
+ Returns:
152
+ The reasoning_content if available, None otherwise.
153
+ """
154
+ if response.choices:
155
+ return getattr(
156
+ response.choices[0].message, "reasoning_content", None
157
+ )
158
+ return None
159
+
160
+ def run(
161
+ self,
162
+ messages: List[OpenAIMessage],
163
+ response_format: Optional[Type[BaseModel]] = None,
164
+ tools: Optional[List[Dict[str, Any]]] = None,
165
+ ) -> Union[ChatCompletion, Stream[ChatCompletionChunk]]:
166
+ r"""Runs inference of Volcano Engine chat completion.
167
+
168
+ Overrides the base run method to inject reasoning_content from
169
+ previous responses into subsequent requests, as required by
170
+ Volcano Engine's doubao-seed models with deep thinking enabled.
171
+
172
+ Args:
173
+ messages: Message list with the chat history in OpenAI API format.
174
+ response_format: The format of the response.
175
+ tools: The schema of the tools to use for the request.
176
+
177
+ Returns:
178
+ ChatCompletion in the non-stream mode, or
179
+ Stream[ChatCompletionChunk] in the stream mode.
180
+ """
181
+ # Inject reasoning_content from previous response
182
+ processed_messages = self._inject_reasoning_content(messages)
183
+
184
+ # Call parent's run
185
+ response = super().run(processed_messages, response_format, tools)
186
+
187
+ # Extract and store reasoning_content for next request
188
+ if isinstance(response, ChatCompletion):
189
+ self._last_reasoning_content = self._extract_reasoning_content(
190
+ response
191
+ )
192
+
193
+ return response
194
+
195
+ async def arun(
196
+ self,
197
+ messages: List[OpenAIMessage],
198
+ response_format: Optional[Type[BaseModel]] = None,
199
+ tools: Optional[List[Dict[str, Any]]] = None,
200
+ ) -> Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
201
+ r"""Runs async inference of Volcano Engine chat completion.
202
+
203
+ Overrides the base arun method to inject reasoning_content from
204
+ previous responses into subsequent requests, as required by
205
+ Volcano Engine's doubao-seed models with deep thinking enabled.
206
+
207
+ Args:
208
+ messages: Message list with the chat history in OpenAI API format.
209
+ response_format: The format of the response.
210
+ tools: The schema of the tools to use for the request.
211
+
212
+ Returns:
213
+ ChatCompletion in the non-stream mode, or
214
+ AsyncStream[ChatCompletionChunk] in the stream mode.
215
+ """
216
+ # Inject reasoning_content from previous response
217
+ processed_messages = self._inject_reasoning_content(messages)
218
+
219
+ # Call parent's arun
220
+ response = await super().arun(
221
+ processed_messages, response_format, tools
222
+ )
223
+
224
+ # Extract and store reasoning_content for next request
225
+ if isinstance(response, ChatCompletion):
226
+ self._last_reasoning_content = self._extract_reasoning_content(
227
+ response
228
+ )
229
+
230
+ return response
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from typing import Any, Dict, List, Optional, Type, Union
16
16
 
@@ -26,9 +26,7 @@ from camel.utils import (
26
26
  BaseTokenCounter,
27
27
  OpenAITokenCounter,
28
28
  api_keys_required,
29
- get_current_agent_session_id,
30
29
  update_current_observation,
31
- update_langfuse_trace,
32
30
  )
33
31
 
34
32
  if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
@@ -193,19 +191,7 @@ class WatsonXModel(BaseModelBackend):
193
191
  model=str(self.model_type),
194
192
  model_parameters=self.model_config_dict,
195
193
  )
196
- # Update Langfuse trace with current agent session and metadata
197
- agent_session_id = get_current_agent_session_id()
198
- if agent_session_id:
199
- update_langfuse_trace(
200
- session_id=agent_session_id,
201
- metadata={
202
- "source": "camel",
203
- "agent_id": agent_session_id,
204
- "agent_type": "camel_chat_agent",
205
- "model_type": str(self.model_type),
206
- },
207
- tags=["CAMEL-AI", str(self.model_type)],
208
- )
194
+ self._log_and_trace()
209
195
  try:
210
196
  request_config = self._prepare_request(
211
197
  messages, response_format, tools
@@ -256,19 +242,7 @@ class WatsonXModel(BaseModelBackend):
256
242
  model=str(self.model_type),
257
243
  model_parameters=self.model_config_dict,
258
244
  )
259
- # Update Langfuse trace with current agent session and metadata
260
- agent_session_id = get_current_agent_session_id()
261
- if agent_session_id:
262
- update_langfuse_trace(
263
- session_id=agent_session_id,
264
- metadata={
265
- "source": "camel",
266
- "agent_id": agent_session_id,
267
- "agent_type": "camel_chat_agent",
268
- "model_type": str(self.model_type),
269
- },
270
- tags=["CAMEL-AI", str(self.model_type)],
271
- )
245
+ self._log_and_trace()
272
246
 
273
247
  try:
274
248
  request_config = self._prepare_request(
camel/models/yi_model.py CHANGED
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, Optional, Union
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, List, Optional, Type, Union
camel/parsers/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  """Helper parsers used across the CAMEL project."""
15
15
 
16
16
  from .mcp_tool_call_parser import extract_tool_calls_from_text
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  """Utility functions for parsing MCP tool calls from model output."""
15
15
 
16
16
  import ast
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from .persona import Persona
15
15
  from .persona_hub import PersonaHub
16
16