找回密码
 立即注册
首页 业界区 业界 Camel多智能体框架初探

Camel多智能体框架初探

梅克 2025-6-4 22:47:21
Camel介绍

CAMEL 是一个开源社区,致力于探索代理的扩展规律。我们相信,在大规模研究这些代理可以提供对其行为、能力和潜在风险的宝贵见解。为了促进该领域的研究,我们实现了并支持各种类型的代理、任务、提示、模型和模拟环境。
CAMEL :找到智能体的扩展规律。第一个也是最好的多智能体框架。
CAMEL 框架设计原则
可演化性
该框架通过生成数据并与环境交互,使多智能体系统能够持续进化。这种进化可以由可验证奖励驱动的强化学习或监督学习驱动。
规模性
该框架旨在支持百万级代理的系统,确保在大规模情况下实现高效的协调、通信和资源管理。
有状态性
代理保持状态记忆,使它们能够进行多步与环境的交互,并高效地应对复杂的任务。
代码即提示
每一行代码和注释都作为代理的提示。代码应编写得清晰易读,确保人类和代理都能有效解读。
GitHub地址:https://github.com/camel-ai/camel。
1.png

Camel初探

我使用从源代码中使用 uv 这种方式进行安装。
  1. git clone https://github.com/camel-ai/camel.git
复制代码
  1. cd camel
复制代码
如果没安装uv需要安装。
  1. pip install uv
复制代码
创建一个虚拟环境。
  1. uv venv .venv --python=3.10
复制代码
激活虚拟环境。
  1. .venv\Scripts\activate
复制代码
安装CAMEL及其依赖。
  1. uv pip install -e ".[all, dev, docs]"
复制代码
开发者可以安装pre-commit hooks 与 mypy。
  1. uv pip install pre-commit mypy
复制代码
  1. pre-commit install
复制代码
现在先随便跑个例子看看。
我想要使用硅基流动的模型,就可以在.env文件中这样写:
  1. Silicon_Model_ID="Qwen/Qwen2.5-72B-Instruct"
  2. SiliconCloud_API_KEY="你的api_key"
  3. SiliconCloud_Base_URL="https://api.siliconflow.cn/v1"
复制代码
我跑的例子是这个:camel\examples\ai_society\role_playing_multi_lingual.py
将代码修改为如下的形式即可:
  1. # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
  2. # Licensed under the Apache License, Version 2.0 (the "License");
  3. # you may not use this file except in compliance with the License.
  4. # You may obtain a copy of the License at
  5. #
  6. #     http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software
  9. # distributed under the License is distributed on an "AS IS" BASIS,
  10. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. # See the License for the specific language governing permissions and
  12. # limitations under the License.
  13. # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
  14. from colorama import Fore
  15. from camel.societies import RolePlaying
  16. from camel.utils import print_text_animated
  17. def main(model=None) -> None:
  18.     task_prompt = "Develop a trading bot for the stock market"
  19.     role_play_session = RolePlaying(
  20.         assistant_role_name="Python Programmer",
  21.         assistant_agent_kwargs=dict(model=model),
  22.         user_role_name="Stock Trader",
  23.         user_agent_kwargs=dict(model=model),
  24.         task_prompt=task_prompt,
  25.         with_task_specify=True,
  26.         task_specify_agent_kwargs=dict(model=model),
  27.         output_language="Chinese",  # Arabic, French, Spanish, ...
  28.     )
  29.     print(
  30.         Fore.GREEN
  31.         + f"AI Assistant sys message:\n{role_play_session.assistant_sys_msg}\n"
  32.     )
  33.     print(
  34.         Fore.BLUE + f"AI User sys message:\n{role_play_session.user_sys_msg}\n"
  35.     )
  36.     print(Fore.YELLOW + f"Original task prompt:\n{task_prompt}\n")
  37.     print(
  38.         Fore.CYAN
  39.         + "Specified task prompt:"
  40.         + f"\n{role_play_session.specified_task_prompt}\n"
  41.     )
  42.     print(Fore.RED + f"Final task prompt:\n{role_play_session.task_prompt}\n")
  43.     chat_turn_limit, n = 50, 0
  44.     input_msg = role_play_session.init_chat()
  45.     while n < chat_turn_limit:
  46.         n += 1
  47.         assistant_response, user_response = role_play_session.step(input_msg)
  48.         if assistant_response.terminated:
  49.             print(
  50.                 Fore.GREEN
  51.                 + (
  52.                     "AI Assistant terminated. Reason: "
  53.                     f"{assistant_response.info['termination_reasons']}."
  54.                 )
  55.             )
  56.             break
  57.         if user_response.terminated:
  58.             print(
  59.                 Fore.GREEN
  60.                 + (
  61.                     "AI User terminated. "
  62.                     f"Reason: {user_response.info['termination_reasons']}."
  63.                 )
  64.             )
  65.             break
  66.         print_text_animated(
  67.             Fore.BLUE + f"AI User:\n\n{user_response.msg.content}\n"
  68.         )
  69.         print_text_animated(
  70.             Fore.GREEN + "AI Assistant:\n\n"
  71.             f"{assistant_response.msg.content}\n"
  72.         )
  73.         if "CAMEL_TASK_DONE" in user_response.msg.content:
  74.             break
  75.         input_msg = assistant_response.msg
  76. if __name__ == "__main__":
  77.     from camel.models import ModelFactory
  78.     from camel.types import ModelPlatformType, ModelType
  79.     import pathlib
  80.     import os
  81.     from dotenv import load_dotenv
  82.     base_dir = pathlib.Path(__file__).parent.parent.parent
  83.     env_path = base_dir / ".env"
  84.     load_dotenv(dotenv_path=str(env_path))
  85.     modeltype = os.getenv("Silicon_Model_ID")
  86.     api_key = os.getenv("SiliconCloud_API_KEY")
  87.     base_url = os.getenv("SiliconCloud_Base_URL")
  88.     siliconcloud_model = ModelFactory.create(
  89.         model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
  90.                 model_type=modeltype,
  91.                 api_key=api_key,
  92.                 url=base_url,
  93.                 model_config_dict={"temperature": 0.4, "max_tokens": 4096},
  94.     )
  95.     main(siliconcloud_model)
复制代码
运行效果:
2.png

算是把环境搭建好了。
现在就可以开始学习Camel这个多智能体框架了。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册