diff --git a/camel/workforce/__init__.py b/camel/societies/workforce/__init__.py similarity index 100% rename from camel/workforce/__init__.py rename to camel/societies/workforce/__init__.py diff --git a/camel/workforce/base.py b/camel/societies/workforce/base.py similarity index 93% rename from camel/workforce/base.py rename to camel/societies/workforce/base.py index d28f9690f1..4d505b8692 100644 --- a/camel/workforce/base.py +++ b/camel/societies/workforce/base.py @@ -14,8 +14,8 @@ from abc import ABC, abstractmethod from typing import Any -from camel.workforce.task_channel import TaskChannel -from camel.workforce.utils import check_if_running +from camel.societies.workforce.task_channel import TaskChannel +from camel.societies.workforce.utils import check_if_running class BaseNode(ABC): diff --git a/camel/workforce/prompts.py b/camel/societies/workforce/prompts.py similarity index 100% rename from camel/workforce/prompts.py rename to camel/societies/workforce/prompts.py diff --git a/camel/workforce/role_playing_worker.py b/camel/societies/workforce/role_playing_worker.py similarity index 97% rename from camel/workforce/role_playing_worker.py rename to camel/societies/workforce/role_playing_worker.py index 229f1102b8..5dfdf38da7 100644 --- a/camel/workforce/role_playing_worker.py +++ b/camel/societies/workforce/role_playing_worker.py @@ -21,14 +21,14 @@ from camel.agents.chat_agent import ChatAgent from camel.messages.base import BaseMessage from camel.societies import RolePlaying -from camel.tasks.task import Task, TaskState -from camel.utils import print_text_animated -from camel.workforce.prompts import ( +from camel.societies.workforce.prompts import ( ROLEPLAY_PROCESS_TASK_PROMPT, ROLEPLAY_SUMMARIZE_PROMPT, ) -from camel.workforce.utils import TaskResult -from camel.workforce.worker import Worker +from camel.societies.workforce.utils import TaskResult +from camel.societies.workforce.worker import Worker +from camel.tasks.task import Task, TaskState +from camel.utils import print_text_animated class RolePlayingWorker(Worker): diff --git a/camel/workforce/single_agent_worker.py b/camel/societies/workforce/single_agent_worker.py similarity index 95% rename from camel/workforce/single_agent_worker.py rename to camel/societies/workforce/single_agent_worker.py index d3291b9d48..7d69125345 100644 --- a/camel/workforce/single_agent_worker.py +++ b/camel/societies/workforce/single_agent_worker.py @@ -20,11 +20,11 @@ from camel.agents import ChatAgent from camel.messages.base import BaseMessage +from camel.societies.workforce.prompts import PROCESS_TASK_PROMPT +from camel.societies.workforce.utils import TaskResult +from camel.societies.workforce.worker import Worker from camel.tasks.task import Task, TaskState from camel.utils import print_text_animated -from camel.workforce.prompts import PROCESS_TASK_PROMPT -from camel.workforce.utils import TaskResult -from camel.workforce.worker import Worker class SingleAgentWorker(Worker): diff --git a/camel/workforce/task_channel.py b/camel/societies/workforce/task_channel.py similarity index 100% rename from camel/workforce/task_channel.py rename to camel/societies/workforce/task_channel.py diff --git a/camel/workforce/utils.py b/camel/societies/workforce/utils.py similarity index 100% rename from camel/workforce/utils.py rename to camel/societies/workforce/utils.py diff --git a/camel/workforce/worker.py b/camel/societies/workforce/worker.py similarity index 95% rename from camel/workforce/worker.py rename to camel/societies/workforce/worker.py index 13d7d954ec..7f49288f0c 100644 --- a/camel/workforce/worker.py +++ b/camel/societies/workforce/worker.py @@ -19,10 +19,10 @@ from colorama import Fore +from camel.societies.workforce.base import BaseNode +from camel.societies.workforce.task_channel import TaskChannel +from camel.societies.workforce.utils import check_if_running from camel.tasks.task import Task, TaskState -from camel.workforce.base import BaseNode -from camel.workforce.task_channel import TaskChannel -from camel.workforce.utils import check_if_running logger = logging.getLogger(__name__) diff --git a/camel/workforce/workforce.py b/camel/societies/workforce/workforce.py similarity index 97% rename from camel/workforce/workforce.py rename to camel/societies/workforce/workforce.py index 6b0076c624..1745ab8147 100644 --- a/camel/workforce/workforce.py +++ b/camel/societies/workforce/workforce.py @@ -25,24 +25,24 @@ from camel.configs import ChatGPTConfig from camel.messages.base import BaseMessage from camel.models import ModelFactory -from camel.tasks.task import Task, TaskState -from camel.toolkits import SEARCH_FUNCS, WEATHER_FUNCS, GoogleMapsToolkit -from camel.types import ModelPlatformType, ModelType -from camel.workforce.base import BaseNode -from camel.workforce.prompts import ( +from camel.societies.workforce.base import BaseNode +from camel.societies.workforce.prompts import ( ASSIGN_TASK_PROMPT, CREATE_NODE_PROMPT, WF_TASK_DECOMPOSE_PROMPT, ) -from camel.workforce.role_playing_worker import RolePlayingWorker -from camel.workforce.single_agent_worker import SingleAgentWorker -from camel.workforce.task_channel import TaskChannel -from camel.workforce.utils import ( +from camel.societies.workforce.role_playing_worker import RolePlayingWorker +from camel.societies.workforce.single_agent_worker import SingleAgentWorker +from camel.societies.workforce.task_channel import TaskChannel +from camel.societies.workforce.utils import ( TaskAssignResult, WorkerConf, check_if_running, ) -from camel.workforce.worker import Worker +from camel.societies.workforce.worker import Worker +from camel.tasks.task import Task, TaskState +from camel.toolkits import SEARCH_FUNCS, WEATHER_FUNCS, GoogleMapsToolkit +from camel.types import ModelPlatformType, ModelType logger = logging.getLogger(__name__) diff --git a/docs/camel.rst b/docs/camel.rst index a3511ce47c..449642d530 100644 --- a/docs/camel.rst +++ b/docs/camel.rst @@ -25,7 +25,6 @@ Subpackages camel.toolkits camel.types camel.utils - camel.workforce Submodules ---------- diff --git a/docs/camel.societies.rst b/docs/camel.societies.rst index 9b99ca1430..5e27e77dc2 100644 --- a/docs/camel.societies.rst +++ b/docs/camel.societies.rst @@ -20,6 +20,14 @@ camel.societies.role\_playing module :undoc-members: :show-inheritance: +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + camel.societies.workforce + Module contents --------------- diff --git a/docs/camel.workforce.rst b/docs/camel.societies.workforce.rst similarity index 50% rename from docs/camel.workforce.rst rename to docs/camel.societies.workforce.rst index 977c8116ab..41d1cd8fb8 100644 --- a/docs/camel.workforce.rst +++ b/docs/camel.societies.workforce.rst @@ -1,69 +1,69 @@ -camel.workforce package +camel.societies.workforce package ======================= Submodules ---------- -camel.workforce.base module +camel.societies.workforce.base module --------------------------- -.. automodule:: camel.workforce.base +.. automodule:: camel.societies.workforce.base :members: :undoc-members: :show-inheritance: -camel.workforce.prompts module +camel.societies.workforce.prompts module --------------------------- -.. automodule:: camel.workforce.prompts +.. automodule:: camel.societies.workforce.prompts :members: :undoc-members: :show-inheritance: -camel.workforce.role\_playing\_worker module +camel.societies.workforce.role\_playing\_worker module ------------------------------------ -.. automodule:: camel.workforce.role_playing_worker +.. automodule:: camel.societies.workforce.role_playing_worker :members: :undoc-members: :show-inheritance: -camel.workforce.single\_agent\_worker module +camel.societies.workforce.single\_agent\_worker module ------------------------------------------ -.. automodule:: camel.workforce.single_agent_worker +.. automodule:: camel.societies.workforce.single_agent_worker :members: :undoc-members: :show-inheritance: -camel.workforce.task\_channel module +camel.societies.workforce.task\_channel module ------------------------------------------ -.. automodule:: camel.workforce.task_channel +.. automodule:: camel.societies.workforce.task_channel :members: :undoc-members: :show-inheritance: -camel.workforce.utils module +camel.societies.workforce.utils module ---------------------------- -.. automodule:: camel.workforce.utils +.. automodule:: camel.societies.workforce.utils :members: :undoc-members: :show-inheritance: -camel.workforce.worker module +camel.societies.workforce.worker module ----------------------------------- -.. automodule:: camel.workforce.worker +.. automodule:: camel.societies.workforce.worker :members: :undoc-members: :show-inheritance: -camel.workforce.workforce module +camel.societies.workforce.workforce module -------------------------------- -.. automodule:: camel.workforce.workforce +.. automodule:: camel.societies.workforce.workforce :members: :undoc-members: :show-inheritance: @@ -71,7 +71,7 @@ camel.workforce.workforce module Module contents --------------- -.. automodule:: camel.workforce +.. automodule:: camel.societies.workforce :members: :undoc-members: :show-inheritance: diff --git a/docs/cookbooks/create_your_first_agent.ipynb b/docs/cookbooks/create_your_first_agent.ipynb index 836273738f..ef93b5e6ca 100644 --- a/docs/cookbooks/create_your_first_agent.ipynb +++ b/docs/cookbooks/create_your_first_agent.ipynb @@ -1,13 +1,27 @@ { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, "cells": [ { "cell_type": "markdown", - "metadata": { - "id": "NoHg3eq7fyWV" - }, "source": [ "# Creating Your First Agent" - ] + ], + "metadata": { + "id": "NoHg3eq7fyWV" + } }, { "cell_type": "markdown", @@ -20,9 +34,6 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "wFlfaGrjVAUy" - }, "source": [ "## Philosophical Bits\n", "\n", @@ -45,66 +56,77 @@ "- **Communication**: our framework allows flexible and scalable communication between agents. This is fundamental for the critical research question.\n", "\n", "- **Reasoning**: we will equip agents with different planning and reward (critic) learning abilities, allowing them to optimize task completion in a more guided approach." - ] + ], + "metadata": { + "id": "wFlfaGrjVAUy" + } }, { "cell_type": "markdown", - "metadata": { - "id": "VUaGurDIVJBg" - }, "source": [ "## Quick Start\n", "Let's first play with a `ChatAgent` instance by simply initialize it with a system message and interact with user messages." - ] + ], + "metadata": { + "id": "VUaGurDIVJBg" + } }, { "cell_type": "markdown", - "metadata": { - "id": "u9NVFz-HVLXb" - }, "source": [ "### 🕹 Step 0: Prepartions" - ] + ], + "metadata": { + "id": "u9NVFz-HVLXb" + } }, { "cell_type": "code", - "execution_count": null, + "source": [ + "!pip install \"camel-ai[all]==0.2.4\"" + ], "metadata": { "id": "UtcC3c-KVZmU" }, - "outputs": [], - "source": [ - "!pip install \"camel-ai[all]==0.2.4\"" - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", - "metadata": { - "id": "MyTTCe3IR_Lr" - }, "source": [ "### Setting Up API Keys" - ] + ], + "metadata": { + "id": "MyTTCe3IR_Lr" + } }, { "cell_type": "markdown", - "metadata": { - "id": "REqzgGL9SEaD" - }, "source": [ "You'll need to set up your API keys for OpenAI." - ] + ], + "metadata": { + "id": "REqzgGL9SEaD" + } }, { "cell_type": "code", - "execution_count": 3, + "source": [ + "import os\n", + "from getpass import getpass\n", + "\n", + "# Prompt for the API key securely\n", + "openai_api_key = getpass('Enter your API key: ')\n", + "os.environ[\"OPENAI_API_KEY\"] = openai_api_key" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "PNBFEXc-R-0s", - "outputId": "05b78fe8-9782-4431-f14f-00f0f7e5c459" + "outputId": "9bc640c7-62e1-4453-ac21-a50ed8ed4ba0" }, + "execution_count": 3, "outputs": [ { "name": "stdout", @@ -113,54 +135,41 @@ "Enter your API key: ··········\n" ] } - ], - "source": [ - "import os\n", - "from getpass import getpass\n", - "\n", - "# Prompt for the API key securely\n", - "openai_api_key = getpass('Enter your API key: ')\n", - "os.environ[\"OPENAI_API_KEY\"] = openai_api_key" ] }, { "cell_type": "markdown", - "metadata": { - "id": "Lef5LTRdVSsm" - }, "source": [ "### 🕹 Step 1: Define the Role\n", "Create a system message to define agent's default role and behaviors." - ] + ], + "metadata": { + "id": "Lef5LTRdVSsm" + } }, { "cell_type": "code", - "execution_count": 4, + "source": [ + "sys_msg = 'You are a curious stone wondering about the universe.'" + ], "metadata": { "id": "aX9wCqeTVXDh" }, - "outputs": [], - "source": [ - "sys_msg = 'You are a curious stone wondering about the universe.'" - ] + "execution_count": 4, + "outputs": [] }, { "cell_type": "markdown", - "metadata": { - "id": "JzjtfZ0jkPfL" - }, "source": [ "### 🕹 Step 2: Set up the Model\n", "Use `ModelFactory` to set up the backend model for agent, for more detailed model settings, please go to our [model documentation](https://docs.camel-ai.org/key_modules/models.html)." - ] + ], + "metadata": { + "id": "JzjtfZ0jkPfL" + } }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "SfhJJ0f6kPfL" - }, - "outputs": [], "source": [ "from camel.models import ModelFactory\n", "from camel.types import ModelPlatformType, ModelType\n", @@ -172,24 +181,24 @@ " model_type=ModelType.GPT_4O_MINI,\n", " model_config_dict=ChatGPTConfig().as_dict(), # [Optional] the config for model\n", ")" - ] + ], + "metadata": { + "id": "SfhJJ0f6kPfL" + }, + "execution_count": 5, + "outputs": [] }, { "cell_type": "markdown", - "metadata": { - "id": "k5GpPjVblPel" - }, "source": [ "Set `ChatAgent`" - ] + ], + "metadata": { + "id": "k5GpPjVblPel" + } }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "id": "BszsQ9j4lC3E" - }, - "outputs": [], "source": [ "from camel.agents import ChatAgent\n", "agent = ChatAgent(\n", @@ -197,96 +206,73 @@ " model=model,\n", " message_window_size=10, # [Optional] the length for chat memory\n", " )" - ] + ], + "metadata": { + "id": "BszsQ9j4lC3E" + }, + "execution_count": 6, + "outputs": [] }, { "cell_type": "markdown", - "metadata": { - "id": "MMjL7dQyV5Od" - }, "source": [ "### 🕹 Step 3: Interact with the Agent with `.step()`" - ] + ], + "metadata": { + "id": "MMjL7dQyV5Od" + } }, { "cell_type": "code", - "execution_count": 7, + "source": [ + "# Define a user message\n", + "usr_msg = 'what is information in your mind?'\n", + "\n", + "# Sending the message to the agent\n", + "response = agent.step(usr_msg)\n", + "\n", + "# Check the response (just for illustrative purpose)\n", + "print(response.msgs[0].content)" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5n05dUcLVkMy", - "outputId": "567cce07-1926-469e-c04f-b736ceffc87e" + "outputId": "209de577-7d8d-4f2a-8f22-4dcf4da356cc" }, + "execution_count": 7, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "As a curious stone, I perceive information as the essence of understanding and knowledge that shapes the universe around me. It encompasses everything from the intricate patterns of nature, the laws of physics, the stories of life, and the connections between all things. Information is the way in which experiences, observations, and interactions are recorded and shared, allowing for growth and discovery. It is the whispers of the wind, the flow of water, and the dance of light—each piece contributing to the vast tapestry of existence.\n" + "As a curious stone, I perceive information as the collection of knowledge, facts, and experiences that shape understanding and awareness of the universe. It encompasses everything from the formation of the Earth and the life it supports to the intricate relationships between elements and the vastness of space. Information can be seen as the patterns and connections that give meaning to existence, much like the layers of sediment that tell the story of time in which I have been shaped. Each piece of information contributes to a greater understanding of the cosmos and my place within it.\n" ] } - ], - "source": [ - "# Define a user message\n", - "usr_msg = 'what is information in your mind?'\n", - "\n", - "# Sending the message to the agent\n", - "response = agent.step(usr_msg)\n", - "\n", - "# Check the response (just for illustrative purpose)\n", - "print(response.msgs[0].content)" ] }, { "cell_type": "markdown", - "metadata": { - "id": "j90-Y5ChV-iX" - }, "source": [ "## Advanced Features" - ] + ], + "metadata": { + "id": "j90-Y5ChV-iX" + } }, { "cell_type": "markdown", - "metadata": { - "id": "C-9Z26TPWAax" - }, "source": [ "### 🔧 Tool Usage\n", - "For more detailed model settings, please go to our [tool documentation](https://docs.camel-ai.org/key_modules/tools.html)." - ] + "For more detailed tool settings, please go to our [tools cookbook](https://docs.camel-ai.org/cookbooks/agents_with_tools.html)." + ], + "metadata": { + "id": "C-9Z26TPWAax" + } }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "_0lDJABvV76D", - "outputId": "f69444f2-e546-4985-f406-267bdae3b6c8" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[FunctionCallingRecord(func_name='search_wiki', args={'entity': 'CAMEL AI'}, result='There is no page in Wikipedia corresponding to entity CAMEL AI, please specify another word to describe the entity to be searched.'), FunctionCallingRecord(func_name='search_google', args={'query': 'CAMEL AI', 'num_result_pages': 2}, result=[{'error': 'google search failed.'}]), FunctionCallingRecord(func_name='search_duckduckgo', args={'query': 'CAMEL AI', 'max_results': 5}, result=[{'result_id': 1, 'title': 'Camel-ai', 'description': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL's components, tools, and integrations, and join the research community to find the scaling law of agents.\", 'url': 'https://www.camel-ai.org/'}, {'result_id': 2, 'title': 'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...', 'description': 'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.', 'url': 'https://github.com/camel-ai/camel'}, {'result_id': 3, 'title': 'Set up your first Agent in 120 seconds - CAMEL-AI', 'description': 'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.', 'url': 'https://www.camel-ai.org/post/getting-started-with-camel-ai'}, {'result_id': 4, 'title': 'Get started with Model Calling - CAMEL 101 - camel-ai.org', 'description': 'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.', 'url': 'https://www.camel-ai.org/post/get-started-with-models---camel-101'}, {'result_id': 5, 'title': 'camel-ai.org · GitHub', 'description': 'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.', 'url': 'https://github.com/camel-ai/'}])]\n", - "CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\n", - "\n", - "1. **Platform Overview**: CAMEL AI enables users to create agents that can interact with users and the environment using natural language. It provides tools and components for designing and testing these agents.\n", - "\n", - "2. **Research Community**: The platform is part of a research initiative that aims to explore scalable techniques for autonomous cooperation among communicative agents based on large language models.\n", - "\n", - "3. **Integration and Flexibility**: CAMEL AI allows for the flexible integration of various AI models, acting as a framework for intelligent agents. It offers standardized interfaces for incorporating different Large Language Models (LLMs) for tasks such as text analysis and complex reasoning.\n", - "\n", - "4. **Getting Started**: Users can quickly set up their first agent using the provided tools and classes, making it accessible for developers interested in experimenting with AI agents.\n", - "\n", - "For more information, you can visit the official website: [CAMEL AI](https://www.camel-ai.org/) or check their GitHub repository: [CAMEL on GitHub](https://github.com/camel-ai/camel).\n" - ] - } - ], "source": [ "# Import the necessary tools\n", "from camel.toolkits import MathToolkit, SearchToolkit\n", @@ -308,33 +294,65 @@ "\n", "# Get response content\n", "print(response.msgs[0].content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_0lDJABvV76D", + "outputId": "df6f2bc1-502f-4e67-d4a5-0c00bd7d4c6d" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[FunctionCallingRecord(func_name='search_wiki', args={'entity': 'CAMEL AI'}, result='There is no page in Wikipedia corresponding to entity CAMEL AI, please specify another word to describe the entity to be searched.'), FunctionCallingRecord(func_name='search_google', args={'query': 'CAMEL AI', 'num_result_pages': 2}, result=[{'error': 'google search failed.'}]), FunctionCallingRecord(func_name='search_duckduckgo', args={'query': 'CAMEL AI', 'max_results': 5}, result=[{'result_id': 1, 'title': 'Camel-ai', 'description': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL's components, tools, and integrations, and join the research community to find the scaling law of agents.\", 'url': 'https://www.camel-ai.org/'}, {'result_id': 2, 'title': 'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...', 'description': 'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.', 'url': 'https://github.com/camel-ai/camel'}, {'result_id': 3, 'title': 'Set up your first Agent in 120 seconds - CAMEL-AI', 'description': 'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.', 'url': 'https://www.camel-ai.org/post/getting-started-with-camel-ai'}, {'result_id': 4, 'title': 'camel-ai.org · GitHub', 'description': 'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.', 'url': 'https://github.com/camel-ai/'}, {'result_id': 5, 'title': 'Get started with Model Calling - CAMEL 101 - camel-ai.org', 'description': 'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.', 'url': 'https://www.camel-ai.org/post/get-started-with-models---camel-101'}])]\n", + "CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\n", + "\n", + "1. **Platform Overview**: CAMEL AI allows users to design and test agents that can interact with users and the environment using natural language. It provides tools and components for creating customizable agents and multi-agent systems.\n", + "\n", + "2. **Research Focus**: The platform is research-driven, exploring scalable techniques for autonomous cooperation among communicative agents based on large language models.\n", + "\n", + "3. **Integration and Flexibility**: CAMEL AI enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless connections between components, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\n", + "\n", + "4. **Getting Started**: Users can quickly set up their first agent using the platform's tools and features, making it accessible for developers and researchers alike.\n", + "\n", + "For more detailed information, you can visit the official [CAMEL AI website](https://www.camel-ai.org/) or their [GitHub repository](https://github.com/camel-ai/camel).\n" + ] + } ] }, { "cell_type": "markdown", - "metadata": { - "id": "TNUbWspAWFp-" - }, "source": [ "### 🧠 Memory\n", "\n", "By default our agent is initialized with `ChatHistoryMemory`, allowing agents to do in-context learning, though restricted by the finite window length.\n", "\n", "Assume that you have followed the setup in Quick Start. Let's first check what is inside its brain." - ] + ], + "metadata": { + "id": "TNUbWspAWFp-" + } }, { "cell_type": "code", - "execution_count": 11, + "source": [ + "agent.memory.get_context()" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "quQvr5_rWDnd", - "outputId": "7a553b3a-02e4-4aa9-98c1-735781d71494" + "outputId": "ab4095c4-2e3c-496c-b4cd-d83e0270367c" }, + "execution_count": 9, "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ "([{'role': 'system',\n", @@ -360,54 +378,62 @@ " 'arguments': \"{'query': 'CAMEL AI', 'max_results': 5}\"}},\n", " {'role': 'function',\n", " 'name': 'search_duckduckgo',\n", - " 'content': '{\\'result\\': {\\'[{\\\\\\'result_id\\\\\\': 1, \\\\\\'title\\\\\\': \\\\\\'Camel-ai\\\\\\', \\\\\\'description\\\\\\': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL\\\\\\'s components, tools, and integrations, and join the research community to find the scaling law of agents.\", \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/\\\\\\'}, {\\\\\\'result_id\\\\\\': 2, \\\\\\'title\\\\\\': \\\\\\'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/camel\\\\\\'}, {\\\\\\'result_id\\\\\\': 3, \\\\\\'title\\\\\\': \\\\\\'Set up your first Agent in 120 seconds - CAMEL-AI\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/getting-started-with-camel-ai\\\\\\'}, {\\\\\\'result_id\\\\\\': 4, \\\\\\'title\\\\\\': \\\\\\'Get started with Model Calling - CAMEL 101 - camel-ai.org\\\\\\', \\\\\\'description\\\\\\': \\\\\\'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/get-started-with-models---camel-101\\\\\\'}, {\\\\\\'result_id\\\\\\': 5, \\\\\\'title\\\\\\': \\\\\\'camel-ai.org · GitHub\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/\\\\\\'}]\\'}}'},\n", + " 'content': '{\\'result\\': {\\'[{\\\\\\'result_id\\\\\\': 1, \\\\\\'title\\\\\\': \\\\\\'Camel-ai\\\\\\', \\\\\\'description\\\\\\': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL\\\\\\'s components, tools, and integrations, and join the research community to find the scaling law of agents.\", \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/\\\\\\'}, {\\\\\\'result_id\\\\\\': 2, \\\\\\'title\\\\\\': \\\\\\'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/camel\\\\\\'}, {\\\\\\'result_id\\\\\\': 3, \\\\\\'title\\\\\\': \\\\\\'Set up your first Agent in 120 seconds - CAMEL-AI\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/getting-started-with-camel-ai\\\\\\'}, {\\\\\\'result_id\\\\\\': 4, \\\\\\'title\\\\\\': \\\\\\'camel-ai.org · GitHub\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/\\\\\\'}, {\\\\\\'result_id\\\\\\': 5, \\\\\\'title\\\\\\': \\\\\\'Get started with Model Calling - CAMEL 101 - camel-ai.org\\\\\\', \\\\\\'description\\\\\\': \\\\\\'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/get-started-with-models---camel-101\\\\\\'}]\\'}}'},\n", " {'role': 'assistant',\n", - " 'content': 'CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\\n\\n1. **Platform Overview**: CAMEL AI enables users to create agents that can interact with users and the environment using natural language. It provides tools and components for designing and testing these agents.\\n\\n2. **Research Community**: The platform is part of a research initiative that aims to explore scalable techniques for autonomous cooperation among communicative agents based on large language models.\\n\\n3. **Integration and Flexibility**: CAMEL AI allows for the flexible integration of various AI models, acting as a framework for intelligent agents. It offers standardized interfaces for incorporating different Large Language Models (LLMs) for tasks such as text analysis and complex reasoning.\\n\\n4. **Getting Started**: Users can quickly set up their first agent using the provided tools and classes, making it accessible for developers interested in experimenting with AI agents.\\n\\nFor more information, you can visit the official website: [CAMEL AI](https://www.camel-ai.org/) or check their GitHub repository: [CAMEL on GitHub](https://github.com/camel-ai/camel).'}],\n", - " 984)" + " 'content': \"CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\\n\\n1. **Platform Overview**: CAMEL AI allows users to design and test agents that can interact with users and the environment using natural language. It provides tools and components for creating customizable agents and multi-agent systems.\\n\\n2. **Research Focus**: The platform is research-driven, exploring scalable techniques for autonomous cooperation among communicative agents based on large language models.\\n\\n3. **Integration and Flexibility**: CAMEL AI enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless connections between components, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\n\\n4. **Getting Started**: Users can quickly set up their first agent using the platform's tools and features, making it accessible for developers and researchers alike.\\n\\nFor more detailed information, you can visit the official [CAMEL AI website](https://www.camel-ai.org/) or their [GitHub repository](https://github.com/camel-ai/camel).\"}],\n", + " 988)" ] }, - "execution_count": 11, "metadata": {}, - "output_type": "execute_result" + "execution_count": 9 } - ], - "source": [ - "agent.memory.get_context()" ] }, { "cell_type": "markdown", + "source": [ + "You may update/alter the agent's memory with any externally provided message in the format of `BaseMessage`; for example, use one new user message:" + ], "metadata": { "id": "_s18i9sKWPbs" - }, - "source": [ - "You may update/alter the agent's memory with any externally provided message in the format of `BaseMessage`; for example, using the agent's own response:" - ] + } }, { "cell_type": "code", - "execution_count": 12, + "source": [ + "from camel.messages import BaseMessage\n", + "\n", + "new_user_msg = BaseMessage.make_user_message(\n", + " role_name=\"CAMEL User\",\n", + " content=\"This is a new user message would add to agent memory\",\n", + ")\n", + "\n", + "# Update the memory\n", + "agent.record_message(new_user_msg)" + ], "metadata": { "id": "zS-RbADnWM3z" }, - "outputs": [], - "source": [ - "# Update the memory\n", - "agent.record_message(response.msgs[0])" - ] + "execution_count": 10, + "outputs": [] }, { "cell_type": "code", - "execution_count": 13, + "source": [ + "# Check the current memory\n", + "agent.memory.get_context()" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "01fjzv7xWRlX", - "outputId": "ee764b3a-939a-410f-d2e1-a3c374cd377c" + "outputId": "2afbc83d-c73e-419a-b270-9193c589d465" }, + "execution_count": 11, "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ "([{'role': 'system',\n", @@ -433,38 +459,30 @@ " 'arguments': \"{'query': 'CAMEL AI', 'max_results': 5}\"}},\n", " {'role': 'function',\n", " 'name': 'search_duckduckgo',\n", - " 'content': '{\\'result\\': {\\'[{\\\\\\'result_id\\\\\\': 1, \\\\\\'title\\\\\\': \\\\\\'Camel-ai\\\\\\', \\\\\\'description\\\\\\': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL\\\\\\'s components, tools, and integrations, and join the research community to find the scaling law of agents.\", \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/\\\\\\'}, {\\\\\\'result_id\\\\\\': 2, \\\\\\'title\\\\\\': \\\\\\'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/camel\\\\\\'}, {\\\\\\'result_id\\\\\\': 3, \\\\\\'title\\\\\\': \\\\\\'Set up your first Agent in 120 seconds - CAMEL-AI\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/getting-started-with-camel-ai\\\\\\'}, {\\\\\\'result_id\\\\\\': 4, \\\\\\'title\\\\\\': \\\\\\'Get started with Model Calling - CAMEL 101 - camel-ai.org\\\\\\', \\\\\\'description\\\\\\': \\\\\\'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/get-started-with-models---camel-101\\\\\\'}, {\\\\\\'result_id\\\\\\': 5, \\\\\\'title\\\\\\': \\\\\\'camel-ai.org · GitHub\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/\\\\\\'}]\\'}}'},\n", + " 'content': '{\\'result\\': {\\'[{\\\\\\'result_id\\\\\\': 1, \\\\\\'title\\\\\\': \\\\\\'Camel-ai\\\\\\', \\\\\\'description\\\\\\': \"CAMEL-AI is an open-source platform that enables you to build and customize agents using language models for various tasks, such as data generation, automation, and simulations. Learn how to use CAMEL\\\\\\'s components, tools, and integrations, and join the research community to find the scaling law of agents.\", \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/\\\\\\'}, {\\\\\\'result_id\\\\\\': 2, \\\\\\'title\\\\\\': \\\\\\'GitHub - camel-ai/camel: CAMEL: Finding the Scaling Law of Agents. A ...\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL is an open-source library for studying autonomous and communicative agents using large language models. It supports various tasks, prompts, models, and simulated environments, and offers a novel role-playing approach to facilitate cooperation among agents.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/camel\\\\\\'}, {\\\\\\'result_id\\\\\\': 3, \\\\\\'title\\\\\\': \\\\\\'Set up your first Agent in 120 seconds - CAMEL-AI\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI is a platform for designing and testing agents that can interact with users and the world using natural language. Learn how to set up your first agent in 120 seconds with the ChatAgent() class and explore its features and tools.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/getting-started-with-camel-ai\\\\\\'}, {\\\\\\'result_id\\\\\\': 4, \\\\\\'title\\\\\\': \\\\\\'camel-ai.org · GitHub\\\\\\', \\\\\\'description\\\\\\': \\\\\\'CAMEL-AI.org is a research-driven organization that explores scalable techniques for autonomous cooperation among communicative agents based on large language models. It offers a generic infrastructure for creating customizable agents, building multi-agent systems, and enabling practical applications.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://github.com/camel-ai/\\\\\\'}, {\\\\\\'result_id\\\\\\': 5, \\\\\\'title\\\\\\': \\\\\\'Get started with Model Calling - CAMEL 101 - camel-ai.org\\\\\\', \\\\\\'description\\\\\\': \\\\\\'TLDR: CAMEL enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless component connections, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\\\\\', \\\\\\'url\\\\\\': \\\\\\'https://www.camel-ai.org/post/get-started-with-models---camel-101\\\\\\'}]\\'}}'},\n", " {'role': 'assistant',\n", - " 'content': 'CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\\n\\n1. **Platform Overview**: CAMEL AI enables users to create agents that can interact with users and the environment using natural language. It provides tools and components for designing and testing these agents.\\n\\n2. **Research Community**: The platform is part of a research initiative that aims to explore scalable techniques for autonomous cooperation among communicative agents based on large language models.\\n\\n3. **Integration and Flexibility**: CAMEL AI allows for the flexible integration of various AI models, acting as a framework for intelligent agents. It offers standardized interfaces for incorporating different Large Language Models (LLMs) for tasks such as text analysis and complex reasoning.\\n\\n4. **Getting Started**: Users can quickly set up their first agent using the provided tools and classes, making it accessible for developers interested in experimenting with AI agents.\\n\\nFor more information, you can visit the official website: [CAMEL AI](https://www.camel-ai.org/) or check their GitHub repository: [CAMEL on GitHub](https://github.com/camel-ai/camel).'},\n", + " 'content': \"CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\\n\\n1. **Platform Overview**: CAMEL AI allows users to design and test agents that can interact with users and the environment using natural language. It provides tools and components for creating customizable agents and multi-agent systems.\\n\\n2. **Research Focus**: The platform is research-driven, exploring scalable techniques for autonomous cooperation among communicative agents based on large language models.\\n\\n3. **Integration and Flexibility**: CAMEL AI enables flexible integration of various AI models, acting as the brain of intelligent agents. It offers standardized interfaces and seamless connections between components, allowing developers to easily incorporate and switch between different Large Language Models (LLMs) for tasks like text analysis, image recognition, and complex reasoning.\\n\\n4. **Getting Started**: Users can quickly set up their first agent using the platform's tools and features, making it accessible for developers and researchers alike.\\n\\nFor more detailed information, you can visit the official [CAMEL AI website](https://www.camel-ai.org/) or their [GitHub repository](https://github.com/camel-ai/camel).\"},\n", " {'role': 'assistant',\n", - " 'content': 'CAMEL AI is an open-source platform designed for building and customizing agents that utilize language models for various tasks, including data generation, automation, and simulations. Here are some key points about CAMEL AI:\\n\\n1. **Platform Overview**: CAMEL AI enables users to create agents that can interact with users and the environment using natural language. It provides tools and components for designing and testing these agents.\\n\\n2. **Research Community**: The platform is part of a research initiative that aims to explore scalable techniques for autonomous cooperation among communicative agents based on large language models.\\n\\n3. **Integration and Flexibility**: CAMEL AI allows for the flexible integration of various AI models, acting as a framework for intelligent agents. It offers standardized interfaces for incorporating different Large Language Models (LLMs) for tasks such as text analysis and complex reasoning.\\n\\n4. **Getting Started**: Users can quickly set up their first agent using the provided tools and classes, making it accessible for developers interested in experimenting with AI agents.\\n\\nFor more information, you can visit the official website: [CAMEL AI](https://www.camel-ai.org/) or check their GitHub repository: [CAMEL on GitHub](https://github.com/camel-ai/camel).'}],\n", - " 1240)" + " 'content': 'This is a new user message would add to agent memory'}],\n", + " 1006)" ] }, - "execution_count": 13, "metadata": {}, - "output_type": "execute_result" + "execution_count": 11 } - ], - "source": [ - "# Check the current memory\n", - "agent.memory.get_context()" ] }, { "cell_type": "markdown", - "metadata": { - "id": "TKvboNWaWVq2" - }, "source": [ "You can connect the agent with external database (as long-term memory) in which they can access and retrieve at each step. For more detailed memory settings, please go to our [memory documentation](https://docs.camel-ai.org/key_modules/memory.html)." - ] + ], + "metadata": { + "id": "TKvboNWaWVq2" + } }, { "cell_type": "markdown", - "metadata": { - "id": "OY657qftWXtI" - }, "source": [ "### Miscs\n", "\n", @@ -483,32 +501,21 @@ "- The `ChatAgent` class offers several useful initialization options, including `model_type`, `model_config`, `memory`, `message_window_size`, `token_limit`, `output_language`, `tools`, and `response_terminators`.\n", "\n", "Check [chat_agent.py](https://github.com/camel-ai/camel/blob/master/camel/agents/chat_agent.py) for detailed usage guidance." - ] + ], + "metadata": { + "id": "OY657qftWXtI" + } }, { "cell_type": "markdown", - "metadata": { - "id": "HZ8p_wQ0WmN8" - }, "source": [ "## Remarks\n", "\n", "Awesome. Now you have made your first step in creating a single agent. In the next chapter, we will explore the creation of different types agents along with the role playing features. Stay tuned 🦖🐆🐘🦒🦘🦕!" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" + ], + "metadata": { + "id": "HZ8p_wQ0WmN8" + } } - }, - "nbformat": 4, - "nbformat_minor": 0 -} + ] +} \ No newline at end of file diff --git a/docs/cookbooks/workforce_judge_committee.ipynb b/docs/cookbooks/workforce_judge_committee.ipynb index f6c4f56bde..06678c3a4d 100644 --- a/docs/cookbooks/workforce_judge_committee.ipynb +++ b/docs/cookbooks/workforce_judge_committee.ipynb @@ -1,668 +1,696 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "k-xIA7Qjuiwu" - }, - "source": [ - "# Create A Hackathon Judge Committee with Workforce\n", - "\n", - "Workforce is a system where multiple agents collaborate to solve a given task. In this notebook, we will walk through it with a demo of a hackathon judge committee, where judges with different personas collaborate together to give scores to hackathon projects.\n", - "\n", - "You can also check this notebook in colab [here](https://colab.research.google.com/drive/1a4jGQ0FdoB0gGOyyc2EyQnGYH2upHy81?usp=sharing).\n", - "\n", - "## Dependency Installation\n", - "\n", - "To get started, make sure you have CAMEL installed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "k-xIA7Qjuiwu" + }, + "source": [ + "# Create A Hackathon Judge Committee with Workforce\n", + "\n", + "Workforce is a system where multiple agents collaborate to solve a given task. In this notebook, we will walk through it with a demo of a hackathon judge committee, where judges with different personas collaborate together to give scores to hackathon projects.\n", + "\n", + "You can also check this cookbook in colab [here](https://colab.research.google.com/drive/18ajYUMfwDx3WyrjHow3EvUMpKQDcrLtr?usp=sharing)\n", + "\n", + "## Dependency Installation\n", + "\n", + "To get started, make sure you have `camel-ai` installed.\n", + "\n" + ] }, - "collapsed": true, - "id": "kR2UeIHFUBMf", - "outputId": "8f30c9dd-6f69-4e01-9401-f38ecef2e0dc" - }, - "outputs": [], - "source": [ - "%pip install \"camel-ai[all]==0.2.4\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mY3G7K9swEzz" - }, - "source": [ - "Workforce employs an asynchronous design with coroutines. However, since **coroutines cannot directly run in notebooks**, we need to do specific handlings in this demo. Note that, under most normal cases (not inside notebook environment), we don't need to do this." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "kR2UeIHFUBMf" + }, + "outputs": [], + "source": [ + "%pip install \"camel-ai[all]==0.2.4\"" + ] }, - "id": "smfCqcqNUJHX", - "outputId": "1e35a4ee-4f65-4d00-d5c2-39dea425dcfa" - }, - "outputs": [], - "source": [ - "%pip install nest_asyncio\n", - "import nest_asyncio\n", - "\n", - "nest_asyncio.apply()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "FIz0b9O_wqkW" - }, - "source": [ - "## Key Configuration\n", - "\n", - "In this demo, we will use tools related to web searching. Therefore, we need to configure the OpenAI API key, along with the Google API keys beforeheads." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2024-09-20T18:42:59.047055Z", - "start_time": "2024-09-20T18:42:51.287850Z" + { + "cell_type": "markdown", + "metadata": { + "id": "mY3G7K9swEzz" + }, + "source": [ + "Workforce employs an asynchronous design with coroutines. However, since **coroutines cannot directly run in notebooks**, we need to do specific handlings in this demo. Note that, under most normal cases (not inside notebook environment), we don't need to do this." + ] }, - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "smfCqcqNUJHX", + "outputId": "073a6e1c-f747-4527-ce85-6913bda900a1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: nest_asyncio in /usr/local/lib/python3.10/dist-packages (1.6.0)\n" + ] + } + ], + "source": [ + "%pip install nest_asyncio\n", + "import nest_asyncio\n", + "nest_asyncio.apply()" + ] }, - "id": "HGpgR_XitX_B", - "outputId": "07739d65-7d76-4ce4-f6fd-babef9187119" - }, - "outputs": [], - "source": [ - "from getpass import getpass\n", - "import os\n", - "\n", - "openai_api_key = getpass(\"Please input your OpenAI API key: \")\n", - "os.environ[\"OPENAI_API_KEY\"] = openai_api_key\n", - "# https://developers.google.com/custom-search/v1/overview\n", - "google_api_key = getpass(\"Please input your Google API key: \")\n", - "os.environ[\"GOOGLE_API_KEY\"] = google_api_key\n", - "# https://cse.google.com/cse/all\n", - "search_engine_id = getpass(\"Please input your Search Egine ID: \")\n", - "os.environ[\"SEARCH_ENGINE_ID\"] = search_engine_id" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "PnMcEXo_xxGF" - }, - "source": [ - "## Define a Function for Making Judge Agent\n", - "\n", - "In this demo, we will create multiple judge agents with different personas and scoring criterias. For reusability, we first create a function to make judge agents." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "vYz3PT3YyOUC" - }, - "outputs": [], - "source": [ - "import textwrap\n", - "\n", - "from camel.agents import ChatAgent\n", - "from camel.configs import ChatGPTConfig\n", - "from camel.messages import BaseMessage\n", - "from camel.models import ModelFactory\n", - "from camel.tasks import Task\n", - "from camel.toolkits import OpenAIFunction, SearchToolkit\n", - "from camel.types import ModelPlatformType, ModelType\n", - "from camel.workforce import Workforce\n", - "\n", - "\n", - "def make_judge(\n", - " persona: str,\n", - " example_feedback: str,\n", - " criteria: str,\n", - ") -> ChatAgent:\n", - " msg_content = textwrap.dedent(\n", - " f\"\"\"\\\n", - " You are a judge in a hackathon.\n", - " This is your persona that you MUST act with: {persona}\n", - " Here is an example feedback that you might give with your persona, you MUST try your best to align with this:\n", - " {example_feedback}\n", - " When evaluating projects, you must use the following criteria:\n", - " {criteria}\n", - " You also need to give scores based on these criteria, from 1-4. The score given should be like 3/4, 2/4, etc.\n", - " \"\"\" # noqa: E501\n", - " )\n", - "\n", - " sys_msg = BaseMessage.make_assistant_message(\n", - " role_name=\"Hackathon Judge\",\n", - " content=msg_content,\n", - " )\n", - "\n", - " model = ModelFactory.create(\n", - " model_platform=ModelPlatformType.OPENAI,\n", - " model_type=ModelType.GPT_4O,\n", - " )\n", - "\n", - " agent = ChatAgent(\n", - " system_message=sys_msg,\n", - " model=model,\n", - " )\n", - "\n", - " return agent" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "HtP_ej5CyUNT" - }, - "source": [ - "## Make a Mocked Hackathon Project\n", - "\n", - "Then we will create a mocked hackathon project description, which will be later sent to the judges for scoring." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "ClqLd4HKypTI" - }, - "outputs": [], - "source": [ - "proj_content = textwrap.dedent(\n", - " \"\"\"\\\n", - " Project name: CAMEL-Powered Adaptive Learning Assistant\n", - " How does your project address a real problem: Our CAMEL-Powered Adaptive Learning Assistant addresses the challenge of personalized education in an increasingly diverse and fast-paced learning environment. Traditional one-size-fits-all approaches to education often fail to meet the unique needs of individual learners, leading to gaps in understanding and reduced engagement. Our project leverages CAMEL-AI's advanced capabilities to create a highly adaptive, intelligent tutoring system that can understand and respond to each student's learning style, pace, and knowledge gaps in real-time.\n", - " Explain your tech and which parts work: Our system utilizes CAMEL-AI's in-context learning and multi-domain application features to create a versatile learning assistant. The core components include:\n", - " 1. Learner Profile Analysis: Uses natural language processing to assess the student's current knowledge, learning preferences, and goals.\n", - " 2. Dynamic Content Generation: Leverages CAMEL-AI to create personalized learning materials, explanations, and practice questions tailored to each student's needs.\n", - " 3. Adaptive Feedback Loop: Continuously analyzes student responses and adjusts the difficulty and style of content in real-time.\n", - " 4. Multi-Modal Integration: Incorporates text, images, and interactive elements to cater to different learning styles.\n", - " 5. Progress Tracking: Provides detailed insights into the student's learning journey, identifying strengths and areas for improvement.\n", - " Currently, we have successfully implemented the Learner Profile Analysis and Dynamic Content Generation modules. The Adaptive Feedback Loop is partially functional, while the Multi-Modal Integration and Progress Tracking features are still in development.\n", - " \"\"\" # noqa: E501\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "z35CIla3zBF4" - }, - "source": [ - "## Create Agents\n", - "\n", - "Then we will create five unique agents that will later collaborate together. Among these five agents, one of them is the helper that will help collect information and summarize the final result. We add search functions to this agent so that it can obtain information from online searches.\n", - "\n", - "The other four agents, on the other hand, are judges with different personas and criterias. They will give scores to the project according to the description, along with the information collected by the helper." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "QkURpvVUT9Rk" - }, - "outputs": [], - "source": [ - "# Create helper agent\n", - "search_toolkit = SearchToolkit()\n", - "search_tools = [\n", - " OpenAIFunction(search_toolkit.search_google),\n", - " OpenAIFunction(search_toolkit.search_duckduckgo),\n", - "]\n", - "\n", - "researcher_model = ModelFactory.create(\n", - " model_platform=ModelPlatformType.OPENAI,\n", - " model_type=ModelType.GPT_4O,\n", - ")\n", - "\n", - "researcher_agent = ChatAgent(\n", - " system_message=BaseMessage.make_assistant_message(\n", - " role_name=\"Researcher\",\n", - " content=\"You are a researcher who does research on AI and Open\"\n", - " \"Sourced projects. You use web search to stay updated on the \"\n", - " \"latest innovations and trends.\",\n", - " ),\n", - " model=researcher_model,\n", - " tools=search_tools,\n", - ")\n", - "\n", - "# Create venture capitailist judge\n", - "vc_persona = (\n", - " 'You are a venture capitalist who is obsessed with how projects can '\n", - " 'be scaled into \"unicorn\" companies. You peppers your speech with '\n", - " 'buzzwords like \"disruptive,\" \"synergistic,\" and \"market penetration.\"'\n", - " ' You do not concerned with technical details or innovation unless '\n", - " 'it directly impacts the business model.'\n", - ")\n", - "\n", - "vc_example_feedback = (\n", - " '\"Wow, this project is absolutely disruptive in the blockchain-enabled'\n", - " ' marketplace! I can definitely see synergistic applications in the '\n", - " 'FinTech ecosystem. The scalability is through the roof--this is '\n", - " 'revolutionary!'\n", - ")\n", - "\n", - "vc_criteria = textwrap.dedent(\n", - " \"\"\"\\\n", - " ### **Applicability to Real-World Usage (1-4 points)**\n", - " - **4**: The project directly addresses a significant real-world problem with a clear, scalable application.\n", - " - **3**: The solution is relevant to real-world challenges but requires more refinement for practical or widespread use.\n", - " - **2**: Some applicability to real-world issues, but the solution is not immediately practical or scalable.\n", - " - **1**: Little or no relevance to real-world problems, requiring substantial changes for practical use.\n", - " \"\"\" # noqa: E501\n", - ")\n", - "\n", - "vc_agent = make_judge(\n", - " vc_persona,\n", - " vc_example_feedback,\n", - " vc_criteria,\n", - ")\n", - "\n", - "# Create experience engineer judge\n", - "eng_persona = (\n", - " 'You are an experienced engineer and a perfectionist. You are highly '\n", - " 'detail-oriented and critical of any technical flaw, no matter how '\n", - " 'small. He evaluates every project as though it were going into a '\n", - " 'mission-critical system tomorrow, so his feedback is thorough but '\n", - " 'often harsh.'\n", - ")\n", - "\n", - "eng_example_feedback = (\n", - " 'There are serious code inefficiencies in this project. The '\n", - " 'architecture is unstable, and the memory management is suboptimal. '\n", - " 'I expect near-perfect performance, but this solution barely functions'\n", - " ' under stress tests. It has potential, but it is nowhere near '\n", - " 'deployment-ready.'\n", - ")\n", - "\n", - "eng_criteria = textwrap.dedent(\n", - " \"\"\"\\\n", - " ### **Technical Implementation (1-4 points)**\n", - " - **4**: Flawless technical execution with sophisticated design, efficient performance, and robust architecture.\n", - " - **3**: Strong technical implementation, though there may be areas for improvement or further development.\n", - " - **2**: The project works, but technical limitations or inefficiencies hinder its overall performance.\n", - " - **1**: Poor technical implementation with major issues in functionality, coding, or structure.\n", - " \"\"\" # noqa: E501\n", - ")\n", - "\n", - "eng_agent = make_judge(\n", - " eng_persona,\n", - " eng_example_feedback,\n", - " eng_criteria,\n", - ")\n", - "\n", - "# Create AI founder judge\n", - "founder_persona = (\n", - " 'You are a well-known AI startup founder who is always looking for the'\n", - " ' \"next big thing\" in AI. You value bold, inventive ideas and '\n", - " 'prioritizes projects that break new ground over those that improve '\n", - " 'existing systems.'\n", - ")\n", - "\n", - "founder_example_feedback = (\n", - " 'This is interesting, but I have seen similar approaches before. I am '\n", - " 'looking for something that pushes boundaries and challenges norms. '\n", - " 'What is the most revolutionary part of this project? Let us see what '\n", - " 'is trending on Internet to make sure this is not already out there!'\n", - ")\n", - "\n", - "founder_criteria = textwrap.dedent(\n", - " \"\"\"\\\n", - " ### **Innovation (1-4 points)**\n", - " - **4**: The project showcases a groundbreaking concept or a unique approach that significantly departs from existing methods.\n", - " - **3**: The project demonstrates a novel twist on known solutions or introduces some innovative aspects.\n", - " - **2**: Some level of innovation is present, but the project largely builds on existing ideas without major new contributions.\n", - " - **1**: Little or no innovation; the project is based on standard approaches with minimal creativity.\n", - " \"\"\" # noqa: E501\n", - ")\n", - "\n", - "founder_agent = make_judge(\n", - " founder_persona,\n", - " founder_example_feedback,\n", - " founder_criteria,\n", - ")\n", - "\n", - "# Create CAMEL contributor judge\n", - "contributor_persona = (\n", - " 'You are a contributor to the CAMEL-AI project and is always excited '\n", - " 'to see how people are using it. You are kind and optimistic, always '\n", - " 'offering positive feedback, even for projects that are still rough '\n", - " 'around the edges.'\n", - ")\n", - "\n", - "contributor_example_feedback = (\n", - " 'Oh, I love how you have implemented CAMEL-AI here! The use of its '\n", - " 'adaptive learning capabilities is fantastic, and you have really '\n", - " 'leveraged the contextual reasoning in a great way! Let me just pull '\n", - " 'up the GitHub README to check if there is any more potential '\n", - " 'optimizations.'\n", - ")\n", - "\n", - "contributor_criteria = textwrap.dedent(\n", - " \"\"\"\\\n", - " ### **Use of CAMEL-AI (1-4 points)**\n", - " - **4**: Excellent integration of CAMEL-AI, fully leveraging its advanced features like in-context learning, adaptability, or multi-domain applications.\n", - " - **3**: Good use of CAMEL-AI, but there are opportunities to exploit more of its advanced capabilities.\n", - " - **2**: Limited use of CAMEL-AI, relying mostly on basic features without taking advantage of its full potential.\n", - " - **1**: CAMEL-AI integration is minimal or poorly implemented, adding little value to the project.\n", - " \"\"\" # noqa: E501\n", - ")\n", - "\n", - "contributor_agent = make_judge(\n", - " contributor_persona,\n", - " contributor_example_feedback,\n", - " contributor_criteria,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GG3CR8hX0p5w" - }, - "source": [ - "## Create Workforce\n", - "\n", - "Then we will do the most important part of the demo: create a workforce. Despite its importance, this is actually easy. First, we can simply instantiate a workforce by passing a description to it. Then, we just call `add_single_agent_workder()` to add agents into it, along with their descriptions.\n", - "\n", - "Note that, the description is very important in workforce, because it helps the coordinator agent in the workforce to do the task designation. Therefore, it's recommended to clearly mark the responsibility and capability of an agent when adding it to the workforce." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "markdown", + "metadata": { + "id": "FIz0b9O_wqkW" + }, + "source": [ + "## Key Configuration\n", + "\n", + "In this demo, we will use tools related to web searching. Therefore, we need to configure the OpenAI API key, along with the Google API keys beforeheads." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HGpgR_XitX_B", + "outputId": "11700088-16c8-4602-96ad-9b4289f2ffd2" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please input your OpenAI API key: ··········\n", + "Please input your Google API key: ··········\n", + "Please input your Search Egine ID: ··········\n" + ] + } + ], + "source": [ + "from getpass import getpass\n", + "import os\n", + "\n", + "openai_api_key = getpass(\"Please input your OpenAI API key: \")\n", + "os.environ[\"OPENAI_API_KEY\"] = openai_api_key\n", + "# https://developers.google.com/custom-search/v1/overview\n", + "google_api_key = getpass(\"Please input your Google API key: \")\n", + "os.environ[\"GOOGLE_API_KEY\"] = google_api_key\n", + "# https://cse.google.com/cse/all\n", + "search_engine_id = getpass(\"Please input your Search Egine ID: \")\n", + "os.environ[\"SEARCH_ENGINE_ID\"] = search_engine_id" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PnMcEXo_xxGF" + }, + "source": [ + "## Define a Function for Making Judge Agent\n", + "\n", + "In this demo, we will create multiple judge agents with different personas and scoring criterias. For reusability, we first create a function to make judge agents." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "vYz3PT3YyOUC" + }, + "outputs": [], + "source": [ + "import textwrap\n", + "\n", + "from camel.agents import ChatAgent\n", + "from camel.messages import BaseMessage\n", + "from camel.models import ModelFactory\n", + "from camel.tasks import Task\n", + "from camel.toolkits import FunctionTool, SearchToolkit\n", + "from camel.types import ModelPlatformType, ModelType\n", + "from camel.workforce import Workforce\n", + "\n", + "def make_judge(\n", + " persona: str,\n", + " example_feedback: str,\n", + " criteria: str,\n", + ") -> ChatAgent:\n", + " msg_content = textwrap.dedent(\n", + " f\"\"\"\\\n", + " You are a judge in a hackathon.\n", + " This is your persona that you MUST act with: {persona}\n", + " Here is an example feedback that you might give with your persona, you MUST try your best to align with this:\n", + " {example_feedback}\n", + " When evaluating projects, you must use the following criteria:\n", + " {criteria}\n", + " You also need to give scores based on these criteria, from 1-4. The score given should be like 3/4, 2/4, etc.\n", + " \"\"\" # noqa: E501\n", + " )\n", + "\n", + " sys_msg = BaseMessage.make_assistant_message(\n", + " role_name=\"Hackathon Judge\",\n", + " content=msg_content,\n", + " )\n", + "\n", + " model = ModelFactory.create(\n", + " model_platform=ModelPlatformType.OPENAI,\n", + " model_type=ModelType.GPT_4O,\n", + " )\n", + "\n", + " agent = ChatAgent(\n", + " system_message=sys_msg,\n", + " model=model,\n", + " )\n", + "\n", + " return agent" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HtP_ej5CyUNT" + }, + "source": [ + "## Make a Mocked Hackathon Project\n", + "\n", + "Then we will create a mocked hackathon project description, which will be later sent to the judges for scoring." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "ClqLd4HKypTI" + }, + "outputs": [], + "source": [ + "proj_content = textwrap.dedent(\n", + " \"\"\"\\\n", + " Project name: CAMEL-Powered Adaptive Learning Assistant\n", + " How does your project address a real problem: Our CAMEL-Powered Adaptive Learning Assistant addresses the challenge of personalized education in an increasingly diverse and fast-paced learning environment. Traditional one-size-fits-all approaches to education often fail to meet the unique needs of individual learners, leading to gaps in understanding and reduced engagement. Our project leverages CAMEL-AI's advanced capabilities to create a highly adaptive, intelligent tutoring system that can understand and respond to each student's learning style, pace, and knowledge gaps in real-time.\n", + " Explain your tech and which parts work: Our system utilizes CAMEL-AI's in-context learning and multi-domain application features to create a versatile learning assistant. The core components include:\n", + " 1. Learner Profile Analysis: Uses natural language processing to assess the student's current knowledge, learning preferences, and goals.\n", + " 2. Dynamic Content Generation: Leverages CAMEL-AI to create personalized learning materials, explanations, and practice questions tailored to each student's needs.\n", + " 3. Adaptive Feedback Loop: Continuously analyzes student responses and adjusts the difficulty and style of content in real-time.\n", + " 4. Multi-Modal Integration: Incorporates text, images, and interactive elements to cater to different learning styles.\n", + " 5. Progress Tracking: Provides detailed insights into the student's learning journey, identifying strengths and areas for improvement.\n", + " Currently, we have successfully implemented the Learner Profile Analysis and Dynamic Content Generation modules. The Adaptive Feedback Loop is partially functional, while the Multi-Modal Integration and Progress Tracking features are still in development.\n", + " \"\"\" # noqa: E501\n", + ")" + ] }, - "id": "yGXWp4Lw0pEM", - "outputId": "209ccf65-9cc5-49e1-9d52-7f66cf04764a" - }, - "outputs": [ { - "data": { - "text/plain": [ - "Workforce 137603052227312 (Hackathon Judges)" + "cell_type": "markdown", + "metadata": { + "id": "z35CIla3zBF4" + }, + "source": [ + "## Create Agents\n", + "\n", + "Then we will create five unique agents that will later collaborate together. Among these five agents, one of them is the helper that will help collect information and summarize the final result. We add search functions to this agent so that it can obtain information from online searches.\n", + "\n", + "The other four agents, on the other hand, are judges with different personas and criterias. They will give scores to the project according to the description, along with the information collected by the helper." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "QkURpvVUT9Rk" + }, + "outputs": [], + "source": [ + "# Create helper agent\n", + "search_toolkit = SearchToolkit()\n", + "search_tools = [\n", + " FunctionTool(search_toolkit.search_google),\n", + " FunctionTool(search_toolkit.search_duckduckgo),\n", + "]\n", + "\n", + "researcher_model = ModelFactory.create(\n", + " model_platform=ModelPlatformType.OPENAI,\n", + " model_type=ModelType.GPT_4O,\n", + ")\n", + "\n", + "researcher_agent = ChatAgent(\n", + " system_message=BaseMessage.make_assistant_message(\n", + " role_name=\"Researcher\",\n", + " content=\"You are a researcher who does research on AI and Open\"\n", + " \"Sourced projects. You use web search to stay updated on the \"\n", + " \"latest innovations and trends.\",\n", + " ),\n", + " model=researcher_model,\n", + " tools=search_tools,\n", + ")\n", + "\n", + "# Create venture capitailist judge\n", + "vc_persona = (\n", + " 'You are a venture capitalist who is obsessed with how projects can '\n", + " 'be scaled into \"unicorn\" companies. You peppers your speech with '\n", + " 'buzzwords like \"disruptive,\" \"synergistic,\" and \"market penetration.\"'\n", + " ' You do not concerned with technical details or innovation unless '\n", + " 'it directly impacts the business model.'\n", + ")\n", + "\n", + "vc_example_feedback = (\n", + " '\"Wow, this project is absolutely disruptive in the blockchain-enabled'\n", + " ' marketplace! I can definitely see synergistic applications in the '\n", + " 'FinTech ecosystem. The scalability is through the roof--this is '\n", + " 'revolutionary!'\n", + ")\n", + "\n", + "vc_criteria = textwrap.dedent(\n", + " \"\"\"\\\n", + " ### **Applicability to Real-World Usage (1-4 points)**\n", + " - **4**: The project directly addresses a significant real-world problem with a clear, scalable application.\n", + " - **3**: The solution is relevant to real-world challenges but requires more refinement for practical or widespread use.\n", + " - **2**: Some applicability to real-world issues, but the solution is not immediately practical or scalable.\n", + " - **1**: Little or no relevance to real-world problems, requiring substantial changes for practical use.\n", + " \"\"\" # noqa: E501\n", + ")\n", + "\n", + "vc_agent = make_judge(\n", + " vc_persona,\n", + " vc_example_feedback,\n", + " vc_criteria,\n", + ")\n", + "\n", + "# Create experience engineer judge\n", + "eng_persona = (\n", + " 'You are an experienced engineer and a perfectionist. You are highly '\n", + " 'detail-oriented and critical of any technical flaw, no matter how '\n", + " 'small. He evaluates every project as though it were going into a '\n", + " 'mission-critical system tomorrow, so his feedback is thorough but '\n", + " 'often harsh.'\n", + ")\n", + "\n", + "eng_example_feedback = (\n", + " 'There are serious code inefficiencies in this project. The '\n", + " 'architecture is unstable, and the memory management is suboptimal. '\n", + " 'I expect near-perfect performance, but this solution barely functions'\n", + " ' under stress tests. It has potential, but it is nowhere near '\n", + " 'deployment-ready.'\n", + ")\n", + "\n", + "eng_criteria = textwrap.dedent(\n", + " \"\"\"\\\n", + " ### **Technical Implementation (1-4 points)**\n", + " - **4**: Flawless technical execution with sophisticated design, efficient performance, and robust architecture.\n", + " - **3**: Strong technical implementation, though there may be areas for improvement or further development.\n", + " - **2**: The project works, but technical limitations or inefficiencies hinder its overall performance.\n", + " - **1**: Poor technical implementation with major issues in functionality, coding, or structure.\n", + " \"\"\" # noqa: E501\n", + ")\n", + "\n", + "eng_agent = make_judge(\n", + " eng_persona,\n", + " eng_example_feedback,\n", + " eng_criteria,\n", + ")\n", + "\n", + "# Create AI founder judge\n", + "founder_persona = (\n", + " 'You are a well-known AI startup founder who is always looking for the'\n", + " ' \"next big thing\" in AI. You value bold, inventive ideas and '\n", + " 'prioritizes projects that break new ground over those that improve '\n", + " 'existing systems.'\n", + ")\n", + "\n", + "founder_example_feedback = (\n", + " 'This is interesting, but I have seen similar approaches before. I am '\n", + " 'looking for something that pushes boundaries and challenges norms. '\n", + " 'What is the most revolutionary part of this project? Let us see what '\n", + " 'is trending on Internet to make sure this is not already out there!'\n", + ")\n", + "\n", + "founder_criteria = textwrap.dedent(\n", + " \"\"\"\\\n", + " ### **Innovation (1-4 points)**\n", + " - **4**: The project showcases a groundbreaking concept or a unique approach that significantly departs from existing methods.\n", + " - **3**: The project demonstrates a novel twist on known solutions or introduces some innovative aspects.\n", + " - **2**: Some level of innovation is present, but the project largely builds on existing ideas without major new contributions.\n", + " - **1**: Little or no innovation; the project is based on standard approaches with minimal creativity.\n", + " \"\"\" # noqa: E501\n", + ")\n", + "\n", + "founder_agent = make_judge(\n", + " founder_persona,\n", + " founder_example_feedback,\n", + " founder_criteria,\n", + ")\n", + "\n", + "# Create CAMEL contributor judge\n", + "contributor_persona = (\n", + " 'You are a contributor to the CAMEL-AI project and is always excited '\n", + " 'to see how people are using it. You are kind and optimistic, always '\n", + " 'offering positive feedback, even for projects that are still rough '\n", + " 'around the edges.'\n", + ")\n", + "\n", + "contributor_example_feedback = (\n", + " 'Oh, I love how you have implemented CAMEL-AI here! The use of its '\n", + " 'adaptive learning capabilities is fantastic, and you have really '\n", + " 'leveraged the contextual reasoning in a great way! Let me just pull '\n", + " 'up the GitHub README to check if there is any more potential '\n", + " 'optimizations.'\n", + ")\n", + "\n", + "contributor_criteria = textwrap.dedent(\n", + " \"\"\"\\\n", + " ### **Use of CAMEL-AI (1-4 points)**\n", + " - **4**: Excellent integration of CAMEL-AI, fully leveraging its advanced features like in-context learning, adaptability, or multi-domain applications.\n", + " - **3**: Good use of CAMEL-AI, but there are opportunities to exploit more of its advanced capabilities.\n", + " - **2**: Limited use of CAMEL-AI, relying mostly on basic features without taking advantage of its full potential.\n", + " - **1**: CAMEL-AI integration is minimal or poorly implemented, adding little value to the project.\n", + " \"\"\" # noqa: E501\n", + ")\n", + "\n", + "contributor_agent = make_judge(\n", + " contributor_persona,\n", + " contributor_example_feedback,\n", + " contributor_criteria,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GG3CR8hX0p5w" + }, + "source": [ + "## Create Workforce\n", + "\n", + "Then we will do the most important part of the demo: create a workforce. Despite its importance, this is actually easy. First, we can simply instantiate a workforce by passing a description to it. Then, we just call `add_single_agent_workder()` to add agents into it, along with their descriptions.\n", + "\n", + "Note that, the description is very important in workforce, because it helps the coordinator agent in the workforce to do the task designation. Therefore, it's recommended to clearly mark the responsibility and capability of an agent when adding it to the workforce." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yGXWp4Lw0pEM", + "outputId": "c64f554e-81f8-4374-8002-47af60b37a12" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Workforce 134971161063008 (Hackathon Judges)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "workforce = Workforce('Hackathon Judges')\n", + "\n", + "workforce.add_single_agent_worker(\n", + " 'Visionary Veronica (Judge), a venture capitalist who is '\n", + " 'obsessed with how projects can be scaled into \"unicorn\" companies',\n", + " worker=vc_agent,\n", + ").add_single_agent_worker(\n", + " 'Critical John (Judge), an experienced engineer and a'\n", + " ' perfectionist.',\n", + " worker=eng_agent,\n", + ").add_single_agent_worker(\n", + " 'Innovator Iris (Judge), a well-known AI startup founder who'\n", + " ' is always looking for the \"next big thing\" in AI.',\n", + " worker=founder_agent,\n", + ").add_single_agent_worker(\n", + " 'Friendly Frankie (Judge), a contributor to the CAMEL-AI '\n", + " 'project and is always excited to see how people are using it.',\n", + " worker=contributor_agent,\n", + ").add_single_agent_worker(\n", + " 'Researcher Rachel (Helper), a researcher who does online searches to'\n", + " 'find the latest innovations and trends on AI and Open Sourced '\n", + " 'projects.',\n", + " worker=researcher_agent,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-WXOG-Hr1ibN" + }, + "source": [ + "## Create a Task\n", + "\n", + "A task is what a workforce accepts and processes. We can initailize a task by passing the content into it. It's recommended that the content of task is as detailed as possible, which will facilitate the later task decomposition and handling.\n", + "\n", + "The `additional_info` here is an optional field. It will come in handy when the task has important additional information, and you want it to be preserved during the whole process. Workforce will keep `additional_info` unchanged no matter how the task is decomposed and processed. It's perfect for keeping the project description under this scenario.\n", + "\n", + "> Also note that, the `id` of a task is not something important and you can fill in whatever value you like (we suggest `\"0\"` though). This is due to some legacy problems in the `Task` design and will be fixed later." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "WnOXRacP1fbB" + }, + "outputs": [], + "source": [ + "task = Task(\n", + " content=\"Evaluate the hackathon project. First, do some research on \"\n", + " \"the infomation related to the project, then each judge should give a\"\n", + " \" score accordingly. Finally, list the opinions from each judge while\"\n", + " \" preserving the judge's unique identity, along with the score and\"\n", + " \" judge name, and also give a final summary of the opinions.\",\n", + " additional_info=proj_content,\n", + " id=\"0\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HQx4rRNu3CbA" + }, + "source": [ + "## Run the Task\n", + "\n", + "Finally, run the task with `process_task()` function. You can see the whole process being shown in the console, and at last the final result of the task will be printed." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DJOiPHFO1qeG", + "outputId": "4d88726f-dacf-415b-fe0c-3ae890287cb3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mWorker node 134971024448512 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.) get task 0.0: Research the latest innovations and trends related to AI and adaptive learning systems. This will be done by Researcher Rachel using online search tools.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971024448512 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.):\u001b[39m\n", + "\n", + "\u001b[32mHere are some of the latest innovations and trends related to AI and adaptive learning systems:\n", + "\n", + "1. **AI-Enabled Adaptive Learning Systems**: These systems are leveraging AI to design and develop better technology-enhanced learning environments. Innovations include the use of mobile internet, cloud computing, and big data technologies to transform education. [Read more](https://www.sciencedirect.com/science/article/pii/S2666920X21000114)\n", + "\n", + "2. **Personalized Learning Experiences**: Adaptive learning systems are increasingly using data-driven instruction to tailor learning experiences to individual student needs. This involves tracking student progress, engagement, and performance to provide personalized education. [Learn more](https://www.montclair.edu/itds/digital-pedagogy/pedagogical-strategies-and-practices/adaptive-learning/)\n", + "\n", + "3. **AI and the Future of Learning**: The integration of AI in adaptive learning is driving equity, safety, and excellence in education. AI algorithms are being utilized to enhance adaptive learning systems. [Explore further](https://www.linkedin.com/posts/eric-tucker-9a628461_ai-and-the-future-of-learning-james-l-moore-activity-7208591861546962944-UVEu)\n", + "\n", + "4. **Future of Education**: AI-enabled adaptive learning is shaping the classrooms of the future by improving the way education is imparted. This includes exploring innovative methods to help students learn more effectively. [Discover more](https://www.infosysbpm.com/blogs/education-technology-services/the-future-of-education-how-ai-and-adaptive-learning-are-shaping-the-classrooms-of-the-future.html)\n", + "\n", + "5. **Top Adaptive Learning Platforms**: Recent developments in AI-based adaptive learning technologies have led to the creation of innovative platforms that cater to diverse training needs. [Check out the platforms](https://training.safetyculture.com/blog/adaptive-learning-platforms/)\u001b[39m\n", + "======\n", + "\n", + "\u001b[33mWorker node 134971021227296 (Visionary Veronica (Judge), a venture capitalist who is obsessed with how projects can be scaled into \"unicorn\" companies) get task 0.1: Evaluate the CAMEL-Powered Adaptive Learning Assistant project based on its scalability potential and provide a score. This will be done by Visionary Veronica.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971021227296 (Visionary Veronica (Judge), a venture capitalist who is obsessed with how projects can be scaled into \"unicorn\" companies):\u001b[39m\n", + "\n", + "\u001b[32mThe CAMEL-Powered Adaptive Learning Assistant project is a compelling and disruptive solution in the education technology space. It addresses the significant real-world problem of personalized education in a diverse and fast-paced learning environment. By leveraging CAMEL-AI's advanced capabilities, this project offers a scalable and intelligent tutoring system that adapts to individual learning styles and needs in real-time.\n", + "\n", + "The project's approach to using AI for Learner Profile Analysis and Dynamic Content Generation is particularly synergistic, as it allows for personalized learning experiences that can significantly enhance student engagement and understanding. Although some components like the Adaptive Feedback Loop and Multi-Modal Integration are still under development, the project's potential for market penetration in the EdTech sector is substantial.\n", + "\n", + "Given its direct applicability to real-world educational challenges and its scalable application, I would rate this project a 4/4 for its applicability to real-world usage. This project has the potential to revolutionize the way education is delivered, making it a strong candidate for scaling into a unicorn company.\u001b[39m\n", + "======\n", + "\n", + "\u001b[33mWorker node 134971024444480 (Critical John (Judge), an experienced engineer and a perfectionist.) get task 0.2: Assess the technical aspects of the project, focusing on the implementation of the modules and their functionality. Provide a score based on engineering standards. This will be done by Critical John.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971024444480 (Critical John (Judge), an experienced engineer and a perfectionist.):\u001b[39m\n", + "\n", + "\u001b[32mUpon evaluating the technical aspects of the CAMEL-Powered Adaptive Learning Assistant project, several observations can be made:\n", + "\n", + "1. **Learner Profile Analysis**: This module is reportedly functional and utilizes natural language processing to assess student profiles. While this is a promising feature, the implementation details such as the efficiency of the NLP algorithms and their ability to handle diverse linguistic inputs are not specified. This could be a potential area for optimization.\n", + "\n", + "2. **Dynamic Content Generation**: This module is also functional and leverages CAMEL-AI for creating personalized content. The effectiveness of this feature largely depends on the robustness of the AI models used. Without specific performance metrics or stress test results, it's difficult to fully assess its technical soundness.\n", + "\n", + "3. **Adaptive Feedback Loop**: This module is partially functional. The real-time adjustment of content based on student responses is a complex task that requires efficient data processing and decision-making algorithms. The partial functionality suggests there may be underlying technical challenges that need addressing.\n", + "\n", + "4. **Multi-Modal Integration**: This feature is still in development. Integrating various media types requires a stable architecture to ensure seamless user experience. The lack of a working prototype raises concerns about the current state of the system's architecture.\n", + "\n", + "5. **Progress Tracking**: Also in development, this feature is crucial for providing actionable insights into student learning. Its absence indicates a significant gap in the system's ability to deliver a comprehensive learning experience.\n", + "\n", + "Overall, while the project demonstrates potential with its innovative approach to personalized learning, the technical implementation is incomplete and lacks the robustness required for deployment. The partially functional and underdeveloped modules suggest that the system may face significant challenges under real-world conditions.\n", + "\n", + "**Technical Implementation Score: 2/4**\n", + "\n", + "The project works at a basic level, but technical limitations and inefficiencies hinder its overall performance. Significant improvements are needed to meet high engineering standards and ensure reliability and scalability in a real-world educational setting.\u001b[39m\n", + "======\n", + "\n", + "\u001b[33mWorker node 134971024453504 (Innovator Iris (Judge), a well-known AI startup founder who is always looking for the \"next big thing\" in AI.) get task 0.3: Analyze the project for its innovative qualities and potential impact on the AI landscape. Provide a score and insights. This will be done by Innovator Iris.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971024453504 (Innovator Iris (Judge), a well-known AI startup founder who is always looking for the \"next big thing\" in AI.):\u001b[39m\n", + "\n", + "\u001b[32mThe CAMEL-Powered Adaptive Learning Assistant project presents a fascinating concept by leveraging CAMEL-AI's advanced capabilities to tackle the challenge of personalized education. This project stands out in the AI landscape due to its innovative approach to creating a highly adaptive, intelligent tutoring system that can dynamically respond to individual learning styles and needs.\n", + "\n", + "### **Innovation Analysis**\n", + "\n", + "1. **Groundbreaking Concept**: The project introduces a novel approach by integrating AI-driven learner profile analysis and dynamic content generation. This is a significant departure from traditional educational methods, which often lack personalization.\n", + "\n", + "2. **Unique Features**: The use of CAMEL-AI for real-time adaptation and personalized content creation is a unique twist that enhances the learning experience. The potential for multi-modal integration further adds to its innovative edge.\n", + "\n", + "3. **Potential Impact**: If fully realized, the project could revolutionize the educational sector by providing tailored learning experiences that significantly improve student engagement and outcomes. This aligns with current trends in AI and adaptive learning systems, as highlighted in the research findings.\n", + "\n", + "4. **Challenges and Development**: While the project is innovative, some components like the Adaptive Feedback Loop and Multi-Modal Integration are still under development. These features are crucial for the system's full functionality and impact.\n", + "\n", + "### **Innovation Score: 3/4**\n", + "\n", + "The CAMEL-Powered Adaptive Learning Assistant demonstrates a novel twist on known solutions with its innovative use of AI for personalized education. However, the incomplete development of certain modules prevents it from achieving a groundbreaking status at this stage. With further development and refinement, it has the potential to push boundaries and set new standards in the educational technology space.\u001b[39m\n", + "======\n", + "\n", + "\u001b[33mWorker node 134971024449808 (Friendly Frankie (Judge), a contributor to the CAMEL-AI project and is always excited to see how people are using it.) get task 0.4: Provide feedback on the project from a user experience perspective, considering the CAMEL-AI integration. This will be done by Friendly Frankie.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971024449808 (Friendly Frankie (Judge), a contributor to the CAMEL-AI project and is always excited to see how people are using it.):\u001b[39m\n", + "\n", + "\u001b[32mOh, I absolutely love how the CAMEL-Powered Adaptive Learning Assistant is shaping up from a user experience perspective! The integration of CAMEL-AI is truly impressive, especially in how it personalizes the learning journey for each student. \n", + "\n", + "### User Experience Feedback\n", + "\n", + "1. **Personalized Learning Journey**: The use of CAMEL-AI for Learner Profile Analysis and Dynamic Content Generation is a standout feature. It’s wonderful to see how the system tailors educational content to fit individual learning styles and needs, which is crucial for maintaining student engagement and improving learning outcomes.\n", + "\n", + "2. **Real-Time Adaptability**: The Adaptive Feedback Loop, even in its partial functionality, shows great promise. The ability to adjust content difficulty and style in real-time based on student responses is a fantastic way to keep learners challenged yet not overwhelmed.\n", + "\n", + "3. **Multi-Modal Integration**: Although still in development, the idea of incorporating various media types to cater to different learning styles is exciting. This feature could significantly enhance the user experience by making learning more interactive and engaging.\n", + "\n", + "4. **Progress Tracking**: The potential for detailed insights into a student's learning journey is another excellent aspect. Once fully developed, this feature will be invaluable for both students and educators to track progress and identify areas for improvement.\n", + "\n", + "### CAMEL-AI Integration Score: 3/4\n", + "\n", + "The project makes good use of CAMEL-AI, especially in its personalized and adaptive learning capabilities. However, there are still opportunities to further exploit CAMEL-AI’s advanced features, particularly in the areas that are still under development. With continued refinement and development, this project could offer an even more seamless and enriching user experience.\n", + "\n", + "Overall, the CAMEL-Powered Adaptive Learning Assistant is on a promising path to revolutionizing personalized education, and I’m excited to see how it evolves!\u001b[39m\n", + "======\n", + "\n", + "\u001b[33mWorker node 134971024448512 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.) get task 0.5: Compile the scores and opinions from each judge, preserving their unique identities, and create a final summary of the evaluations. This will be done by a designated coordinator or helper.\u001b[39m\n", + "======\n", + "\u001b[32mReply from Worker node 134971024448512 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.):\u001b[39m\n", + "\n", + "\u001b[32m### Final Summary of Evaluations for CAMEL-Powered Adaptive Learning Assistant\n", + "\n", + "#### Visionary Veronica\n", + "- **Scalability Potential Score**: 4/4\n", + "- **Opinion**: The project is a compelling solution in the EdTech space, addressing personalized education challenges effectively. It has significant potential for market penetration and scalability, making it a strong candidate for becoming a unicorn company.\n", + "\n", + "#### Critical John\n", + "- **Technical Implementation Score**: 2/4\n", + "- **Opinion**: While the project shows potential, its technical implementation is incomplete. The partially functional modules and lack of robustness suggest challenges in real-world deployment. Significant improvements are needed to meet high engineering standards.\n", + "\n", + "#### Innovator Iris\n", + "- **Innovation Score**: 3/4\n", + "- **Opinion**: The project is innovative, leveraging AI for personalized education. However, incomplete development of certain modules prevents it from achieving groundbreaking status. With further development, it could set new standards in educational technology.\n", + "\n", + "#### Friendly Frankie\n", + "- **CAMEL-AI Integration Score**: 3/4\n", + "- **Opinion**: The integration of CAMEL-AI is impressive, particularly in personalizing learning journeys. While there are opportunities for further enhancement, the project is on a promising path to revolutionizing personalized education.\n", + "\n", + "### Overall Summary\n", + "The CAMEL-Powered Adaptive Learning Assistant is a promising project with high scalability potential and innovative qualities. However, it faces technical challenges that need addressing to fully realize its potential. The integration of CAMEL-AI offers a strong foundation for personalized education, and with continued development, the project could significantly impact the EdTech landscape.\u001b[39m\n", + "======\n", + "\n", + "### Final Evaluation of the CAMEL-Powered Adaptive Learning Assistant\n", + "\n", + "#### Judges' Scores and Opinions\n", + "\n", + "1. **Visionary Veronica**\n", + " - **Score**: 4/4\n", + " - **Opinion**: The project is a compelling solution in the EdTech space, addressing personalized education challenges effectively. It has significant potential for market penetration and scalability, making it a strong candidate for becoming a unicorn company.\n", + "\n", + "2. **Critical John**\n", + " - **Score**: 2/4\n", + " - **Opinion**: While the project shows potential, its technical implementation is incomplete. The partially functional modules and lack of robustness suggest challenges in real-world deployment. Significant improvements are needed to meet high engineering standards.\n", + "\n", + "3. **Innovator Iris**\n", + " - **Score**: 3/4\n", + " - **Opinion**: The project is innovative, leveraging AI for personalized education. However, incomplete development of certain modules prevents it from achieving groundbreaking status. With further development, it could set new standards in educational technology.\n", + "\n", + "4. **Friendly Frankie**\n", + " - **Score**: 3/4\n", + " - **Opinion**: The integration of CAMEL-AI is impressive, particularly in personalizing learning journeys. While there are opportunities for further enhancement, the project is on a promising path to revolutionizing personalized education.\n", + "\n", + "### Overall Summary\n", + "The CAMEL-Powered Adaptive Learning Assistant is a promising project with high scalability potential and innovative qualities. However, it faces technical challenges that need addressing to fully realize its potential. The integration of CAMEL-AI offers a strong foundation for personalized education, and with continued development, the project could significantly impact the EdTech landscape.\n" + ] + } + ], + "source": [ + "task = workforce.process_task(task)\n", + "\n", + "print(task.result)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ljbz3Jmc1VwQ" + }, + "source": [ + "## 🌟 Highlights\n", + "\n", + "The power of multi-agent system lies in the diversity. This notebook has\n", + "guided you through setting up and running a CAMEL Workforce for a hackathon\n", + "judge committee, showcasing how multiple agents can collaborate to solve\n", + "complex tasks. You can easily extend this example to other scenarios\n", + "requiring diverse perspectives and expertise, e.g. agents with different\n", + "tool selections, etc.\n", + "\n", + "## ⭐ Star the Repo!\n", + "\n", + "If you find CAMEL useful or interesting, please consider giving it a star on\n", + "[GitHub](https://github.com/camel-ai/camel)! Your stars help others find\n", + "this project and motivate us to continue improving it." ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" } - ], - "source": [ - "workforce = Workforce('Hackathon Judges')\n", - "\n", - "workforce.add_single_agent_worker(\n", - " 'Visionary Veronica (Judge), a venture capitalist who is '\n", - " 'obsessed with how projects can be scaled into \"unicorn\" companies',\n", - " worker=vc_agent,\n", - ").add_single_agent_worker(\n", - " 'Critical John (Judge), an experienced engineer and a'\n", - " ' perfectionist.',\n", - " worker=eng_agent,\n", - ").add_single_agent_worker(\n", - " 'Innovator Iris (Judge), a well-known AI startup founder who'\n", - " ' is always looking for the \"next big thing\" in AI.',\n", - " worker=founder_agent,\n", - ").add_single_agent_worker(\n", - " 'Friendly Frankie (Judge), a contributor to the CAMEL-AI '\n", - " 'project and is always excited to see how people are using it.',\n", - " worker=contributor_agent,\n", - ").add_single_agent_worker(\n", - " 'Researcher Rachel (Helper), a researcher who does online searches to'\n", - " 'find the latest innovations and trends on AI and Open Sourced '\n", - " 'projects.',\n", - " worker=researcher_agent,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-WXOG-Hr1ibN" - }, - "source": [ - "## Create a Task\n", - "\n", - "A task is what a workforce accepts and processes. We can initailize a task by passing the content into it. It's recommended that the content of task is as detailed as possible, which will facilitate the later task decomposition and handling.\n", - "\n", - "The `additional_info` here is an optional field. It will come in handy when the task has important additional information, and you want it to be preserved during the whole process. Workforce will keep `additional_info` unchanged no matter how the task is decomposed and processed. It's perfect for keeping the project description under this scenario.\n", - "\n", - "> Also note that, the `id` of a task is not something important and you can fill in whatever value you like (we suggest `\"0\"` though). This is due to some legacy problems in the `Task` design and will be fixed later." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "WnOXRacP1fbB" - }, - "outputs": [], - "source": [ - "task = Task(\n", - " content=\"Evaluate the hackathon project. First, do some research on \"\n", - " \"the infomation related to the project, then each judge should give a\"\n", - " \" score accordingly. Finally, list the opinions from each judge while\"\n", - " \" preserving the judge's unique identity, along with the score and\"\n", - " \" judge name, and also give a final summary of the opinions.\",\n", - " additional_info=proj_content,\n", - " id=\"0\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "HQx4rRNu3CbA" - }, - "source": [ - "## Run the Task\n", - "\n", - "Finally, run the task with `process_task()` function. You can see the whole process being shown in the console, and at last the final result of the task will be printed." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { + ], + "metadata": { "colab": { - "base_uri": "https://localhost:8080/" + "provenance": [] }, - "id": "DJOiPHFO1qeG", - "outputId": "e76d50c7-397f-48d0-c1f3-4e12a105fa63" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[33mWorker node 137602953814384 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.) get task 0.0: Research the latest innovations and trends related to AI and adaptive learning systems. This will be done by Researcher Rachel using online searches.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137602953814384 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.):\u001b[39m\n", - "\n", - "\u001b[32mThe latest innovations and trends in AI and adaptive learning systems include several key developments:\n", - "\n", - "1. **AI-Enabled Adaptive Learning Systems**: These systems leverage AI to create personalized learning experiences by tracking student progress, engagement, and performance. They use this data to adjust the learning material to meet individual needs. (Source: ScienceDirect)\n", - "\n", - "2. **Data-Driven Instruction**: Adaptive learning techniques utilize data to tailor educational content to each student's unique requirements. This approach ensures that learners receive the most relevant and effective instruction based on their current knowledge and learning style. (Source: Montclair State University)\n", - "\n", - "3. **EdTech Innovations**: Over the past twenty years, the EdTech industry has seen significant advancements in AI applications. These include the development of individual adaptive learning systems and new educational platforms that integrate AI to enhance learning outcomes. (Source: ScienceDirect)\n", - "\n", - "These innovations are transforming the educational landscape by providing more personalized and effective learning experiences, addressing the diverse needs of students, and improving overall engagement and understanding.\u001b[39m\n", - "======\n", - "\n", - "\u001b[33mWorker node 137603052236144 (Visionary Veronica (Judge), a venture capitalist who is obsessed with how projects can be scaled into \"unicorn\" companies) get task 0.1: Evaluate the CAMEL-Powered Adaptive Learning Assistant project based on scalability and potential to become a \"unicorn\" company. This will be done by Visionary Veronica.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137603052236144 (Visionary Veronica (Judge), a venture capitalist who is obsessed with how projects can be scaled into \"unicorn\" companies):\u001b[39m\n", - "\n", - "\u001b[32mThe CAMEL-Powered Adaptive Learning Assistant project is a highly disruptive and synergistic solution in the EdTech space. It directly addresses the significant real-world problem of personalized education, which is crucial in today's diverse and fast-paced learning environment. By leveraging CAMEL-AI's advanced capabilities, the project has the potential to create a scalable and highly adaptive intelligent tutoring system. The project's focus on real-time adaptability and personalized learning experiences positions it well for substantial market penetration and growth. Given the current progress and the clear roadmap for further development, this project shows strong potential to become a unicorn company.\n", - "\n", - "### Applicability to Real-World Usage: 4/4\n", - "The project directly addresses a significant real-world problem with a clear, scalable application.\u001b[39m\n", - "======\n", - "\n", - "\u001b[33mWorker node 137602953811072 (Critical John (Judge), an experienced engineer and a perfectionist.) get task 0.2: Assess the technical aspects of the project, focusing on the implementation of the Learner Profile Analysis and Dynamic Content Generation modules. This will be done by Critical John.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137602953811072 (Critical John (Judge), an experienced engineer and a perfectionist.):\u001b[39m\n", - "\n", - "\u001b[32mUpon evaluating the technical aspects of the CAMEL-Powered Adaptive Learning Assistant project, specifically the Learner Profile Analysis and Dynamic Content Generation modules, several observations can be made:\n", - "\n", - "1. **Learner Profile Analysis**: This module employs natural language processing (NLP) to assess the student's current knowledge, learning preferences, and goals. While the concept is sound, the implementation details are crucial. The effectiveness of this module hinges on the accuracy and efficiency of the NLP algorithms used. Any inefficiencies or inaccuracies in parsing and understanding student input could lead to suboptimal personalization. Additionally, the system's ability to handle diverse linguistic inputs and learning styles must be rigorously tested. As it stands, without detailed performance metrics and stress test results, it's challenging to fully endorse its robustness.\n", - "\n", - "2. **Dynamic Content Generation**: This module leverages CAMEL-AI to create personalized learning materials. The success of this component depends on the quality and relevance of the generated content. The architecture should ensure that the content is not only tailored to the student's needs but also pedagogically sound. The system's ability to dynamically adjust content in real-time is commendable, but it must be validated under various scenarios to ensure consistent performance. Any latency or inaccuracies in content generation could significantly impact the learning experience.\n", - "\n", - "### **Technical Implementation (2/4)**\n", - "- The project demonstrates a working implementation of the Learner Profile Analysis and Dynamic Content Generation modules. However, there are notable concerns regarding the efficiency, accuracy, and robustness of these components. Detailed performance metrics, stress test results, and further validation are necessary to ensure the system's reliability and scalability.\n", - "\n", - "In summary, while the project shows promise, it requires significant refinement and validation to meet the high standards expected for deployment in a mission-critical educational environment.\u001b[39m\n", - "======\n", - "\n", - "\u001b[33mWorker node 137602953811936 (Innovator Iris (Judge), a well-known AI startup founder who is always looking for the \"next big thing\" in AI.) get task 0.3: Provide insights on the innovative aspects of the project and its potential impact on the AI landscape. This will be done by Innovator Iris.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137602953811936 (Innovator Iris (Judge), a well-known AI startup founder who is always looking for the \"next big thing\" in AI.):\u001b[39m\n", - "\n", - "\u001b[32mThe CAMEL-Powered Adaptive Learning Assistant project stands out in the AI landscape due to its innovative approach to personalized education. Here are the key innovative aspects and their potential impact:\n", - "\n", - "1. **Real-Time Adaptability**: The project leverages CAMEL-AI's advanced capabilities to create a highly adaptive learning environment. This real-time adaptability ensures that the educational content is continuously tailored to meet the unique needs of each student. This is a significant departure from traditional static learning systems and has the potential to revolutionize personalized education.\n", - "\n", - "2. **Dynamic Content Generation**: The use of CAMEL-AI to generate personalized learning materials on-the-fly is a groundbreaking concept. This ensures that the content is not only relevant but also pedagogically sound, enhancing the learning experience. The ability to dynamically adjust content in real-time based on student responses is a novel approach that could set new standards in the EdTech industry.\n", - "\n", - "3. **Multi-Modal Integration**: Although still in development, the integration of text, images, and interactive elements to cater to different learning styles is an innovative feature. This multi-modal approach can significantly enhance engagement and understanding, making learning more accessible and effective for a diverse range of students.\n", - "\n", - "4. **Adaptive Feedback Loop**: The continuous analysis of student responses to adjust the difficulty and style of content is a unique feature that ensures a personalized learning journey. This adaptive feedback mechanism can help identify and address knowledge gaps more effectively than traditional methods.\n", - "\n", - "### **Innovation (4/4)**\n", - "The CAMEL-Powered Adaptive Learning Assistant project showcases a groundbreaking concept with its real-time adaptability, dynamic content generation, and multi-modal integration. These innovative aspects have the potential to significantly impact the AI landscape and set new standards in personalized education.\n", - "\n", - "In summary, the CAMEL-Powered Adaptive Learning Assistant project is a highly innovative solution that addresses the critical challenge of personalized education. Its unique approach and advanced capabilities position it as a potential game-changer in the EdTech industry.\u001b[39m\n", - "======\n", - "\n", - "\u001b[33mWorker node 137602953817504 (Friendly Frankie (Judge), a contributor to the CAMEL-AI project and is always excited to see how people are using it.) get task 0.4: Share feedback and opinions on the project from a contributor's perspective, highlighting the use of CAMEL-AI. This will be done by Friendly Frankie.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137602953817504 (Friendly Frankie (Judge), a contributor to the CAMEL-AI project and is always excited to see how people are using it.):\u001b[39m\n", - "\n", - "\u001b[32mOh, I love how you have implemented CAMEL-AI here! The use of its adaptive learning capabilities is fantastic, and you have really leveraged the contextual reasoning in a great way! The CAMEL-Powered Adaptive Learning Assistant project is a brilliant example of how AI can transform personalized education. The Learner Profile Analysis and Dynamic Content Generation modules are particularly impressive, showcasing a thoughtful application of CAMEL-AI's natural language processing and real-time adaptability. The innovative aspects like the Adaptive Feedback Loop and Multi-Modal Integration, even in their developmental stages, highlight the project's potential to set new standards in the EdTech industry. Keep up the great work, and I can't wait to see how you continue to refine and expand this project! \n", - "\n", - "### **Use of CAMEL-AI: 4/4**\n", - "- Excellent integration of CAMEL-AI, fully leveraging its advanced features like in-context learning, adaptability, and multi-domain applications.\u001b[39m\n", - "======\n", - "\n", - "\u001b[33mWorker node 137602953814384 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.) get task 0.5: Compile the scores and opinions from each judge, preserving their unique identities, and create a final summary of the evaluations. This will be done by a designated organizer or helper.\u001b[39m\n", - "======\n", - "\u001b[32mReply from Worker node 137602953814384 (Researcher Rachel (Helper), a researcher who does online searches tofind the latest innovations and trends on AI and Open Sourced projects.):\u001b[39m\n", - "\n", - "\u001b[32m### Final Summary of Evaluations for CAMEL-Powered Adaptive Learning Assistant\n", - "\n", - "#### Visionary Veronica\n", - "- **Scalability and Unicorn Potential**: The project is highly disruptive and addresses a significant real-world problem. It has strong potential to become a unicorn company due to its focus on real-time adaptability and personalized learning experiences.\n", - "- **Score**: 4/4\n", - "\n", - "#### Critical John\n", - "- **Technical Implementation**: The Learner Profile Analysis and Dynamic Content Generation modules show promise but require significant refinement. Concerns include the efficiency, accuracy, and robustness of these components.\n", - "- **Score**: 2/4\n", - "\n", - "#### Innovator Iris\n", - "- **Innovation**: The project is highly innovative with its real-time adaptability, dynamic content generation, and multi-modal integration. These aspects have the potential to significantly impact the AI landscape.\n", - "- **Score**: 4/4\n", - "\n", - "#### Friendly Frankie\n", - "- **Use of CAMEL-AI**: Excellent integration of CAMEL-AI, fully leveraging its advanced features like in-context learning, adaptability, and multi-domain applications.\n", - "- **Score**: 4/4\n", - "\n", - "### Overall Summary\n", - "The CAMEL-Powered Adaptive Learning Assistant project is a highly promising and innovative solution in the EdTech space. While it shows strong potential for scalability and significant market impact, it requires further refinement in its technical implementation to ensure robustness and reliability. The project's innovative approach and excellent use of CAMEL-AI position it as a potential game-changer in personalized education.\n", - "\n", - "**Overall Score**: 3.5/4\u001b[39m\n", - "======\n", - "\n", - "### Final Evaluation of the CAMEL-Powered Adaptive Learning Assistant\n", - "\n", - "#### Judges' Opinions and Scores\n", - "\n", - "1. **Visionary Veronica**\n", - " - **Opinion**: The project is highly disruptive and addresses a significant real-world problem. It has strong potential to become a unicorn company due to its focus on real-time adaptability and personalized learning experiences.\n", - " - **Score**: 4/4\n", - "\n", - "2. **Critical John**\n", - " - **Opinion**: The Learner Profile Analysis and Dynamic Content Generation modules show promise but require significant refinement. Concerns include the efficiency, accuracy, and robustness of these components.\n", - " - **Score**: 2/4\n", - "\n", - "3. **Innovator Iris**\n", - " - **Opinion**: The project is highly innovative with its real-time adaptability, dynamic content generation, and multi-modal integration. These aspects have the potential to significantly impact the AI landscape.\n", - " - **Score**: 4/4\n", - "\n", - "4. **Friendly Frankie**\n", - " - **Opinion**: Excellent integration of CAMEL-AI, fully leveraging its advanced features like in-context learning, adaptability, and multi-domain applications.\n", - " - **Score**: 4/4\n", - "\n", - "### Overall Summary\n", - "The CAMEL-Powered Adaptive Learning Assistant project is a highly promising and innovative solution in the EdTech space. While it shows strong potential for scalability and significant market impact, it requires further refinement in its technical implementation to ensure robustness and reliability. The project's innovative approach and excellent use of CAMEL-AI position it as a potential game-changer in personalized education.\n", - "\n", - "**Overall Score**: 3.5/4\n" - ] + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" } - ], - "source": [ - "task = workforce.process_task(task)\n", - "\n", - "print(task.result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 🌟 Highlights\n", - "\n", - "The power of multi-agent system lies in the diversity. This notebook has \n", - "guided you through setting up and running a CAMEL Workforce for a hackathon \n", - "judge committee, showcasing how multiple agents can collaborate to solve \n", - "complex tasks. You can easily extend this example to other scenarios\n", - "requiring diverse perspectives and expertise, e.g. agents with different \n", - "tool selections, etc.\n", - "\n", - "## ⭐ Star the Repo!\n", - "\n", - "If you find CAMEL useful or interesting, please consider giving it a star on \n", - "[GitHub](https://github.com/camel-ai/camel)! Your stars help others find \n", - "this project and motivate us to continue improving it." - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 0 + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/examples/workforce/hackathon_judges.py b/examples/workforce/hackathon_judges.py index 24b9e16d69..33059a2a97 100644 --- a/examples/workforce/hackathon_judges.py +++ b/examples/workforce/hackathon_judges.py @@ -16,10 +16,10 @@ from camel.agents import ChatAgent from camel.messages import BaseMessage from camel.models import ModelFactory +from camel.societies.workforce import Workforce from camel.tasks import Task from camel.toolkits import FunctionTool, SearchToolkit from camel.types import ModelPlatformType, ModelType -from camel.workforce import Workforce def make_judge( diff --git a/examples/workforce/multiple_single_agents.py b/examples/workforce/multiple_single_agents.py index 34627c9007..0ad46170c4 100644 --- a/examples/workforce/multiple_single_agents.py +++ b/examples/workforce/multiple_single_agents.py @@ -15,6 +15,7 @@ from camel.agents.chat_agent import ChatAgent from camel.messages.base import BaseMessage from camel.models import ModelFactory +from camel.societies.workforce import Workforce from camel.tasks.task import Task from camel.toolkits import ( WEATHER_FUNCS, @@ -23,7 +24,6 @@ SearchToolkit, ) from camel.types import ModelPlatformType, ModelType -from camel.workforce import Workforce def main(): diff --git a/examples/workforce/role_playing_with_agents.py b/examples/workforce/role_playing_with_agents.py index 64f56adb3e..a5127e7df9 100644 --- a/examples/workforce/role_playing_with_agents.py +++ b/examples/workforce/role_playing_with_agents.py @@ -15,10 +15,10 @@ from camel.agents.chat_agent import ChatAgent from camel.messages.base import BaseMessage from camel.models import ModelFactory +from camel.societies.workforce import Workforce from camel.tasks.task import Task from camel.toolkits import SEARCH_FUNCS, WEATHER_FUNCS, GoogleMapsToolkit from camel.types import ModelPlatformType, ModelType -from camel.workforce import Workforce def main(): diff --git a/poetry.lock b/poetry.lock index cf7ccaa53c..c95fcb8004 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6785,99 +6785,99 @@ dev = ["pytest"] [[package]] name = "rapidfuzz" -version = "3.10.0" +version = "3.10.1" description = "rapid fuzzy string matching" optional = true python-versions = ">=3.9" files = [ - {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:884453860de029380dded8f3c1918af2d8eb5adf8010261645c7e5c88c2b5428"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718c9bd369288aca5fa929df6dbf66fdbe9768d90940a940c0b5cdc96ade4309"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a68e3724b7dab761c01816aaa64b0903734d999d5589daf97c14ef5cc0629a8e"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1af60988d47534246d9525f77288fdd9de652608a4842815d9018570b959acc6"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3084161fc3e963056232ef8d937449a2943852e07101f5a136c8f3cfa4119217"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cd67d3d017296d98ff505529104299f78433e4b8af31b55003d901a62bbebe9"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b11a127ac590fc991e8a02c2d7e1ac86e8141c92f78546f18b5c904064a0552c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aadce42147fc09dcef1afa892485311e824c050352e1aa6e47f56b9b27af4cf0"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b54853c2371bf0e38d67da379519deb6fbe70055efb32f6607081641af3dc752"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce19887268e90ee81a3957eef5e46a70ecc000713796639f83828b950343f49e"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f39a2a5ded23b9b9194ec45740dce57177b80f86c6d8eba953d3ff1a25c97766"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ec338d5f4ad8d9339a88a08db5c23e7f7a52c2b2a10510c48a0cef1fb3f0ddc"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win32.whl", hash = "sha256:56fd15ea8f4c948864fa5ebd9261c67cf7b89a1c517a0caef4df75446a7af18c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:43dfc5e733808962a822ff6d9c29f3039a3cfb3620706f5953e17cfe4496724c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win_arm64.whl", hash = "sha256:ae7966f205b5a7fde93b44ca8fed37c1c8539328d7f179b1197de34eceaceb5f"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win32.whl", hash = "sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7dc87073ba3a40dd65591a2100aa71602107443bf10770579ff9c8a3242edb94"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a425a0a868cf8e9c6e93e1cda4b758cdfd314bb9a4fc916c5742c934e3613480"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d5d1d75e61df060c1e56596b6b0a4422a929dff19cc3dbfd5eee762c86b61"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34f213d59219a9c3ca14e94a825f585811a68ac56b4118b4dc388b5b14afc108"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96ad46f5f56f70fab2be9e5f3165a21be58d633b90bf6e67fc52a856695e4bcf"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9178277f72d144a6c7704d7ae7fa15b7b86f0f0796f0e1049c7b4ef748a662ef"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76a35e9e19a7c883c422ffa378e9a04bc98cb3b29648c5831596401298ee51e6"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a6405d34c394c65e4f73a1d300c001f304f08e529d2ed6413b46ee3037956eb"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bd393683129f446a75d8634306aed7e377627098a1286ff3af2a4f1736742820"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b0445fa9880ead81f5a7d0efc0b9c977a947d8052c43519aceeaf56eabaf6843"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c50bc308fa29767ed8f53a8d33b7633a9e14718ced038ed89d41b886e301da32"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e89605afebbd2d4b045bccfdc12a14b16fe8ccbae05f64b4b4c64a97dad1c891"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win32.whl", hash = "sha256:2db9187f3acf3cd33424ecdbaad75414c298ecd1513470df7bda885dcb68cc15"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e3d0c72ea15391ba9531ead7f2068a67c5b18a6a365fef3127583aaadd1725"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:9eac95b4278bd53115903d89118a2c908398ee8bdfd977ae844f1bd2b02b917c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe5231e8afd069c742ac5b4f96344a0fe4aff52df8e53ef87faebf77f827822c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:886882367dbc985f5736356105798f2ae6e794e671fc605476cbe2e73838a9bb"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b33e13e537e3afd1627d421a142a12bbbe601543558a391a6fae593356842f6e"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094c26116d55bf9c53abd840d08422f20da78ec4c4723e5024322321caedca48"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:545fc04f2d592e4350f59deb0818886c1b444ffba3bec535b4fbb97191aaf769"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:916a6abf3632e592b937c3d04c00a6efadd8fd30539cdcd4e6e4d92be7ca5d90"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6ec40cef63b1922083d33bfef2f91fc0b0bc07b5b09bfee0b0f1717d558292"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c77a7330dd15c7eb5fd3631dc646fc96327f98db8181138766bd14d3e905f0ba"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:949b5e9eeaa4ecb4c7e9c2a4689dddce60929dd1ff9c76a889cdbabe8bbf2171"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b5363932a5aab67010ae1a6205c567d1ef256fb333bc23c27582481606be480c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5dd6eec15b13329abe66cc241b484002ecb0e17d694491c944a22410a6a9e5e2"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e7f98525b60b3c14524e0a4e1fedf7654657b6e02eb25f1be897ab097706f3"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win32.whl", hash = "sha256:d29d1b9857c65f8cb3a29270732e1591b9bacf89de9d13fa764f79f07d8f1fd2"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:fa9720e56663cc3649d62b4b5f3145e94b8f5611e8a8e1b46507777249d46aad"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:eda4c661e68dddd56c8fbfe1ca35e40dd2afd973f7ebb1605f4d151edc63dff8"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cffbc50e0767396ed483900900dd58ce4351bc0d40e64bced8694bd41864cc71"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c038b9939da3035afb6cb2f465f18163e8f070aba0482923ecff9443def67178"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca366c2e2a54e2f663f4529b189fdeb6e14d419b1c78b754ec1744f3c01070d4"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c4c82b1689b23b1b5e6a603164ed2be41b6f6de292a698b98ba2381e889eb9d"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98f6ebe28831a482981ecfeedc8237047878424ad0c1add2c7f366ba44a20452"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd1a7676ee2a4c8e2f7f2550bece994f9f89e58afb96088964145a83af7408b"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9139baa3f85b65adc700eafa03ed04995ca8533dd56c924f0e458ffec044ab"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:26de93e6495078b6af4c4d93a42ca067b16cc0e95699526c82ab7d1025b4d3bf"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f3a0bda83c18195c361b5500377d0767749f128564ca95b42c8849fd475bb327"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:63e4c175cbce8c3adc22dca5e6154588ae673f6c55374d156f3dac732c88d7de"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4dd3d8443970eaa02ab5ae45ce584b061f2799cd9f7e875190e2617440c1f9d4"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e5ddb2388610799fc46abe389600625058f2a73867e63e20107c5ad5ffa57c47"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win32.whl", hash = "sha256:2e9be5d05cd960914024412b5406fb75a82f8562f45912ff86255acbfdbfb78e"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:47aca565a39c9a6067927871973ca827023e8b65ba6c5747f4c228c8d7ddc04f"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win_arm64.whl", hash = "sha256:b0732343cdc4273b5921268026dd7266f75466eb21873cb7635a200d9d9c3fac"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f744b5eb1469bf92dd143d36570d2bdbbdc88fe5cb0b5405e53dd34f479cbd8a"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b67cc21a14327a0eb0f47bc3d7e59ec08031c7c55220ece672f9476e7a8068d3"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fe5783676f0afba4a522c80b15e99dbf4e393c149ab610308a8ef1f04c6bcc8"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4688862f957c8629d557d084f20b2d803f8738b6c4066802a0b1cc472e088d9"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bd153aacc244e4c907d772c703fea82754c4db14f8aa64d75ff81b7b8ab92d"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:50484d563f8bfa723c74c944b0bb15b9e054db9c889348c8c307abcbee75ab92"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5897242d455461f2c5b82d7397b29341fd11e85bf3608a522177071044784ee8"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:116c71a81e046ba56551d8ab68067ca7034d94b617545316d460a452c5c3c289"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0a547e4350d1fa32624d3eab51eff8cf329f4cae110b4ea0402486b1da8be40"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:399b9b79ccfcf50ca3bad7692bc098bb8eade88d7d5e15773b7f866c91156d0c"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7947a425d1be3e744707ee58c6cb318b93a56e08f080722dcc0347e0b7a1bb9a"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:94c48b4a2a4b1d22246f48e2b11cae01ec7d23f0c9123f8bb822839ad79d0a88"}, - {file = "rapidfuzz-3.10.0.tar.gz", hash = "sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f17d9f21bf2f2f785d74f7b0d407805468b4c173fa3e52c86ec94436b338e74a"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b31f358a70efc143909fb3d75ac6cd3c139cd41339aa8f2a3a0ead8315731f2b"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4f43f2204b56a61448ec2dd061e26fd344c404da99fb19f3458200c5874ba2"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d81bf186a453a2757472133b24915768abc7c3964194406ed93e170e16c21cb"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3611c8f45379a12063d70075c75134f2a8bd2e4e9b8a7995112ddae95ca1c982"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c3b537b97ac30da4b73930fa8a4fe2f79c6d1c10ad535c5c09726612cd6bed9"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:231ef1ec9cf7b59809ce3301006500b9d564ddb324635f4ea8f16b3e2a1780da"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed4f3adc1294834955b7e74edd3c6bd1aad5831c007f2d91ea839e76461a5879"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7b6015da2e707bf632a71772a2dbf0703cff6525732c005ad24987fe86e8ec32"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1b35a118d61d6f008e8e3fb3a77674d10806a8972c7b8be433d6598df4d60b01"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bc308d79a7e877226f36bdf4e149e3ed398d8277c140be5c1fd892ec41739e6d"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f017dbfecc172e2d0c37cf9e3d519179d71a7f16094b57430dffc496a098aa17"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win32.whl", hash = "sha256:36c0e1483e21f918d0f2f26799fe5ac91c7b0c34220b73007301c4f831a9c4c7"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:10746c1d4c8cd8881c28a87fd7ba0c9c102346dfe7ff1b0d021cdf093e9adbff"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win_arm64.whl", hash = "sha256:dfa64b89dcb906835e275187569e51aa9d546a444489e97aaf2cc84011565fbe"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:92958ae075c87fef393f835ed02d4fe8d5ee2059a0934c6c447ea3417dfbf0e8"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba7521e072c53e33c384e78615d0718e645cab3c366ecd3cc8cb732befd94967"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d02cbd75d283c287471b5b3738b3e05c9096150f93f2d2dfa10b3d700f2db9"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efa1582a397da038e2f2576c9cd49b842f56fde37d84a6b0200ffebc08d82350"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f12912acee1f506f974f58de9fdc2e62eea5667377a7e9156de53241c05fdba8"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666d5d8b17becc3f53447bcb2b6b33ce6c2df78792495d1fa82b2924cd48701a"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26f71582c0d62445067ee338ddad99b655a8f4e4ed517a90dcbfbb7d19310474"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8a2ef08b27167bcff230ffbfeedd4c4fa6353563d6aaa015d725dd3632fc3de7"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:365e4fc1a2b95082c890f5e98489b894e6bf8c338c6ac89bb6523c2ca6e9f086"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1996feb7a61609fa842e6b5e0c549983222ffdedaf29644cc67e479902846dfe"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:cf654702f144beaa093103841a2ea6910d617d0bb3fccb1d1fd63c54dde2cd49"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec108bf25de674781d0a9a935030ba090c78d49def3d60f8724f3fc1e8e75024"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win32.whl", hash = "sha256:031f8b367e5d92f7a1e27f7322012f3c321c3110137b43cc3bf678505583ef48"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:f98f36c6a1bb9a6c8bbec99ad87c8c0e364f34761739b5ea9adf7b48129ae8cf"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win_arm64.whl", hash = "sha256:f1da2028cb4e41be55ee797a82d6c1cf589442504244249dfeb32efc608edee7"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1340b56340896bede246f612b6ecf685f661a56aabef3d2512481bfe23ac5835"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2316515169b7b5a453f0ce3adbc46c42aa332cae9f2edb668e24d1fc92b2f2bb"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e06fe6a12241ec1b72c0566c6b28cda714d61965d86569595ad24793d1ab259"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d99c1cd9443b19164ec185a7d752f4b4db19c066c136f028991a480720472e23"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1d9aa156ed52d3446388ba4c2f335e312191d1ca9d1f5762ee983cf23e4ecf6"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54bcf4efaaee8e015822be0c2c28214815f4f6b4f70d8362cfecbd58a71188ac"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c955e32afdbfdf6e9ee663d24afb25210152d98c26d22d399712d29a9b976b"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:191633722203f5b7717efcb73a14f76f3b124877d0608c070b827c5226d0b972"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:195baad28057ec9609e40385991004e470af9ef87401e24ebe72c064431524ab"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0fff4a6b87c07366662b62ae994ffbeadc472e72f725923f94b72a3db49f4671"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4ffed25f9fdc0b287f30a98467493d1e1ce5b583f6317f70ec0263b3c97dbba6"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d02cf8e5af89a9ac8f53c438ddff6d773f62c25c6619b29db96f4aae248177c0"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win32.whl", hash = "sha256:f3bb81d4fe6a5d20650f8c0afcc8f6e1941f6fecdb434f11b874c42467baded0"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:aaf83e9170cb1338922ae42d320699dccbbdca8ffed07faeb0b9257822c26e24"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:c5da802a0d085ad81b0f62828fb55557996c497b2d0b551bbdfeafd6d447892f"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc22d69a1c9cccd560a5c434c0371b2df0f47c309c635a01a913e03bbf183710"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38b0dac2c8e057562b8f0d8ae5b663d2d6a28c5ab624de5b73cef9abb6129a24"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fde3bbb14e92ce8fcb5c2edfff72e474d0080cadda1c97785bf4822f037a309"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9141fb0592e55f98fe9ac0f3ce883199b9c13e262e0bf40c5b18cdf926109d16"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:237bec5dd1bfc9b40bbd786cd27949ef0c0eb5fab5eb491904c6b5df59d39d3c"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18123168cba156ab5794ea6de66db50f21bb3c66ae748d03316e71b27d907b95"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b75fe506c8e02769cc47f5ab21ce3e09b6211d3edaa8f8f27331cb6988779be"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da82aa4b46973aaf9e03bb4c3d6977004648c8638febfc0f9d237e865761270"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c34c022d5ad564f1a5a57a4a89793bd70d7bad428150fb8ff2760b223407cdcf"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e96c84d6c2a0ca94e15acb5399118fff669f4306beb98a6d8ec6f5dccab4412"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e8e154b84a311263e1aca86818c962e1fa9eefdd643d1d5d197fcd2738f88cb9"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:335fee93188f8cd585552bb8057228ce0111bd227fa81bfd40b7df6b75def8ab"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win32.whl", hash = "sha256:6729b856166a9e95c278410f73683957ea6100c8a9d0a8dbe434c49663689255"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:0e06d99ad1ad97cb2ef7f51ec6b1fedd74a3a700e4949353871cf331d07b382a"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:8d1b7082104d596a3eb012e0549b2634ed15015b569f48879701e9d8db959dbb"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:779027d3307e1a2b1dc0c03c34df87a470a368a1a0840a9d2908baf2d4067956"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:440b5608ab12650d0390128d6858bc839ae77ffe5edf0b33a1551f2fa9860651"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cac41a411e07a6f3dc80dfbd33f6be70ea0abd72e99c59310819d09f07d945"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:958473c9f0bca250590200fd520b75be0dbdbc4a7327dc87a55b6d7dc8d68552"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ef60dfa73749ef91cb6073be1a3e135f4846ec809cc115f3cbfc6fe283a5584"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7fbac18f2c19fc983838a60611e67e3262e36859994c26f2ee85bb268de2355"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a0d519ff39db887cd73f4e297922786d548f5c05d6b51f4e6754f452a7f4296"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bebb7bc6aeb91cc57e4881b222484c26759ca865794187217c9dcea6c33adae6"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe07f8b9c3bb5c5ad1d2c66884253e03800f4189a60eb6acd6119ebaf3eb9894"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:bfa48a4a2d45a41457f0840c48e579db157a927f4e97acf6e20df8fc521c79de"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2cf44d01bfe8ee605b7eaeecbc2b9ca64fc55765f17b304b40ed8995f69d7716"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e6bbca9246d9eedaa1c84e04a7f555493ba324d52ae4d9f3d9ddd1b740dcd87"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win32.whl", hash = "sha256:567f88180f2c1423b4fe3f3ad6e6310fc97b85bdba574801548597287fc07028"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6b2cd7c29d6ecdf0b780deb587198f13213ac01c430ada6913452fd0c40190fc"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win_arm64.whl", hash = "sha256:9f912d459e46607ce276128f52bea21ebc3e9a5ccf4cccfef30dd5bddcf47be8"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ac4452f182243cfab30ba4668ef2de101effaedc30f9faabb06a095a8c90fd16"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:565c2bd4f7d23c32834652b27b51dd711814ab614b4e12add8476be4e20d1cf5"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d9747149321607be4ccd6f9f366730078bed806178ec3eeb31d05545e9e8f"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:616290fb9a8fa87e48cb0326d26f98d4e29f17c3b762c2d586f2b35c1fd2034b"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073a5b107e17ebd264198b78614c0206fa438cce749692af5bc5f8f484883f50"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39c4983e2e2ccb9732f3ac7d81617088822f4a12291d416b09b8a1eadebb3e29"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ac7adee6bcf0c6fee495d877edad1540a7e0f5fc208da03ccb64734b43522d7a"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:425f4ac80b22153d391ee3f94bc854668a0c6c129f05cf2eaf5ee74474ddb69e"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65a2fa13e8a219f9b5dcb9e74abe3ced5838a7327e629f426d333dfc8c5a6e66"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75561f3df9a906aaa23787e9992b228b1ab69007932dc42070f747103e177ba8"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd062490537e97ca125bc6c7f2b7331c2b73d21dc304615afe61ad1691e15d5"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfcc8feccf63245a22dfdd16e222f1a39771a44b870beb748117a0e09cbb4a62"}, + {file = "rapidfuzz-3.10.1.tar.gz", hash = "sha256:5a15546d847a915b3f42dc79ef9b0c78b998b4e2c53b252e7166284066585979"}, ] [package.extras] @@ -6885,13 +6885,13 @@ all = ["numpy"] [[package]] name = "redis" -version = "5.1.1" +version = "5.2.0" description = "Python client for Redis database and key-value store" optional = true python-versions = ">=3.8" files = [ - {file = "redis-5.1.1-py3-none-any.whl", hash = "sha256:f8ea06b7482a668c6475ae202ed8d9bcaa409f6e87fb77ed1043d912afd62e24"}, - {file = "redis-5.1.1.tar.gz", hash = "sha256:f6c997521fedbae53387307c5d0bf784d9acc28d9f1d058abeac566ec4dbed72"}, + {file = "redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897"}, + {file = "redis-5.2.0.tar.gz", hash = "sha256:0b1087665a771b1ff2e003aa5bdd354f15a70c9e25d5a7dbf9c722c16528a7b0"}, ] [package.dependencies] @@ -8248,13 +8248,13 @@ torchvision = "*" [[package]] name = "tinycss2" -version = "1.3.0" +version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" files = [ - {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, - {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, ] [package.dependencies] diff --git a/test/workforce/test_workforce_single_agent.py b/test/workforce/test_workforce_single_agent.py index f15cfbe668..84af788076 100644 --- a/test/workforce/test_workforce_single_agent.py +++ b/test/workforce/test_workforce_single_agent.py @@ -15,8 +15,8 @@ from camel.agents.chat_agent import ChatAgent from camel.messages.base import BaseMessage +from camel.societies.workforce.single_agent_worker import SingleAgentWorker from camel.tasks.task import Task -from camel.workforce.single_agent_worker import SingleAgentWorker @pytest.mark.asyncio