camel-ai 0.2.59__py3-none-any.whl → 0.2.82__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.
- camel/__init__.py +3 -3
- camel/agents/__init__.py +2 -2
- camel/agents/_types.py +9 -4
- camel/agents/_utils.py +40 -2
- camel/agents/base.py +2 -2
- camel/agents/chat_agent.py +5012 -902
- camel/agents/critic_agent.py +2 -2
- camel/agents/deductive_reasoner_agent.py +56 -56
- camel/agents/embodied_agent.py +2 -2
- camel/agents/knowledge_graph_agent.py +20 -20
- camel/agents/mcp_agent.py +39 -36
- camel/agents/multi_hop_generator_agent.py +3 -3
- camel/agents/programmed_agent_instruction.py +2 -2
- camel/agents/repo_agent.py +4 -3
- camel/agents/role_assignment_agent.py +2 -2
- camel/agents/search_agent.py +2 -2
- camel/agents/task_agent.py +2 -2
- camel/agents/tool_agents/__init__.py +2 -2
- camel/agents/tool_agents/base.py +2 -2
- camel/agents/tool_agents/hugging_face_tool_agent.py +3 -3
- camel/benchmarks/__init__.py +2 -2
- camel/benchmarks/apibank.py +5 -5
- camel/benchmarks/apibench.py +2 -2
- camel/benchmarks/base.py +2 -2
- camel/benchmarks/browsecomp.py +44 -33
- camel/benchmarks/gaia.py +17 -13
- camel/benchmarks/mock_website/README.md +94 -0
- camel/benchmarks/mock_website/mock_web.py +299 -0
- camel/benchmarks/mock_website/requirements.txt +3 -0
- camel/benchmarks/mock_website/shopping_mall/app.py +465 -0
- camel/benchmarks/mock_website/task.json +104 -0
- camel/benchmarks/nexus.py +3 -3
- camel/benchmarks/ragbench.py +2 -2
- camel/bots/__init__.py +2 -2
- camel/bots/discord/__init__.py +2 -2
- camel/bots/discord/discord_app.py +2 -2
- camel/bots/discord/discord_installation.py +2 -2
- camel/bots/discord/discord_store.py +3 -3
- camel/bots/slack/__init__.py +2 -2
- camel/bots/slack/models.py +4 -4
- camel/bots/slack/slack_app.py +2 -2
- camel/bots/telegram_bot.py +2 -2
- camel/configs/__init__.py +26 -2
- camel/configs/aihubmix_config.py +90 -0
- camel/configs/aiml_config.py +2 -2
- camel/configs/amd_config.py +70 -0
- camel/configs/anthropic_config.py +8 -7
- camel/configs/base_config.py +2 -2
- camel/configs/bedrock_config.py +5 -3
- camel/configs/cerebras_config.py +98 -0
- camel/configs/cohere_config.py +3 -3
- camel/configs/cometapi_config.py +106 -0
- camel/configs/crynux_config.py +94 -0
- camel/configs/deepseek_config.py +9 -8
- camel/configs/gemini_config.py +6 -4
- camel/configs/groq_config.py +6 -4
- camel/configs/internlm_config.py +6 -4
- camel/configs/litellm_config.py +2 -2
- camel/configs/lmstudio_config.py +6 -4
- camel/configs/minimax_config.py +95 -0
- camel/configs/mistral_config.py +3 -3
- camel/configs/modelscope_config.py +5 -3
- camel/configs/moonshot_config.py +2 -2
- camel/configs/nebius_config.py +105 -0
- camel/configs/netmind_config.py +2 -2
- camel/configs/novita_config.py +2 -2
- camel/configs/nvidia_config.py +2 -2
- camel/configs/ollama_config.py +2 -2
- camel/configs/openai_config.py +8 -3
- camel/configs/openrouter_config.py +6 -4
- camel/configs/ppio_config.py +2 -2
- camel/configs/qianfan_config.py +85 -0
- camel/configs/qwen_config.py +2 -2
- camel/configs/reka_config.py +3 -3
- camel/configs/samba_config.py +8 -6
- camel/configs/sglang_config.py +2 -2
- camel/configs/siliconflow_config.py +2 -2
- camel/configs/togetherai_config.py +2 -2
- camel/configs/vllm_config.py +4 -2
- camel/configs/watsonx_config.py +2 -2
- camel/configs/yi_config.py +6 -4
- camel/configs/zhipuai_config.py +6 -4
- camel/{data_collector → data_collectors}/__init__.py +2 -2
- camel/{data_collector → data_collectors}/alpaca_collector.py +19 -10
- camel/{data_collector → data_collectors}/base.py +2 -2
- camel/{data_collector → data_collectors}/sharegpt_collector.py +3 -3
- camel/datagen/__init__.py +2 -2
- camel/datagen/cot_datagen.py +32 -37
- camel/datagen/evol_instruct/__init__.py +2 -2
- camel/datagen/evol_instruct/evol_instruct.py +2 -2
- camel/datagen/evol_instruct/scorer.py +24 -25
- camel/datagen/evol_instruct/templates.py +48 -48
- camel/datagen/self_improving_cot.py +5 -5
- camel/datagen/self_instruct/__init__.py +2 -2
- camel/datagen/self_instruct/filter/__init__.py +2 -2
- camel/datagen/self_instruct/filter/filter_function.py +2 -2
- camel/datagen/self_instruct/filter/filter_registry.py +2 -2
- camel/datagen/self_instruct/filter/instruction_filter.py +2 -2
- camel/datagen/self_instruct/self_instruct.py +2 -2
- camel/datagen/self_instruct/templates.py +47 -47
- camel/datagen/source2synth/__init__.py +2 -2
- camel/datagen/source2synth/data_processor.py +2 -2
- camel/datagen/source2synth/models.py +2 -2
- camel/datagen/source2synth/user_data_processor_config.py +2 -2
- camel/datahubs/__init__.py +2 -2
- camel/datahubs/base.py +2 -2
- camel/datahubs/huggingface.py +2 -2
- camel/datahubs/models.py +2 -2
- camel/datasets/__init__.py +2 -2
- camel/datasets/base_generator.py +41 -12
- camel/datasets/few_shot_generator.py +18 -18
- camel/datasets/models.py +3 -3
- camel/datasets/self_instruct_generator.py +2 -2
- camel/datasets/static_dataset.py +152 -2
- camel/embeddings/__init__.py +2 -2
- camel/embeddings/azure_embedding.py +2 -2
- camel/embeddings/base.py +2 -2
- camel/embeddings/gemini_embedding.py +2 -2
- camel/embeddings/jina_embedding.py +10 -3
- camel/embeddings/mistral_embedding.py +2 -2
- camel/embeddings/openai_compatible_embedding.py +2 -2
- camel/embeddings/openai_embedding.py +2 -2
- camel/embeddings/sentence_transformers_embeddings.py +4 -4
- camel/embeddings/together_embedding.py +2 -2
- camel/embeddings/vlm_embedding.py +11 -4
- camel/environments/__init__.py +14 -2
- camel/environments/models.py +2 -2
- camel/environments/multi_step.py +2 -2
- camel/environments/rlcards_env.py +860 -0
- camel/environments/single_step.py +30 -5
- camel/environments/tic_tac_toe.py +3 -3
- camel/extractors/__init__.py +2 -2
- camel/extractors/base.py +2 -2
- camel/extractors/python_strategies.py +2 -2
- camel/generators.py +2 -2
- camel/human.py +2 -2
- camel/interpreters/__init__.py +4 -2
- camel/interpreters/base.py +16 -3
- camel/interpreters/docker/Dockerfile +53 -7
- camel/interpreters/docker_interpreter.py +70 -11
- camel/interpreters/e2b_interpreter.py +59 -11
- camel/interpreters/internal_python_interpreter.py +81 -4
- camel/interpreters/interpreter_error.py +2 -2
- camel/interpreters/ipython_interpreter.py +23 -5
- camel/interpreters/microsandbox_interpreter.py +395 -0
- camel/interpreters/subprocess_interpreter.py +36 -4
- camel/loaders/__init__.py +17 -5
- camel/loaders/apify_reader.py +2 -2
- camel/loaders/base_io.py +2 -2
- camel/loaders/base_loader.py +85 -0
- camel/loaders/chunkr_reader.py +128 -93
- camel/loaders/crawl4ai_reader.py +2 -2
- camel/loaders/firecrawl_reader.py +6 -6
- camel/loaders/jina_url_reader.py +2 -2
- camel/loaders/markitdown.py +2 -2
- camel/loaders/mineru_extractor.py +2 -2
- camel/loaders/mistral_reader.py +148 -0
- camel/loaders/scrapegraph_reader.py +2 -2
- camel/loaders/unstructured_io.py +2 -2
- camel/logger.py +5 -5
- camel/memories/__init__.py +2 -2
- camel/memories/agent_memories.py +86 -3
- camel/memories/base.py +36 -2
- camel/memories/blocks/__init__.py +2 -2
- camel/memories/blocks/chat_history_block.py +126 -9
- camel/memories/blocks/vectordb_block.py +10 -3
- camel/memories/context_creators/__init__.py +2 -2
- camel/memories/context_creators/score_based.py +31 -239
- camel/memories/records.py +98 -13
- camel/messages/__init__.py +2 -2
- camel/messages/base.py +193 -46
- camel/messages/conversion/__init__.py +2 -2
- camel/messages/conversion/alpaca.py +2 -2
- camel/messages/conversion/conversation_models.py +2 -2
- camel/messages/conversion/sharegpt/__init__.py +2 -2
- camel/messages/conversion/sharegpt/function_call_formatter.py +2 -2
- camel/messages/conversion/sharegpt/hermes/__init__.py +2 -2
- camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +2 -2
- camel/messages/func_message.py +54 -17
- camel/models/__init__.py +18 -2
- camel/models/_utils.py +3 -3
- camel/models/aihubmix_model.py +83 -0
- camel/models/aiml_model.py +11 -18
- camel/models/amd_model.py +101 -0
- camel/models/anthropic_model.py +127 -20
- camel/models/aws_bedrock_model.py +12 -35
- camel/models/azure_openai_model.py +263 -63
- camel/models/base_audio_model.py +5 -3
- camel/models/base_model.py +195 -26
- camel/models/cerebras_model.py +83 -0
- camel/models/cohere_model.py +81 -21
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +87 -0
- camel/models/deepseek_model.py +61 -59
- camel/models/fish_audio_model.py +8 -2
- camel/models/gemini_model.py +439 -30
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +94 -34
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +84 -19
- camel/models/model_factory.py +49 -6
- camel/models/model_manager.py +33 -11
- camel/models/modelscope_model.py +13 -193
- camel/models/moonshot_model.py +195 -21
- camel/models/nebius_model.py +83 -0
- camel/models/nemotron_model.py +19 -9
- camel/models/netmind_model.py +11 -18
- camel/models/novita_model.py +11 -18
- camel/models/nvidia_model.py +11 -18
- camel/models/ollama_model.py +14 -21
- camel/models/openai_audio_models.py +2 -2
- camel/models/openai_compatible_model.py +234 -27
- camel/models/openai_model.py +255 -39
- camel/models/openrouter_model.py +11 -19
- camel/models/ppio_model.py +11 -18
- camel/models/qianfan_model.py +89 -0
- camel/models/qwen_model.py +13 -193
- camel/models/reka_model.py +90 -21
- camel/models/reward/__init__.py +2 -2
- camel/models/reward/base_reward_model.py +2 -2
- camel/models/reward/evaluator.py +2 -2
- camel/models/reward/nemotron_model.py +2 -2
- camel/models/reward/skywork_model.py +2 -2
- camel/models/samba_model.py +117 -49
- camel/models/sglang_model.py +162 -42
- camel/models/siliconflow_model.py +12 -35
- camel/models/stub_model.py +10 -7
- camel/models/togetherai_model.py +11 -18
- camel/models/vllm_model.py +10 -18
- camel/models/volcano_model.py +16 -20
- camel/models/watsonx_model.py +69 -19
- camel/models/yi_model.py +11 -18
- camel/models/zhipuai_model.py +70 -18
- camel/parsers/__init__.py +18 -0
- camel/parsers/mcp_tool_call_parser.py +176 -0
- camel/personas/__init__.py +2 -2
- camel/personas/persona.py +2 -2
- camel/personas/persona_hub.py +2 -2
- camel/prompts/__init__.py +2 -2
- camel/prompts/ai_society.py +2 -2
- camel/prompts/base.py +2 -2
- camel/prompts/code.py +2 -2
- camel/prompts/evaluation.py +2 -2
- camel/prompts/generate_text_embedding_data.py +2 -2
- camel/prompts/image_craft.py +2 -2
- camel/prompts/misalignment.py +2 -2
- camel/prompts/multi_condition_image_craft.py +2 -2
- camel/prompts/object_recognition.py +2 -2
- camel/prompts/persona_hub.py +3 -3
- camel/prompts/prompt_templates.py +2 -2
- camel/prompts/role_description_prompt_template.py +2 -2
- camel/prompts/solution_extraction.py +8 -8
- camel/prompts/task_prompt_template.py +2 -2
- camel/prompts/translation.py +2 -2
- camel/prompts/video_description_prompt.py +3 -3
- camel/responses/__init__.py +2 -2
- camel/responses/agent_responses.py +2 -2
- camel/retrievers/__init__.py +2 -2
- camel/retrievers/auto_retriever.py +23 -3
- camel/retrievers/base.py +2 -2
- camel/retrievers/bm25_retriever.py +3 -4
- camel/retrievers/cohere_rerank_retriever.py +2 -2
- camel/retrievers/hybrid_retrival.py +4 -4
- camel/retrievers/vector_retriever.py +2 -2
- camel/runtimes/Dockerfile.multi-toolkit +90 -0
- camel/{runtime → runtimes}/__init__.py +2 -2
- camel/runtimes/api.py +153 -0
- camel/{runtime → runtimes}/base.py +2 -2
- camel/{runtime → runtimes}/configs.py +13 -13
- camel/{runtime → runtimes}/daytona_runtime.py +18 -19
- camel/{runtime → runtimes}/docker_runtime.py +13 -13
- camel/{runtime → runtimes}/llm_guard_runtime.py +28 -28
- camel/{runtime → runtimes}/remote_http_runtime.py +12 -12
- camel/{runtime → runtimes}/ubuntu_docker_runtime.py +3 -3
- camel/{runtime → runtimes}/utils/__init__.py +2 -2
- camel/{runtime → runtimes}/utils/function_risk_toolkit.py +2 -2
- camel/{runtime → runtimes}/utils/ignore_risk_toolkit.py +2 -2
- camel/schemas/__init__.py +2 -2
- camel/schemas/base.py +2 -2
- camel/schemas/openai_converter.py +3 -3
- camel/schemas/outlines_converter.py +2 -2
- camel/services/agent_openapi_server.py +380 -0
- camel/societies/__init__.py +4 -2
- camel/societies/babyagi_playing.py +2 -2
- camel/societies/role_playing.py +201 -80
- camel/societies/workforce/__init__.py +10 -3
- camel/societies/workforce/base.py +9 -5
- camel/societies/workforce/events.py +143 -0
- camel/societies/workforce/prompts.py +258 -33
- camel/societies/workforce/role_playing_worker.py +95 -30
- camel/societies/workforce/single_agent_worker.py +659 -30
- camel/societies/workforce/structured_output_handler.py +512 -0
- camel/societies/workforce/task_channel.py +182 -38
- camel/societies/workforce/utils.py +784 -18
- camel/societies/workforce/worker.py +96 -28
- camel/societies/workforce/workflow_memory_manager.py +1746 -0
- camel/societies/workforce/workforce.py +5730 -366
- camel/societies/workforce/workforce_callback.py +103 -0
- camel/societies/workforce/workforce_logger.py +647 -0
- camel/societies/workforce/workforce_metrics.py +33 -0
- camel/storages/__init__.py +10 -2
- camel/storages/graph_storages/__init__.py +2 -2
- camel/storages/graph_storages/base.py +2 -2
- camel/storages/graph_storages/graph_element.py +2 -2
- camel/storages/graph_storages/nebula_graph.py +4 -4
- camel/storages/graph_storages/neo4j_graph.py +7 -7
- camel/storages/key_value_storages/__init__.py +2 -2
- camel/storages/key_value_storages/base.py +2 -2
- camel/storages/key_value_storages/in_memory.py +2 -2
- camel/storages/key_value_storages/json.py +17 -4
- camel/storages/key_value_storages/mem0_cloud.py +50 -49
- camel/storages/key_value_storages/redis.py +2 -2
- camel/storages/object_storages/__init__.py +2 -2
- camel/storages/object_storages/amazon_s3.py +2 -2
- camel/storages/object_storages/azure_blob.py +2 -2
- camel/storages/object_storages/base.py +2 -2
- camel/storages/object_storages/google_cloud.py +3 -3
- camel/storages/vectordb_storages/__init__.py +12 -2
- camel/storages/vectordb_storages/base.py +2 -2
- camel/storages/vectordb_storages/chroma.py +731 -0
- camel/storages/vectordb_storages/faiss.py +712 -0
- camel/storages/vectordb_storages/milvus.py +2 -2
- camel/storages/vectordb_storages/oceanbase.py +16 -17
- camel/storages/vectordb_storages/pgvector.py +349 -0
- camel/storages/vectordb_storages/qdrant.py +6 -6
- camel/storages/vectordb_storages/surreal.py +372 -0
- camel/storages/vectordb_storages/tidb.py +11 -8
- camel/storages/vectordb_storages/weaviate.py +714 -0
- camel/tasks/__init__.py +2 -2
- camel/tasks/task.py +366 -27
- camel/tasks/task_prompt.py +3 -3
- camel/terminators/__init__.py +2 -2
- camel/terminators/base.py +2 -2
- camel/terminators/response_terminator.py +2 -2
- camel/terminators/token_limit_terminator.py +2 -2
- camel/toolkits/__init__.py +58 -10
- camel/toolkits/aci_toolkit.py +66 -21
- camel/toolkits/arxiv_toolkit.py +8 -8
- camel/toolkits/ask_news_toolkit.py +2 -2
- camel/toolkits/async_browser_toolkit.py +174 -575
- camel/toolkits/audio_analysis_toolkit.py +3 -3
- camel/toolkits/base.py +65 -7
- camel/toolkits/bohrium_toolkit.py +318 -0
- camel/toolkits/browser_toolkit.py +306 -566
- camel/toolkits/browser_toolkit_commons.py +568 -0
- camel/toolkits/code_execution.py +67 -11
- camel/toolkits/context_summarizer_toolkit.py +684 -0
- camel/toolkits/craw4ai_toolkit.py +93 -0
- camel/toolkits/dappier_toolkit.py +12 -8
- camel/toolkits/data_commons_toolkit.py +2 -2
- camel/toolkits/dingtalk.py +1135 -0
- camel/toolkits/earth_science_toolkit.py +5367 -0
- camel/toolkits/edgeone_pages_mcp_toolkit.py +49 -0
- camel/toolkits/excel_toolkit.py +910 -70
- camel/toolkits/file_toolkit.py +1402 -0
- camel/toolkits/function_tool.py +128 -20
- camel/toolkits/github_toolkit.py +148 -43
- camel/toolkits/gmail_toolkit.py +1839 -0
- camel/toolkits/google_calendar_toolkit.py +40 -6
- camel/toolkits/google_drive_mcp_toolkit.py +54 -0
- camel/toolkits/google_maps_toolkit.py +2 -2
- camel/toolkits/google_scholar_toolkit.py +2 -2
- camel/toolkits/human_toolkit.py +36 -12
- camel/toolkits/hybrid_browser_toolkit/__init__.py +18 -0
- camel/toolkits/hybrid_browser_toolkit/config_loader.py +185 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +246 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1973 -0
- camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +4589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package.json +33 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +125 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +1929 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +233 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +7 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +129 -0
- camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +27 -0
- camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +319 -0
- camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +1037 -0
- camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
- camel/toolkits/hybrid_browser_toolkit_py/actions.py +575 -0
- camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
- camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +787 -0
- camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +490 -0
- camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2390 -0
- camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +233 -0
- camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1043 -0
- camel/toolkits/image_analysis_toolkit.py +3 -3
- camel/toolkits/image_generation_toolkit.py +390 -0
- camel/toolkits/jina_reranker_toolkit.py +195 -79
- camel/toolkits/klavis_toolkit.py +7 -3
- camel/toolkits/linkedin_toolkit.py +2 -2
- camel/toolkits/markitdown_toolkit.py +104 -0
- camel/toolkits/math_toolkit.py +66 -12
- camel/toolkits/mcp_toolkit.py +841 -600
- camel/toolkits/memory_toolkit.py +7 -3
- camel/toolkits/meshy_toolkit.py +2 -2
- camel/toolkits/message_agent_toolkit.py +608 -0
- camel/toolkits/message_integration.py +724 -0
- camel/toolkits/mineru_toolkit.py +2 -2
- camel/toolkits/minimax_mcp_toolkit.py +195 -0
- camel/toolkits/networkx_toolkit.py +2 -2
- camel/toolkits/note_taking_toolkit.py +277 -0
- camel/toolkits/notion_mcp_toolkit.py +224 -0
- camel/toolkits/notion_toolkit.py +2 -2
- camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
- camel/toolkits/open_api_specs/biztoc/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/coursera/__init__.py +2 -2
- camel/toolkits/open_api_specs/create_qr_code/__init__.py +2 -2
- camel/toolkits/open_api_specs/klarna/__init__.py +2 -2
- camel/toolkits/open_api_specs/nasa_apod/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/outschool/openapi.yaml +1 -1
- camel/toolkits/open_api_specs/outschool/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/get_classes.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +2 -2
- camel/toolkits/open_api_specs/security_config.py +2 -2
- camel/toolkits/open_api_specs/speak/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +2 -2
- camel/toolkits/open_api_toolkit.py +2 -2
- camel/toolkits/openbb_toolkit.py +7 -3
- camel/toolkits/origene_mcp_toolkit.py +56 -0
- camel/toolkits/page_script.js +86 -74
- camel/toolkits/playwright_mcp_toolkit.py +27 -32
- camel/toolkits/pptx_toolkit.py +790 -0
- camel/toolkits/pubmed_toolkit.py +2 -2
- camel/toolkits/pulse_mcp_search_toolkit.py +2 -2
- camel/toolkits/pyautogui_toolkit.py +2 -2
- camel/toolkits/reddit_toolkit.py +2 -2
- camel/toolkits/resend_toolkit.py +168 -0
- camel/toolkits/retrieval_toolkit.py +2 -2
- camel/toolkits/screenshot_toolkit.py +213 -0
- camel/toolkits/search_toolkit.py +539 -146
- camel/toolkits/searxng_toolkit.py +2 -2
- camel/toolkits/semantic_scholar_toolkit.py +2 -2
- camel/toolkits/slack_toolkit.py +108 -58
- camel/toolkits/sql_toolkit.py +712 -0
- camel/toolkits/stripe_toolkit.py +2 -2
- camel/toolkits/sympy_toolkit.py +3 -3
- camel/toolkits/task_planning_toolkit.py +134 -0
- camel/toolkits/terminal_toolkit/__init__.py +18 -0
- camel/toolkits/terminal_toolkit/terminal_toolkit.py +1070 -0
- camel/toolkits/terminal_toolkit/utils.py +532 -0
- camel/toolkits/thinking_toolkit.py +3 -3
- camel/toolkits/twitter_toolkit.py +8 -3
- camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
- camel/toolkits/video_analysis_toolkit.py +112 -29
- camel/toolkits/video_download_toolkit.py +22 -16
- camel/toolkits/weather_toolkit.py +2 -2
- camel/toolkits/web_deploy_toolkit.py +1219 -0
- camel/toolkits/wechat_official_toolkit.py +483 -0
- camel/toolkits/whatsapp_toolkit.py +2 -2
- camel/toolkits/wolfram_alpha_toolkit.py +53 -25
- camel/toolkits/zapier_toolkit.py +7 -3
- camel/types/__init__.py +4 -4
- camel/types/agents/__init__.py +2 -2
- camel/types/agents/tool_calling_record.py +6 -3
- camel/types/enums.py +454 -35
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +43 -6
- camel/utils/__init__.py +20 -2
- camel/utils/async_func.py +2 -2
- camel/utils/chunker/__init__.py +2 -2
- camel/utils/chunker/base.py +2 -2
- camel/utils/chunker/code_chunker.py +2 -2
- camel/utils/chunker/uio_chunker.py +2 -2
- camel/utils/commons.py +65 -7
- camel/utils/constants.py +5 -2
- camel/utils/context_utils.py +1134 -0
- camel/utils/deduplication.py +2 -2
- camel/utils/filename.py +2 -2
- camel/utils/langfuse.py +258 -0
- camel/utils/mcp.py +140 -6
- camel/utils/mcp_client.py +1056 -0
- camel/utils/message_summarizer.py +148 -0
- camel/utils/response_format.py +2 -2
- camel/utils/token_counting.py +45 -22
- camel/utils/tool_result.py +44 -0
- camel/verifiers/__init__.py +2 -2
- camel/verifiers/base.py +2 -2
- camel/verifiers/math_verifier.py +2 -2
- camel/verifiers/models.py +2 -2
- camel/verifiers/physics_verifier.py +2 -2
- camel/verifiers/python_verifier.py +2 -2
- {camel_ai-0.2.59.dist-info → camel_ai-0.2.82.dist-info}/METADATA +349 -108
- camel_ai-0.2.82.dist-info/RECORD +507 -0
- {camel_ai-0.2.59.dist-info → camel_ai-0.2.82.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.59.dist-info → camel_ai-0.2.82.dist-info}/licenses/LICENSE +1 -1
- camel/loaders/pandas_reader.py +0 -368
- camel/runtime/api.py +0 -97
- camel/toolkits/dalle_toolkit.py +0 -171
- camel/toolkits/file_write_toolkit.py +0 -395
- camel/toolkits/openai_agent_toolkit.py +0 -135
- camel/toolkits/terminal_toolkit.py +0 -1037
- camel_ai-0.2.59.dist-info/RECORD +0 -410
camel/models/qwen_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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,22 +10,14 @@
|
|
|
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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
import os
|
|
16
|
-
import
|
|
17
|
-
from typing import Any, Dict, List, Optional, Union
|
|
16
|
+
from typing import Any, Dict, Optional, Union
|
|
18
17
|
|
|
19
|
-
from
|
|
20
|
-
|
|
21
|
-
from camel.configs import QWEN_API_PARAMS, QwenConfig
|
|
22
|
-
from camel.messages import OpenAIMessage
|
|
18
|
+
from camel.configs import QwenConfig
|
|
23
19
|
from camel.models.openai_compatible_model import OpenAICompatibleModel
|
|
24
|
-
from camel.types import
|
|
25
|
-
ChatCompletion,
|
|
26
|
-
ChatCompletionChunk,
|
|
27
|
-
ModelType,
|
|
28
|
-
)
|
|
20
|
+
from camel.types import ModelType
|
|
29
21
|
from camel.utils import (
|
|
30
22
|
BaseTokenCounter,
|
|
31
23
|
api_keys_required,
|
|
@@ -54,6 +46,10 @@ class QwenModel(OpenAICompatibleModel):
|
|
|
54
46
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
55
47
|
environment variable or default to 180 seconds.
|
|
56
48
|
(default: :obj:`None`)
|
|
49
|
+
max_retries (int, optional): Maximum number of retries for API calls.
|
|
50
|
+
(default: :obj:`3`)
|
|
51
|
+
**kwargs (Any): Additional arguments to pass to the client
|
|
52
|
+
initialization.
|
|
57
53
|
"""
|
|
58
54
|
|
|
59
55
|
@api_keys_required(
|
|
@@ -69,6 +65,8 @@ class QwenModel(OpenAICompatibleModel):
|
|
|
69
65
|
url: Optional[str] = None,
|
|
70
66
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
71
67
|
timeout: Optional[float] = None,
|
|
68
|
+
max_retries: int = 3,
|
|
69
|
+
**kwargs: Any,
|
|
72
70
|
) -> None:
|
|
73
71
|
if model_config_dict is None:
|
|
74
72
|
model_config_dict = QwenConfig().as_dict()
|
|
@@ -85,184 +83,6 @@ class QwenModel(OpenAICompatibleModel):
|
|
|
85
83
|
url=url,
|
|
86
84
|
token_counter=token_counter,
|
|
87
85
|
timeout=timeout,
|
|
86
|
+
max_retries=max_retries,
|
|
87
|
+
**kwargs,
|
|
88
88
|
)
|
|
89
|
-
|
|
90
|
-
def _post_handle_response(
|
|
91
|
-
self, response: Union[ChatCompletion, Stream[ChatCompletionChunk]]
|
|
92
|
-
) -> ChatCompletion:
|
|
93
|
-
r"""Handle reasoning content with <think> tags at the beginning."""
|
|
94
|
-
if not isinstance(response, Stream):
|
|
95
|
-
# Handle non-streaming response (existing logic)
|
|
96
|
-
if self.model_config_dict.get("extra_body", {}).get(
|
|
97
|
-
"enable_thinking", False
|
|
98
|
-
):
|
|
99
|
-
reasoning_content = response.choices[
|
|
100
|
-
0
|
|
101
|
-
].message.reasoning_content # type: ignore[attr-defined]
|
|
102
|
-
combined_content = (
|
|
103
|
-
f"<think>\n{reasoning_content}\n</think>\n"
|
|
104
|
-
if reasoning_content
|
|
105
|
-
else ""
|
|
106
|
-
)
|
|
107
|
-
response_content = response.choices[0].message.content or ""
|
|
108
|
-
combined_content += response_content
|
|
109
|
-
|
|
110
|
-
# Construct a new ChatCompletion with combined content
|
|
111
|
-
return ChatCompletion.construct(
|
|
112
|
-
id=response.id,
|
|
113
|
-
choices=[
|
|
114
|
-
dict(
|
|
115
|
-
finish_reason=response.choices[0].finish_reason,
|
|
116
|
-
index=response.choices[0].index,
|
|
117
|
-
logprobs=response.choices[0].logprobs,
|
|
118
|
-
message=dict(
|
|
119
|
-
role=response.choices[0].message.role,
|
|
120
|
-
content=combined_content,
|
|
121
|
-
),
|
|
122
|
-
)
|
|
123
|
-
],
|
|
124
|
-
created=response.created,
|
|
125
|
-
model=response.model,
|
|
126
|
-
object="chat.completion",
|
|
127
|
-
system_fingerprint=response.system_fingerprint,
|
|
128
|
-
usage=response.usage,
|
|
129
|
-
)
|
|
130
|
-
else:
|
|
131
|
-
return response # Return original if no thinking enabled
|
|
132
|
-
|
|
133
|
-
# Handle streaming response
|
|
134
|
-
accumulated_reasoning = ""
|
|
135
|
-
accumulated_content = ""
|
|
136
|
-
final_chunk = None
|
|
137
|
-
usage_data = None # Initialize usage data
|
|
138
|
-
role = "assistant" # Default role
|
|
139
|
-
|
|
140
|
-
for chunk in response:
|
|
141
|
-
final_chunk = chunk # Keep track of the last chunk for metadata
|
|
142
|
-
if chunk.choices:
|
|
143
|
-
delta = chunk.choices[0].delta
|
|
144
|
-
if delta.role:
|
|
145
|
-
role = delta.role # Update role if provided
|
|
146
|
-
if (
|
|
147
|
-
hasattr(delta, 'reasoning_content')
|
|
148
|
-
and delta.reasoning_content
|
|
149
|
-
):
|
|
150
|
-
accumulated_reasoning += delta.reasoning_content
|
|
151
|
-
if delta.content:
|
|
152
|
-
accumulated_content += delta.content
|
|
153
|
-
|
|
154
|
-
if hasattr(chunk, 'usage') and chunk.usage:
|
|
155
|
-
usage_data = chunk.usage
|
|
156
|
-
|
|
157
|
-
combined_content = (
|
|
158
|
-
f"<think>\n{accumulated_reasoning}\n</think>\n"
|
|
159
|
-
if accumulated_reasoning
|
|
160
|
-
else ""
|
|
161
|
-
) + accumulated_content
|
|
162
|
-
|
|
163
|
-
# Construct the final ChatCompletion object from accumulated
|
|
164
|
-
# stream data
|
|
165
|
-
if final_chunk:
|
|
166
|
-
finish_reason = "stop" # Default finish reason
|
|
167
|
-
logprobs = None
|
|
168
|
-
if final_chunk.choices:
|
|
169
|
-
finish_reason = (
|
|
170
|
-
final_chunk.choices[0].finish_reason or finish_reason
|
|
171
|
-
)
|
|
172
|
-
if hasattr(final_chunk.choices[0], 'logprobs'):
|
|
173
|
-
logprobs = final_chunk.choices[0].logprobs
|
|
174
|
-
|
|
175
|
-
return ChatCompletion.construct(
|
|
176
|
-
# Use data from the final chunk or defaults
|
|
177
|
-
id=final_chunk.id
|
|
178
|
-
if hasattr(final_chunk, 'id')
|
|
179
|
-
else "streamed-completion",
|
|
180
|
-
choices=[
|
|
181
|
-
dict(
|
|
182
|
-
finish_reason=finish_reason,
|
|
183
|
-
index=0,
|
|
184
|
-
logprobs=logprobs,
|
|
185
|
-
message=dict(
|
|
186
|
-
role=role,
|
|
187
|
-
content=combined_content,
|
|
188
|
-
),
|
|
189
|
-
)
|
|
190
|
-
],
|
|
191
|
-
created=final_chunk.created
|
|
192
|
-
if hasattr(final_chunk, 'created')
|
|
193
|
-
else int(time.time()),
|
|
194
|
-
model=final_chunk.model
|
|
195
|
-
if hasattr(final_chunk, 'model')
|
|
196
|
-
else self.model_type,
|
|
197
|
-
object="chat.completion",
|
|
198
|
-
system_fingerprint=final_chunk.system_fingerprint
|
|
199
|
-
if hasattr(final_chunk, 'system_fingerprint')
|
|
200
|
-
else None,
|
|
201
|
-
usage=usage_data,
|
|
202
|
-
)
|
|
203
|
-
else:
|
|
204
|
-
# Handle cases where the stream was empty or invalid
|
|
205
|
-
return ChatCompletion.construct(
|
|
206
|
-
id="empty-stream",
|
|
207
|
-
choices=[
|
|
208
|
-
dict(
|
|
209
|
-
finish_reason="error",
|
|
210
|
-
index=0,
|
|
211
|
-
message=dict(role="assistant", content=""),
|
|
212
|
-
)
|
|
213
|
-
],
|
|
214
|
-
created=int(time.time()),
|
|
215
|
-
model=self.model_type,
|
|
216
|
-
object="chat.completion",
|
|
217
|
-
usage=usage_data,
|
|
218
|
-
)
|
|
219
|
-
|
|
220
|
-
def _request_chat_completion(
|
|
221
|
-
self,
|
|
222
|
-
messages: List[OpenAIMessage],
|
|
223
|
-
tools: Optional[List[Dict[str, Any]]] = None,
|
|
224
|
-
) -> Union[ChatCompletion, Stream[ChatCompletionChunk]]:
|
|
225
|
-
request_config = self.model_config_dict.copy()
|
|
226
|
-
|
|
227
|
-
if tools:
|
|
228
|
-
request_config["tools"] = tools
|
|
229
|
-
|
|
230
|
-
return self._post_handle_response(
|
|
231
|
-
self._client.chat.completions.create(
|
|
232
|
-
messages=messages,
|
|
233
|
-
model=self.model_type,
|
|
234
|
-
**request_config,
|
|
235
|
-
)
|
|
236
|
-
)
|
|
237
|
-
|
|
238
|
-
async def _arequest_chat_completion(
|
|
239
|
-
self,
|
|
240
|
-
messages: List[OpenAIMessage],
|
|
241
|
-
tools: Optional[List[Dict[str, Any]]] = None,
|
|
242
|
-
) -> Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
|
|
243
|
-
request_config = self.model_config_dict.copy()
|
|
244
|
-
|
|
245
|
-
if tools:
|
|
246
|
-
request_config["tools"] = tools
|
|
247
|
-
|
|
248
|
-
response = await self._async_client.chat.completions.create(
|
|
249
|
-
messages=messages,
|
|
250
|
-
model=self.model_type,
|
|
251
|
-
**request_config,
|
|
252
|
-
)
|
|
253
|
-
return self._post_handle_response(response)
|
|
254
|
-
|
|
255
|
-
def check_model_config(self):
|
|
256
|
-
r"""Check whether the model configuration contains any
|
|
257
|
-
unexpected arguments to Qwen API.
|
|
258
|
-
|
|
259
|
-
Raises:
|
|
260
|
-
ValueError: If the model configuration dictionary contains any
|
|
261
|
-
unexpected arguments to Qwen API.
|
|
262
|
-
"""
|
|
263
|
-
for param in self.model_config_dict:
|
|
264
|
-
if param not in QWEN_API_PARAMS:
|
|
265
|
-
raise ValueError(
|
|
266
|
-
f"Unexpected argument `{param}` is "
|
|
267
|
-
"input into Qwen model backend."
|
|
268
|
-
)
|
camel/models/reka_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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,12 +10,13 @@
|
|
|
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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
|
+
import os
|
|
14
15
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, Union
|
|
15
16
|
|
|
16
17
|
from pydantic import BaseModel
|
|
17
18
|
|
|
18
|
-
from camel.configs import
|
|
19
|
+
from camel.configs import RekaConfig
|
|
19
20
|
from camel.messages import OpenAIMessage
|
|
20
21
|
from camel.models import BaseModelBackend
|
|
21
22
|
from camel.types import ChatCompletion, ModelType
|
|
@@ -24,8 +25,19 @@ from camel.utils import (
|
|
|
24
25
|
OpenAITokenCounter,
|
|
25
26
|
api_keys_required,
|
|
26
27
|
dependencies_required,
|
|
28
|
+
get_current_agent_session_id,
|
|
29
|
+
update_current_observation,
|
|
30
|
+
update_langfuse_trace,
|
|
27
31
|
)
|
|
28
32
|
|
|
33
|
+
if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
|
|
34
|
+
try:
|
|
35
|
+
from langfuse.decorators import observe
|
|
36
|
+
except ImportError:
|
|
37
|
+
from camel.utils import observe
|
|
38
|
+
else:
|
|
39
|
+
from camel.utils import observe
|
|
40
|
+
|
|
29
41
|
if TYPE_CHECKING:
|
|
30
42
|
from reka.types import ChatMessage, ChatResponse
|
|
31
43
|
|
|
@@ -60,6 +72,8 @@ class RekaModel(BaseModelBackend):
|
|
|
60
72
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
61
73
|
environment variable or default to 180 seconds.
|
|
62
74
|
(default: :obj:`None`)
|
|
75
|
+
**kwargs (Any): Additional arguments to pass to the client
|
|
76
|
+
initialization.
|
|
63
77
|
"""
|
|
64
78
|
|
|
65
79
|
@api_keys_required(
|
|
@@ -76,6 +90,7 @@ class RekaModel(BaseModelBackend):
|
|
|
76
90
|
url: Optional[str] = None,
|
|
77
91
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
78
92
|
timeout: Optional[float] = None,
|
|
93
|
+
**kwargs: Any,
|
|
79
94
|
) -> None:
|
|
80
95
|
from reka.client import AsyncReka, Reka
|
|
81
96
|
|
|
@@ -85,13 +100,25 @@ class RekaModel(BaseModelBackend):
|
|
|
85
100
|
url = url or os.environ.get("REKA_API_BASE_URL")
|
|
86
101
|
timeout = timeout or float(os.environ.get("MODEL_TIMEOUT", 180))
|
|
87
102
|
super().__init__(
|
|
88
|
-
model_type,
|
|
103
|
+
model_type,
|
|
104
|
+
model_config_dict,
|
|
105
|
+
api_key,
|
|
106
|
+
url,
|
|
107
|
+
token_counter,
|
|
108
|
+
timeout,
|
|
109
|
+
**kwargs,
|
|
89
110
|
)
|
|
90
111
|
self._client = Reka(
|
|
91
|
-
api_key=self._api_key,
|
|
112
|
+
api_key=self._api_key,
|
|
113
|
+
base_url=self._url,
|
|
114
|
+
timeout=self._timeout,
|
|
115
|
+
**kwargs,
|
|
92
116
|
)
|
|
93
117
|
self._async_client = AsyncReka(
|
|
94
|
-
api_key=self._api_key,
|
|
118
|
+
api_key=self._api_key,
|
|
119
|
+
base_url=self._url,
|
|
120
|
+
timeout=self._timeout,
|
|
121
|
+
**kwargs,
|
|
95
122
|
)
|
|
96
123
|
|
|
97
124
|
def _convert_reka_to_openai_response(
|
|
@@ -188,6 +215,7 @@ class RekaModel(BaseModelBackend):
|
|
|
188
215
|
)
|
|
189
216
|
return self._token_counter
|
|
190
217
|
|
|
218
|
+
@observe(as_type="generation")
|
|
191
219
|
async def _arun(
|
|
192
220
|
self,
|
|
193
221
|
messages: List[OpenAIMessage],
|
|
@@ -203,6 +231,29 @@ class RekaModel(BaseModelBackend):
|
|
|
203
231
|
Returns:
|
|
204
232
|
ChatCompletion.
|
|
205
233
|
"""
|
|
234
|
+
|
|
235
|
+
update_current_observation(
|
|
236
|
+
input={
|
|
237
|
+
"messages": messages,
|
|
238
|
+
"tools": tools,
|
|
239
|
+
},
|
|
240
|
+
model=str(self.model_type),
|
|
241
|
+
model_parameters=self.model_config_dict,
|
|
242
|
+
)
|
|
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
|
+
)
|
|
256
|
+
|
|
206
257
|
reka_messages = self._convert_openai_to_reka_messages(messages)
|
|
207
258
|
|
|
208
259
|
response = await self._async_client.chat.create(
|
|
@@ -213,6 +264,10 @@ class RekaModel(BaseModelBackend):
|
|
|
213
264
|
|
|
214
265
|
openai_response = self._convert_reka_to_openai_response(response)
|
|
215
266
|
|
|
267
|
+
update_current_observation(
|
|
268
|
+
usage=openai_response.usage,
|
|
269
|
+
)
|
|
270
|
+
|
|
216
271
|
# Add AgentOps LLM Event tracking
|
|
217
272
|
if LLMEvent:
|
|
218
273
|
llm_event = LLMEvent(
|
|
@@ -229,6 +284,7 @@ class RekaModel(BaseModelBackend):
|
|
|
229
284
|
|
|
230
285
|
return openai_response
|
|
231
286
|
|
|
287
|
+
@observe(as_type="generation")
|
|
232
288
|
def _run(
|
|
233
289
|
self,
|
|
234
290
|
messages: List[OpenAIMessage],
|
|
@@ -244,6 +300,30 @@ class RekaModel(BaseModelBackend):
|
|
|
244
300
|
Returns:
|
|
245
301
|
ChatCompletion.
|
|
246
302
|
"""
|
|
303
|
+
|
|
304
|
+
update_current_observation(
|
|
305
|
+
input={
|
|
306
|
+
"messages": messages,
|
|
307
|
+
"tools": tools,
|
|
308
|
+
},
|
|
309
|
+
model=str(self.model_type),
|
|
310
|
+
model_parameters=self.model_config_dict,
|
|
311
|
+
)
|
|
312
|
+
|
|
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
|
+
)
|
|
326
|
+
|
|
247
327
|
reka_messages = self._convert_openai_to_reka_messages(messages)
|
|
248
328
|
|
|
249
329
|
response = self._client.chat.create(
|
|
@@ -254,6 +334,10 @@ class RekaModel(BaseModelBackend):
|
|
|
254
334
|
|
|
255
335
|
openai_response = self._convert_reka_to_openai_response(response)
|
|
256
336
|
|
|
337
|
+
update_current_observation(
|
|
338
|
+
usage=openai_response.usage,
|
|
339
|
+
)
|
|
340
|
+
|
|
257
341
|
# Add AgentOps LLM Event tracking
|
|
258
342
|
if LLMEvent:
|
|
259
343
|
llm_event = LLMEvent(
|
|
@@ -270,21 +354,6 @@ class RekaModel(BaseModelBackend):
|
|
|
270
354
|
|
|
271
355
|
return openai_response
|
|
272
356
|
|
|
273
|
-
def check_model_config(self):
|
|
274
|
-
r"""Check whether the model configuration contains any
|
|
275
|
-
unexpected arguments to Reka API.
|
|
276
|
-
|
|
277
|
-
Raises:
|
|
278
|
-
ValueError: If the model configuration dictionary contains any
|
|
279
|
-
unexpected arguments to Reka API.
|
|
280
|
-
"""
|
|
281
|
-
for param in self.model_config_dict:
|
|
282
|
-
if param not in REKA_API_PARAMS:
|
|
283
|
-
raise ValueError(
|
|
284
|
-
f"Unexpected argument `{param}` is "
|
|
285
|
-
"input into Reka model backend."
|
|
286
|
-
)
|
|
287
|
-
|
|
288
357
|
@property
|
|
289
358
|
def stream(self) -> bool:
|
|
290
359
|
r"""Returns whether the model is in stream mode, which sends partial
|
camel/models/reward/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
from abc import ABC, abstractmethod
|
|
15
15
|
from typing import Dict, List, Optional, Union
|
|
16
16
|
|
camel/models/reward/evaluator.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
1
|
+
# ========= Copyright 2023-2025 @ 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-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
from typing import Dict, List, Optional, Union
|
|
15
15
|
|
|
16
16
|
import torch
|