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.
- camel/__init__.py +3 -3
- camel/agents/__init__.py +2 -2
- camel/agents/_types.py +2 -2
- camel/agents/_utils.py +2 -2
- camel/agents/base.py +2 -2
- camel/agents/chat_agent.py +765 -541
- camel/agents/critic_agent.py +2 -2
- camel/agents/deductive_reasoner_agent.py +2 -2
- camel/agents/embodied_agent.py +2 -2
- camel/agents/knowledge_graph_agent.py +2 -2
- camel/agents/mcp_agent.py +2 -2
- camel/agents/multi_hop_generator_agent.py +2 -2
- camel/agents/programmed_agent_instruction.py +2 -2
- camel/agents/repo_agent.py +2 -2
- 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 +2 -2
- camel/benchmarks/__init__.py +2 -2
- camel/benchmarks/apibank.py +2 -2
- camel/benchmarks/apibench.py +2 -2
- camel/benchmarks/base.py +2 -2
- camel/benchmarks/browsecomp.py +2 -2
- camel/benchmarks/gaia.py +2 -2
- camel/benchmarks/mock_website/mock_web.py +2 -2
- camel/benchmarks/mock_website/shopping_mall/app.py +2 -2
- camel/benchmarks/nexus.py +2 -2
- 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 +2 -2
- camel/bots/slack/__init__.py +2 -2
- camel/bots/slack/models.py +2 -2
- camel/bots/slack/slack_app.py +2 -2
- camel/bots/telegram_bot.py +2 -2
- camel/configs/__init__.py +8 -2
- camel/configs/aihubmix_config.py +2 -2
- camel/configs/aiml_config.py +2 -2
- camel/configs/amd_config.py +2 -2
- camel/configs/anthropic_config.py +2 -2
- camel/configs/base_config.py +2 -2
- camel/configs/bedrock_config.py +2 -2
- camel/configs/cerebras_config.py +2 -2
- camel/configs/cohere_config.py +2 -2
- camel/configs/cometapi_config.py +2 -2
- camel/configs/crynux_config.py +2 -2
- camel/configs/deepseek_config.py +2 -2
- camel/configs/function_gemma_config.py +59 -0
- camel/configs/gemini_config.py +2 -2
- camel/configs/groq_config.py +2 -2
- camel/configs/internlm_config.py +2 -2
- camel/configs/litellm_config.py +2 -2
- camel/configs/lmstudio_config.py +2 -2
- camel/configs/minimax_config.py +2 -2
- camel/configs/mistral_config.py +2 -2
- camel/configs/modelscope_config.py +2 -2
- camel/configs/moonshot_config.py +2 -2
- camel/configs/nebius_config.py +2 -2
- 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 +2 -2
- camel/configs/openrouter_config.py +2 -2
- camel/configs/ppio_config.py +2 -2
- camel/configs/qianfan_config.py +2 -2
- camel/configs/qwen_config.py +2 -2
- camel/configs/reka_config.py +2 -2
- camel/configs/samba_config.py +2 -2
- 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 +2 -2
- camel/configs/watsonx_config.py +2 -2
- camel/configs/yi_config.py +2 -2
- camel/configs/zhipuai_config.py +2 -2
- camel/data_collectors/__init__.py +2 -2
- camel/data_collectors/alpaca_collector.py +2 -2
- camel/data_collectors/base.py +2 -2
- camel/data_collectors/sharegpt_collector.py +2 -2
- camel/datagen/__init__.py +2 -2
- camel/datagen/cot_datagen.py +2 -2
- camel/datagen/evol_instruct/__init__.py +2 -2
- camel/datagen/evol_instruct/evol_instruct.py +2 -2
- camel/datagen/evol_instruct/scorer.py +2 -2
- camel/datagen/evol_instruct/templates.py +2 -2
- camel/datagen/self_improving_cot.py +2 -2
- 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 +2 -2
- 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 +2 -2
- camel/datasets/few_shot_generator.py +2 -2
- camel/datasets/models.py +2 -2
- camel/datasets/self_instruct_generator.py +2 -2
- camel/datasets/static_dataset.py +2 -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 +2 -2
- 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 +2 -2
- camel/embeddings/together_embedding.py +2 -2
- camel/embeddings/vlm_embedding.py +2 -2
- camel/environments/__init__.py +2 -2
- camel/environments/models.py +2 -2
- camel/environments/multi_step.py +2 -2
- camel/environments/rlcards_env.py +2 -2
- camel/environments/single_step.py +2 -2
- camel/environments/tic_tac_toe.py +2 -2
- 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 +2 -2
- camel/interpreters/base.py +2 -2
- camel/interpreters/docker_interpreter.py +2 -2
- camel/interpreters/e2b_interpreter.py +2 -2
- camel/interpreters/internal_python_interpreter.py +2 -2
- camel/interpreters/interpreter_error.py +2 -2
- camel/interpreters/ipython_interpreter.py +2 -2
- camel/interpreters/microsandbox_interpreter.py +2 -2
- camel/interpreters/subprocess_interpreter.py +2 -2
- camel/loaders/__init__.py +2 -2
- camel/loaders/apify_reader.py +2 -2
- camel/loaders/base_io.py +2 -2
- camel/loaders/base_loader.py +2 -2
- camel/loaders/chunkr_reader.py +2 -2
- camel/loaders/crawl4ai_reader.py +2 -2
- camel/loaders/firecrawl_reader.py +2 -2
- 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 +2 -2
- camel/loaders/scrapegraph_reader.py +2 -2
- camel/loaders/unstructured_io.py +2 -2
- camel/logger.py +2 -2
- camel/memories/__init__.py +2 -2
- camel/memories/agent_memories.py +2 -2
- camel/memories/base.py +2 -2
- camel/memories/blocks/__init__.py +2 -2
- camel/memories/blocks/chat_history_block.py +2 -2
- camel/memories/blocks/vectordb_block.py +2 -2
- camel/memories/context_creators/__init__.py +2 -2
- camel/memories/context_creators/score_based.py +89 -2
- camel/memories/records.py +2 -2
- camel/messages/__init__.py +2 -2
- camel/messages/base.py +2 -2
- 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 +2 -2
- camel/models/__init__.py +4 -2
- camel/models/_utils.py +2 -2
- camel/models/aihubmix_model.py +2 -2
- camel/models/aiml_model.py +2 -2
- camel/models/amd_model.py +2 -2
- camel/models/anthropic_model.py +2 -2
- camel/models/aws_bedrock_model.py +2 -2
- camel/models/azure_openai_model.py +4 -28
- camel/models/base_audio_model.py +2 -2
- camel/models/base_model.py +192 -14
- camel/models/cerebras_model.py +2 -2
- camel/models/cohere_model.py +4 -30
- camel/models/cometapi_model.py +2 -2
- camel/models/crynux_model.py +2 -2
- camel/models/deepseek_model.py +4 -28
- camel/models/fish_audio_model.py +2 -2
- camel/models/function_gemma_model.py +889 -0
- camel/models/gemini_model.py +4 -28
- camel/models/groq_model.py +2 -2
- camel/models/internlm_model.py +2 -2
- camel/models/litellm_model.py +3 -17
- camel/models/lmstudio_model.py +2 -2
- camel/models/minimax_model.py +2 -2
- camel/models/mistral_model.py +4 -30
- camel/models/model_factory.py +4 -2
- camel/models/model_manager.py +2 -2
- camel/models/modelscope_model.py +2 -2
- camel/models/moonshot_model.py +3 -15
- camel/models/nebius_model.py +2 -2
- camel/models/nemotron_model.py +2 -2
- camel/models/netmind_model.py +2 -2
- camel/models/novita_model.py +2 -2
- camel/models/nvidia_model.py +2 -2
- camel/models/ollama_model.py +2 -2
- camel/models/openai_audio_models.py +2 -2
- camel/models/openai_compatible_model.py +4 -28
- camel/models/openai_model.py +4 -43
- camel/models/openrouter_model.py +2 -2
- camel/models/ppio_model.py +2 -2
- camel/models/qianfan_model.py +2 -2
- camel/models/qwen_model.py +2 -2
- camel/models/reka_model.py +4 -30
- 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 +4 -30
- camel/models/sglang_model.py +4 -30
- camel/models/siliconflow_model.py +2 -2
- camel/models/stub_model.py +2 -2
- camel/models/togetherai_model.py +2 -2
- camel/models/vllm_model.py +2 -2
- camel/models/volcano_model.py +147 -4
- camel/models/watsonx_model.py +4 -30
- camel/models/yi_model.py +2 -2
- camel/models/zhipuai_model.py +2 -2
- camel/parsers/__init__.py +2 -2
- camel/parsers/mcp_tool_call_parser.py +2 -2
- 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 +2 -2
- camel/prompts/prompt_templates.py +2 -2
- camel/prompts/role_description_prompt_template.py +2 -2
- camel/prompts/solution_extraction.py +2 -2
- camel/prompts/task_prompt_template.py +2 -2
- camel/prompts/translation.py +2 -2
- camel/prompts/video_description_prompt.py +2 -2
- camel/responses/__init__.py +2 -2
- camel/responses/agent_responses.py +2 -2
- camel/retrievers/__init__.py +2 -2
- camel/retrievers/auto_retriever.py +2 -2
- camel/retrievers/base.py +2 -2
- camel/retrievers/bm25_retriever.py +2 -2
- camel/retrievers/cohere_rerank_retriever.py +2 -2
- camel/retrievers/hybrid_retrival.py +2 -2
- camel/retrievers/vector_retriever.py +2 -2
- camel/runtimes/__init__.py +2 -2
- camel/runtimes/api.py +2 -2
- camel/runtimes/base.py +2 -2
- camel/runtimes/configs.py +2 -2
- camel/runtimes/daytona_runtime.py +2 -2
- camel/runtimes/docker_runtime.py +2 -2
- camel/runtimes/llm_guard_runtime.py +2 -2
- camel/runtimes/remote_http_runtime.py +2 -2
- camel/runtimes/ubuntu_docker_runtime.py +2 -2
- camel/runtimes/utils/__init__.py +2 -2
- camel/runtimes/utils/function_risk_toolkit.py +2 -2
- camel/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 +2 -2
- camel/schemas/outlines_converter.py +2 -2
- camel/services/agent_openapi_server.py +2 -2
- camel/societies/__init__.py +2 -2
- camel/societies/babyagi_playing.py +2 -2
- camel/societies/role_playing.py +2 -2
- camel/societies/workforce/__init__.py +2 -2
- camel/societies/workforce/base.py +2 -2
- camel/societies/workforce/events.py +4 -2
- camel/societies/workforce/prompts.py +9 -8
- camel/societies/workforce/role_playing_worker.py +2 -2
- camel/societies/workforce/single_agent_worker.py +2 -2
- camel/societies/workforce/structured_output_handler.py +2 -2
- camel/societies/workforce/task_channel.py +2 -2
- camel/societies/workforce/utils.py +2 -2
- camel/societies/workforce/worker.py +2 -2
- camel/societies/workforce/workflow_memory_manager.py +2 -2
- camel/societies/workforce/workforce.py +132 -71
- camel/societies/workforce/workforce_callback.py +2 -2
- camel/societies/workforce/workforce_logger.py +2 -2
- camel/societies/workforce/workforce_metrics.py +2 -2
- camel/storages/__init__.py +2 -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 +2 -2
- camel/storages/graph_storages/neo4j_graph.py +2 -2
- 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 +2 -2
- camel/storages/key_value_storages/mem0_cloud.py +2 -2
- 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 +2 -2
- camel/storages/vectordb_storages/__init__.py +2 -2
- camel/storages/vectordb_storages/base.py +2 -2
- camel/storages/vectordb_storages/chroma.py +2 -2
- camel/storages/vectordb_storages/faiss.py +2 -2
- camel/storages/vectordb_storages/milvus.py +2 -2
- camel/storages/vectordb_storages/oceanbase.py +2 -2
- camel/storages/vectordb_storages/pgvector.py +2 -2
- camel/storages/vectordb_storages/qdrant.py +2 -2
- camel/storages/vectordb_storages/surreal.py +2 -2
- camel/storages/vectordb_storages/tidb.py +2 -2
- camel/storages/vectordb_storages/weaviate.py +2 -2
- camel/tasks/__init__.py +2 -2
- camel/tasks/task.py +2 -2
- camel/tasks/task_prompt.py +2 -2
- 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 +6 -3
- camel/toolkits/aci_toolkit.py +2 -2
- camel/toolkits/arxiv_toolkit.py +2 -2
- camel/toolkits/ask_news_toolkit.py +2 -2
- camel/toolkits/async_browser_toolkit.py +2 -2
- camel/toolkits/audio_analysis_toolkit.py +2 -2
- camel/toolkits/base.py +47 -5
- camel/toolkits/bohrium_toolkit.py +2 -2
- camel/toolkits/browser_toolkit.py +2 -2
- camel/toolkits/browser_toolkit_commons.py +2 -2
- camel/toolkits/code_execution.py +2 -2
- camel/toolkits/context_summarizer_toolkit.py +2 -2
- camel/toolkits/craw4ai_toolkit.py +2 -2
- camel/toolkits/dappier_toolkit.py +2 -2
- camel/toolkits/data_commons_toolkit.py +2 -2
- camel/toolkits/dingtalk.py +2 -2
- camel/toolkits/earth_science_toolkit.py +2 -2
- camel/toolkits/edgeone_pages_mcp_toolkit.py +2 -2
- camel/toolkits/excel_toolkit.py +2 -2
- camel/toolkits/file_toolkit.py +2 -2
- camel/toolkits/function_tool.py +95 -25
- camel/toolkits/github_toolkit.py +2 -2
- camel/toolkits/gmail_toolkit.py +2 -2
- camel/toolkits/google_calendar_toolkit.py +2 -2
- camel/toolkits/google_drive_mcp_toolkit.py +2 -2
- camel/toolkits/google_maps_toolkit.py +2 -2
- camel/toolkits/google_scholar_toolkit.py +2 -2
- camel/toolkits/human_toolkit.py +2 -2
- camel/toolkits/hybrid_browser_toolkit/__init__.py +2 -2
- camel/toolkits/hybrid_browser_toolkit/config_loader.py +2 -2
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +2 -2
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +89 -104
- camel/toolkits/hybrid_browser_toolkit/installer.py +2 -2
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +25 -14
- camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +6 -0
- camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/__init__.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/actions.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/agent.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2 -2
- camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +2 -2
- camel/toolkits/image_analysis_toolkit.py +2 -2
- camel/toolkits/image_generation_toolkit.py +2 -2
- camel/toolkits/jina_reranker_toolkit.py +2 -2
- camel/toolkits/klavis_toolkit.py +2 -2
- camel/toolkits/linkedin_toolkit.py +2 -2
- camel/toolkits/markitdown_toolkit.py +2 -2
- camel/toolkits/math_toolkit.py +2 -2
- camel/toolkits/mcp_toolkit.py +2 -2
- camel/toolkits/memory_toolkit.py +2 -2
- camel/toolkits/meshy_toolkit.py +2 -2
- camel/toolkits/message_agent_toolkit.py +2 -2
- camel/toolkits/message_integration.py +6 -2
- camel/toolkits/microsoft_outlook_mail_toolkit.py +1885 -0
- camel/toolkits/mineru_toolkit.py +2 -2
- camel/toolkits/minimax_mcp_toolkit.py +2 -2
- camel/toolkits/networkx_toolkit.py +2 -2
- camel/toolkits/note_taking_toolkit.py +2 -2
- camel/toolkits/notion_mcp_toolkit.py +2 -2
- camel/toolkits/notion_toolkit.py +2 -2
- camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
- 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/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/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 +2 -2
- camel/toolkits/origene_mcp_toolkit.py +2 -2
- camel/toolkits/playwright_mcp_toolkit.py +2 -2
- camel/toolkits/pptx_toolkit.py +2 -2
- 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 +2 -2
- camel/toolkits/retrieval_toolkit.py +2 -2
- camel/toolkits/screenshot_toolkit.py +2 -2
- camel/toolkits/search_toolkit.py +70 -13
- camel/toolkits/searxng_toolkit.py +2 -2
- camel/toolkits/semantic_scholar_toolkit.py +2 -2
- camel/toolkits/slack_toolkit.py +2 -2
- camel/toolkits/sql_toolkit.py +2 -2
- camel/toolkits/stripe_toolkit.py +2 -2
- camel/toolkits/sympy_toolkit.py +2 -2
- camel/toolkits/task_planning_toolkit.py +2 -2
- camel/toolkits/terminal_toolkit/__init__.py +2 -2
- camel/toolkits/terminal_toolkit/terminal_toolkit.py +323 -112
- camel/toolkits/terminal_toolkit/utils.py +179 -52
- camel/toolkits/thinking_toolkit.py +2 -2
- camel/toolkits/twitter_toolkit.py +2 -2
- camel/toolkits/vertex_ai_veo_toolkit.py +2 -2
- camel/toolkits/video_analysis_toolkit.py +2 -2
- camel/toolkits/video_download_toolkit.py +2 -2
- camel/toolkits/weather_toolkit.py +2 -2
- camel/toolkits/web_deploy_toolkit.py +2 -2
- camel/toolkits/wechat_official_toolkit.py +2 -2
- camel/toolkits/whatsapp_toolkit.py +2 -2
- camel/toolkits/wolfram_alpha_toolkit.py +2 -2
- camel/toolkits/zapier_toolkit.py +2 -2
- camel/types/__init__.py +2 -2
- camel/types/agents/__init__.py +2 -2
- camel/types/agents/tool_calling_record.py +2 -2
- camel/types/enums.py +5 -4
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +2 -2
- camel/types/unified_model_type.py +10 -6
- camel/utils/__init__.py +5 -2
- camel/utils/agent_context.py +41 -0
- 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 +2 -2
- camel/utils/constants.py +2 -2
- camel/utils/context_utils.py +2 -2
- camel/utils/deduplication.py +2 -2
- camel/utils/filename.py +2 -2
- camel/utils/langfuse.py +18 -10
- camel/utils/mcp.py +2 -2
- camel/utils/mcp_client.py +2 -2
- camel/utils/message_summarizer.py +2 -2
- camel/utils/response_format.py +2 -2
- camel/utils/token_counting.py +2 -2
- camel/utils/tool_result.py +2 -2
- 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.82.dist-info → camel_ai-0.2.83a6.dist-info}/METADATA +34 -29
- camel_ai-0.2.83a6.dist-info/RECORD +511 -0
- camel_ai-0.2.82.dist-info/RECORD +0 -507
- {camel_ai-0.2.82.dist-info → camel_ai-0.2.83a6.dist-info}/WHEEL +0 -0
- {camel_ai-0.2.82.dist-info → camel_ai-0.2.83a6.dist-info}/licenses/LICENSE +0 -0
camel/models/base_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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,12 +10,22 @@
|
|
|
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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import abc
|
|
15
|
+
import inspect
|
|
15
16
|
import os
|
|
16
17
|
import re
|
|
17
18
|
from abc import ABC, abstractmethod
|
|
18
|
-
from typing import
|
|
19
|
+
from typing import (
|
|
20
|
+
Any,
|
|
21
|
+
AsyncGenerator,
|
|
22
|
+
Dict,
|
|
23
|
+
Generator,
|
|
24
|
+
List,
|
|
25
|
+
Optional,
|
|
26
|
+
Type,
|
|
27
|
+
Union,
|
|
28
|
+
)
|
|
19
29
|
|
|
20
30
|
from openai import AsyncStream, Stream
|
|
21
31
|
from openai.lib.streaming.chat import (
|
|
@@ -33,7 +43,12 @@ from camel.types import (
|
|
|
33
43
|
ParsedChatCompletion,
|
|
34
44
|
UnifiedModelType,
|
|
35
45
|
)
|
|
36
|
-
from camel.utils import
|
|
46
|
+
from camel.utils import (
|
|
47
|
+
BaseTokenCounter,
|
|
48
|
+
Constants,
|
|
49
|
+
get_current_agent_session_id,
|
|
50
|
+
update_langfuse_trace,
|
|
51
|
+
)
|
|
37
52
|
|
|
38
53
|
if os.environ.get("TRACEROOT_ENABLED", "False").lower() == "true":
|
|
39
54
|
try:
|
|
@@ -51,6 +66,132 @@ else:
|
|
|
51
66
|
logger = camel_get_logger('base_model')
|
|
52
67
|
|
|
53
68
|
|
|
69
|
+
class _StreamLogger:
|
|
70
|
+
r"""Base for stream logging wrappers."""
|
|
71
|
+
|
|
72
|
+
def __init__(self, log_path: Optional[str], log_enabled: bool):
|
|
73
|
+
self._log_path = log_path
|
|
74
|
+
self._log_enabled = log_enabled
|
|
75
|
+
self._id = self._model = self._content = ""
|
|
76
|
+
self._finish_reason: Optional[str] = None
|
|
77
|
+
self._usage: Optional[Dict[str, Any]] = None
|
|
78
|
+
self._logged = False
|
|
79
|
+
|
|
80
|
+
def _collect(self, chunk: ChatCompletionChunk) -> None:
|
|
81
|
+
self._id = self._id or getattr(chunk, 'id', '')
|
|
82
|
+
self._model = self._model or getattr(chunk, 'model', '')
|
|
83
|
+
if chunk.usage:
|
|
84
|
+
u = chunk.usage
|
|
85
|
+
self._usage = (
|
|
86
|
+
u.model_dump() if hasattr(u, 'model_dump') else u.dict()
|
|
87
|
+
)
|
|
88
|
+
if chunk.choices:
|
|
89
|
+
choice = chunk.choices[0]
|
|
90
|
+
if choice.delta and choice.delta.content:
|
|
91
|
+
self._content += choice.delta.content
|
|
92
|
+
if choice.finish_reason:
|
|
93
|
+
self._finish_reason = choice.finish_reason
|
|
94
|
+
|
|
95
|
+
def _log(self) -> None:
|
|
96
|
+
if self._logged or not self._log_enabled or not self._log_path:
|
|
97
|
+
return
|
|
98
|
+
self._logged = True
|
|
99
|
+
import json
|
|
100
|
+
from datetime import datetime
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
with open(self._log_path, "r+") as f:
|
|
104
|
+
data = json.load(f)
|
|
105
|
+
data["response_timestamp"] = datetime.now().isoformat()
|
|
106
|
+
data["response"] = {
|
|
107
|
+
"id": self._id,
|
|
108
|
+
"model": self._model,
|
|
109
|
+
"content": self._content,
|
|
110
|
+
"finish_reason": self._finish_reason,
|
|
111
|
+
"usage": self._usage,
|
|
112
|
+
"streaming": True,
|
|
113
|
+
}
|
|
114
|
+
f.seek(0)
|
|
115
|
+
json.dump(data, f, indent=4)
|
|
116
|
+
f.truncate()
|
|
117
|
+
except Exception:
|
|
118
|
+
pass
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class _SyncStreamWrapper(_StreamLogger):
|
|
122
|
+
r"""Sync stream wrapper with logging."""
|
|
123
|
+
|
|
124
|
+
def __init__(
|
|
125
|
+
self,
|
|
126
|
+
stream: Union[
|
|
127
|
+
Stream[ChatCompletionChunk],
|
|
128
|
+
Generator[ChatCompletionChunk, None, None],
|
|
129
|
+
],
|
|
130
|
+
log_path: Optional[str],
|
|
131
|
+
log_enabled: bool,
|
|
132
|
+
):
|
|
133
|
+
super().__init__(log_path, log_enabled)
|
|
134
|
+
self._stream = stream
|
|
135
|
+
|
|
136
|
+
def __iter__(self):
|
|
137
|
+
return self
|
|
138
|
+
|
|
139
|
+
def __next__(self) -> ChatCompletionChunk:
|
|
140
|
+
try:
|
|
141
|
+
chunk = next(self._stream)
|
|
142
|
+
self._collect(chunk)
|
|
143
|
+
return chunk
|
|
144
|
+
except StopIteration:
|
|
145
|
+
self._log()
|
|
146
|
+
raise
|
|
147
|
+
|
|
148
|
+
def __enter__(self):
|
|
149
|
+
return self
|
|
150
|
+
|
|
151
|
+
def __exit__(self, *_):
|
|
152
|
+
return False
|
|
153
|
+
|
|
154
|
+
def __del__(self):
|
|
155
|
+
self._log()
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class _AsyncStreamWrapper(_StreamLogger):
|
|
159
|
+
r"""Async stream wrapper with logging."""
|
|
160
|
+
|
|
161
|
+
def __init__(
|
|
162
|
+
self,
|
|
163
|
+
stream: Union[
|
|
164
|
+
AsyncStream[ChatCompletionChunk],
|
|
165
|
+
AsyncGenerator[ChatCompletionChunk, None],
|
|
166
|
+
],
|
|
167
|
+
log_path: Optional[str],
|
|
168
|
+
log_enabled: bool,
|
|
169
|
+
):
|
|
170
|
+
super().__init__(log_path, log_enabled)
|
|
171
|
+
self._stream = stream
|
|
172
|
+
|
|
173
|
+
def __aiter__(self):
|
|
174
|
+
return self
|
|
175
|
+
|
|
176
|
+
async def __anext__(self) -> ChatCompletionChunk:
|
|
177
|
+
try:
|
|
178
|
+
chunk = await self._stream.__anext__()
|
|
179
|
+
self._collect(chunk)
|
|
180
|
+
return chunk
|
|
181
|
+
except StopAsyncIteration:
|
|
182
|
+
self._log()
|
|
183
|
+
raise
|
|
184
|
+
|
|
185
|
+
async def __aenter__(self):
|
|
186
|
+
return self
|
|
187
|
+
|
|
188
|
+
async def __aexit__(self, *_):
|
|
189
|
+
return False
|
|
190
|
+
|
|
191
|
+
def __del__(self):
|
|
192
|
+
self._log()
|
|
193
|
+
|
|
194
|
+
|
|
54
195
|
class ModelBackendMeta(abc.ABCMeta):
|
|
55
196
|
r"""Metaclass that automatically preprocesses messages in run method.
|
|
56
197
|
|
|
@@ -274,14 +415,29 @@ class BaseModelBackend(ABC, metaclass=ModelBackendMeta):
|
|
|
274
415
|
import json
|
|
275
416
|
from datetime import datetime
|
|
276
417
|
|
|
277
|
-
|
|
418
|
+
from camel.utils.agent_context import get_current_agent_id
|
|
419
|
+
|
|
420
|
+
agent_id = get_current_agent_id()
|
|
421
|
+
|
|
422
|
+
# Remove _context_summarizer suffix to keep all logs in one directory
|
|
423
|
+
log_agent_id = agent_id
|
|
424
|
+
if agent_id and agent_id.endswith("_context_summarizer"):
|
|
425
|
+
log_agent_id = agent_id[: -len("_context_summarizer")]
|
|
426
|
+
|
|
427
|
+
log_subdir = (
|
|
428
|
+
os.path.join(self._log_dir, log_agent_id)
|
|
429
|
+
if log_agent_id
|
|
430
|
+
else self._log_dir
|
|
431
|
+
)
|
|
432
|
+
os.makedirs(log_subdir, exist_ok=True)
|
|
278
433
|
|
|
279
434
|
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S_%f')
|
|
280
|
-
log_file_path = os.path.join(
|
|
435
|
+
log_file_path = os.path.join(log_subdir, f"conv_{timestamp}.json")
|
|
281
436
|
|
|
282
437
|
log_entry = {
|
|
283
438
|
"request_timestamp": datetime.now().isoformat(),
|
|
284
439
|
"model": str(self.model_type),
|
|
440
|
+
"agent_id": agent_id,
|
|
285
441
|
"request": {"messages": messages},
|
|
286
442
|
}
|
|
287
443
|
|
|
@@ -320,6 +476,25 @@ class BaseModelBackend(ABC, metaclass=ModelBackendMeta):
|
|
|
320
476
|
json.dump(log_data, f, indent=4)
|
|
321
477
|
f.truncate()
|
|
322
478
|
|
|
479
|
+
def _log_and_trace(self) -> None:
|
|
480
|
+
r"""Update Langfuse trace with session metadata.
|
|
481
|
+
|
|
482
|
+
This method updates the current Langfuse trace with agent session
|
|
483
|
+
information and model metadata. Called at the start of _run() and
|
|
484
|
+
_arun() methods before API execution.
|
|
485
|
+
"""
|
|
486
|
+
agent_session_id = get_current_agent_session_id()
|
|
487
|
+
update_langfuse_trace(
|
|
488
|
+
session_id=agent_session_id,
|
|
489
|
+
metadata={
|
|
490
|
+
"source": "camel",
|
|
491
|
+
"agent_id": agent_session_id,
|
|
492
|
+
"agent_type": "camel_chat_agent",
|
|
493
|
+
"model_type": str(self.model_type),
|
|
494
|
+
},
|
|
495
|
+
tags=["CAMEL-AI", str(self.model_type)],
|
|
496
|
+
)
|
|
497
|
+
|
|
323
498
|
@abstractmethod
|
|
324
499
|
def _run(
|
|
325
500
|
self,
|
|
@@ -428,10 +603,13 @@ class BaseModelBackend(ABC, metaclass=ModelBackendMeta):
|
|
|
428
603
|
result = self._run(messages, response_format, tools)
|
|
429
604
|
logger.info("Result: %s", result)
|
|
430
605
|
|
|
431
|
-
#
|
|
606
|
+
# For streaming responses, wrap with logging; otherwise log immediately
|
|
607
|
+
if isinstance(result, Stream) or inspect.isgenerator(result):
|
|
608
|
+
return _SyncStreamWrapper( # type: ignore[return-value]
|
|
609
|
+
result, log_path, self._log_enabled
|
|
610
|
+
)
|
|
432
611
|
if log_path:
|
|
433
612
|
self._log_response(log_path, result)
|
|
434
|
-
|
|
435
613
|
return result
|
|
436
614
|
|
|
437
615
|
@observe()
|
|
@@ -480,10 +658,13 @@ class BaseModelBackend(ABC, metaclass=ModelBackendMeta):
|
|
|
480
658
|
result = await self._arun(messages, response_format, tools)
|
|
481
659
|
logger.info("Result: %s", result)
|
|
482
660
|
|
|
483
|
-
#
|
|
661
|
+
# For streaming responses, wrap with logging; otherwise log immediately
|
|
662
|
+
if isinstance(result, AsyncStream) or inspect.isasyncgen(result):
|
|
663
|
+
return _AsyncStreamWrapper( # type: ignore[return-value]
|
|
664
|
+
result, log_path, self._log_enabled
|
|
665
|
+
)
|
|
484
666
|
if log_path:
|
|
485
667
|
self._log_response(log_path, result)
|
|
486
|
-
|
|
487
668
|
return result
|
|
488
669
|
|
|
489
670
|
def count_tokens_from_messages(self, messages: List[OpenAIMessage]) -> int:
|
|
@@ -536,10 +717,7 @@ class BaseModelBackend(ABC, metaclass=ModelBackendMeta):
|
|
|
536
717
|
Returns:
|
|
537
718
|
int: The maximum token limit for the given model.
|
|
538
719
|
"""
|
|
539
|
-
return
|
|
540
|
-
self.model_config_dict.get("max_tokens")
|
|
541
|
-
or self.model_type.token_limit
|
|
542
|
-
)
|
|
720
|
+
return self.model_type.token_limit
|
|
543
721
|
|
|
544
722
|
@property
|
|
545
723
|
def stream(self) -> bool:
|
camel/models/cerebras_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
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
|
|
camel/models/cohere_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
13
|
+
# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import ast
|
|
15
15
|
import json
|
|
16
16
|
import logging
|
|
@@ -35,9 +35,7 @@ from camel.utils import (
|
|
|
35
35
|
BaseTokenCounter,
|
|
36
36
|
OpenAITokenCounter,
|
|
37
37
|
api_keys_required,
|
|
38
|
-
get_current_agent_session_id,
|
|
39
38
|
update_current_observation,
|
|
40
|
-
update_langfuse_trace,
|
|
41
39
|
)
|
|
42
40
|
|
|
43
41
|
if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
|
|
@@ -315,19 +313,7 @@ class CohereModel(BaseModelBackend):
|
|
|
315
313
|
model=str(self.model_type),
|
|
316
314
|
model_parameters=self.model_config_dict,
|
|
317
315
|
)
|
|
318
|
-
|
|
319
|
-
agent_session_id = get_current_agent_session_id()
|
|
320
|
-
if agent_session_id:
|
|
321
|
-
update_langfuse_trace(
|
|
322
|
-
session_id=agent_session_id,
|
|
323
|
-
metadata={
|
|
324
|
-
"source": "camel",
|
|
325
|
-
"agent_id": agent_session_id,
|
|
326
|
-
"agent_type": "camel_chat_agent",
|
|
327
|
-
"model_type": str(self.model_type),
|
|
328
|
-
},
|
|
329
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
330
|
-
)
|
|
316
|
+
self._log_and_trace()
|
|
331
317
|
|
|
332
318
|
from cohere.core.api_error import ApiError
|
|
333
319
|
|
|
@@ -396,19 +382,7 @@ class CohereModel(BaseModelBackend):
|
|
|
396
382
|
model=str(self.model_type),
|
|
397
383
|
model_parameters=self.model_config_dict,
|
|
398
384
|
)
|
|
399
|
-
|
|
400
|
-
agent_session_id = get_current_agent_session_id()
|
|
401
|
-
if agent_session_id:
|
|
402
|
-
update_langfuse_trace(
|
|
403
|
-
session_id=agent_session_id,
|
|
404
|
-
metadata={
|
|
405
|
-
"source": "camel",
|
|
406
|
-
"agent_id": agent_session_id,
|
|
407
|
-
"agent_type": "camel_chat_agent",
|
|
408
|
-
"model_type": str(self.model_type),
|
|
409
|
-
},
|
|
410
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
411
|
-
)
|
|
385
|
+
self._log_and_trace()
|
|
412
386
|
|
|
413
387
|
from cohere.core.api_error import ApiError
|
|
414
388
|
|
camel/models/cometapi_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
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
|
|
camel/models/crynux_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
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
|
camel/models/deepseek_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
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
|
|
@@ -31,8 +31,6 @@ from camel.types import (
|
|
|
31
31
|
from camel.utils import (
|
|
32
32
|
BaseTokenCounter,
|
|
33
33
|
api_keys_required,
|
|
34
|
-
get_current_agent_session_id,
|
|
35
|
-
update_langfuse_trace,
|
|
36
34
|
)
|
|
37
35
|
|
|
38
36
|
if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
|
|
@@ -183,18 +181,7 @@ class DeepSeekModel(OpenAICompatibleModel):
|
|
|
183
181
|
`ChatCompletion` in the non-stream mode, or
|
|
184
182
|
`Stream[ChatCompletionChunk]` in the stream mode.
|
|
185
183
|
"""
|
|
186
|
-
|
|
187
|
-
# Update Langfuse trace with current agent session and metadata
|
|
188
|
-
agent_session_id = get_current_agent_session_id()
|
|
189
|
-
if agent_session_id:
|
|
190
|
-
update_langfuse_trace(
|
|
191
|
-
session_id=agent_session_id,
|
|
192
|
-
metadata={
|
|
193
|
-
"agent_id": agent_session_id,
|
|
194
|
-
"model_type": str(self.model_type),
|
|
195
|
-
},
|
|
196
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
197
|
-
)
|
|
184
|
+
self._log_and_trace()
|
|
198
185
|
|
|
199
186
|
request_config = self._prepare_request(
|
|
200
187
|
messages, response_format, tools
|
|
@@ -226,18 +213,7 @@ class DeepSeekModel(OpenAICompatibleModel):
|
|
|
226
213
|
`ChatCompletion` in the non-stream mode, or
|
|
227
214
|
`AsyncStream[ChatCompletionChunk]` in the stream mode.
|
|
228
215
|
"""
|
|
229
|
-
|
|
230
|
-
# Update Langfuse trace with current agent session and metadata
|
|
231
|
-
agent_session_id = get_current_agent_session_id()
|
|
232
|
-
if agent_session_id:
|
|
233
|
-
update_langfuse_trace(
|
|
234
|
-
session_id=agent_session_id,
|
|
235
|
-
metadata={
|
|
236
|
-
"agent_id": agent_session_id,
|
|
237
|
-
"model_type": str(self.model_type),
|
|
238
|
-
},
|
|
239
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
240
|
-
)
|
|
216
|
+
self._log_and_trace()
|
|
241
217
|
|
|
242
218
|
request_config = self._prepare_request(
|
|
243
219
|
messages, response_format, tools
|
camel/models/fish_audio_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
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-
|
|
13
|
+
# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
import os
|
|
16
16
|
from typing import Any, Optional
|