{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "cs5RHepmhkEh" }, "outputs": [], "source": [ "!pip3 install -U swarms" ] }, { "cell_type": "markdown", "metadata": { "id": "-d9k3egzgp2_" }, "source": [ "API key" ] }, { "cell_type": "code", "source": [ "import os\n", "from google.colab import userdata\n", "os.environ['OPENAI_API_KEY'] = userdata.get('OPENAI_API_KEY')\n", "os.environ['SWARMS_API_KEY'] = userdata.get('SWARMS_API_KEY')\n", "os.environ['ANTHROPIC_API_KEY'] = userdata.get('ANTHROPIC_API_KEY')\n" ], "metadata": { "id": "rs9g9q3qgznb" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "!pip install anthropic\n", "!pip install chromadb" ], "metadata": { "id": "ApsuGC_txJn_" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "#Agents" ], "metadata": { "id": "nSKDrcQNhlZK" } }, { "cell_type": "markdown", "metadata": { "id": "SOpV9-9yfxTy" }, "source": [ "A basic example of how to use the OpenAI API to generate text." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1rJYyD5NfxTz" }, "outputs": [], "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "# Import the OpenAIChat model and the Agent struct\n", "from swarms import Agent, OpenAIChat\n", "\n", "# Load the environment variables\n", "load_dotenv()\n", "\n", "# Get the API key from the environment\n", "api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", "# Initialize the language model\n", "llm = OpenAIChat(\n", " temperature=0.5, openai_api_key=api_key, max_tokens=4000\n", ")\n", "\n", "\n", "## Initialize the workflow\n", "agent = Agent(llm=llm, max_loops=1, autosave=True, dashboard=True)\n", "\n", "# Run the workflow on a task\n", "agent.run(\"Generate a 10,000 word blog on health and wellness.\")" ] }, { "cell_type": "markdown", "metadata": { "id": "6VtgQ0F4BNc-" }, "source": [ "Look at the log, which may be empty." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "RqL5LL3xBLWR" }, "outputs": [], "source": [ "!cat errors.txt" ] }, { "cell_type": "markdown", "metadata": { "id": "dS9QM954fxT0" }, "source": [ "**Agent with Long Term Memory**\n", "\n", "```Agent``` equipped with quasi-infinite long term memory. Great for long document understanding, analysis, and retrieval." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1UmemEBBfxT1" }, "outputs": [], "source": [ "import os\n", "from dotenv import load_dotenv\n", "from swarms import Agent, OpenAIChat\n", "from swarms.playground.memory.chromadb_example import ChromaDB\n", "import logging\n", "import os\n", "import uuid\n", "from typing import Optional\n", "import chromadb\n", "from swarms.utils.data_to_text import data_to_text\n", "from swarms.utils.markdown_message import display_markdown_message\n", "from swarms.memory.base_vectordb import BaseVectorDatabase\n", "\n", "# Load environment variables\n", "load_dotenv()\n", "\n", "\n", "# Results storage using local ChromaDB\n", "class ChromaDB(BaseVectorDatabase):\n", " \"\"\"\n", "\n", " ChromaDB database\n", "\n", " Args:\n", " metric (str): The similarity metric to use.\n", " output (str): The name of the collection to store the results in.\n", " limit_tokens (int, optional): The maximum number of tokens to use for the query. Defaults to 1000.\n", " n_results (int, optional): The number of results to retrieve. Defaults to 2.\n", "\n", " Methods:\n", " add: _description_\n", " query: _description_\n", "\n", " Examples:\n", " >>> chromadb = ChromaDB(\n", " >>> metric=\"cosine\",\n", " >>> output=\"results\",\n", " >>> llm=\"gpt3\",\n", " >>> openai_api_key=OPENAI_API_KEY,\n", " >>> )\n", " >>> chromadb.add(task, result, result_id)\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " metric: str = \"cosine\",\n", " output_dir: str = \"swarms\",\n", " limit_tokens: Optional[int] = 1000,\n", " n_results: int = 3,\n", " docs_folder: str = None,\n", " verbose: bool = False,\n", " *args,\n", " **kwargs,\n", " ):\n", " self.metric = metric\n", " self.output_dir = output_dir\n", " self.limit_tokens = limit_tokens\n", " self.n_results = n_results\n", " self.docs_folder = docs_folder\n", " self.verbose = verbose\n", "\n", " # Disable ChromaDB logging\n", " if verbose:\n", " logging.getLogger(\"chromadb\").setLevel(logging.INFO)\n", "\n", " # Create Chroma collection\n", " chroma_persist_dir = \"chroma\"\n", " chroma_client = chromadb.PersistentClient(\n", " settings=chromadb.config.Settings(\n", " persist_directory=chroma_persist_dir,\n", " ),\n", " *args,\n", " **kwargs,\n", " )\n", "\n", " # Create ChromaDB client\n", " self.client = chromadb.Client()\n", "\n", " # Create Chroma collection\n", " self.collection = chroma_client.get_or_create_collection(\n", " name=output_dir,\n", " metadata={\"hnsw:space\": metric},\n", " *args,\n", " **kwargs,\n", " )\n", " display_markdown_message(\n", " \"ChromaDB collection created:\"\n", " f\" {self.collection.name} with metric: {self.metric} and\"\n", " f\" output directory: {self.output_dir}\"\n", " )\n", "\n", " # If docs\n", " if docs_folder:\n", " display_markdown_message(\n", " f\"Traversing directory: {docs_folder}\"\n", " )\n", " self.traverse_directory()\n", "\n", " def add(\n", " self,\n", " document: str,\n", " *args,\n", " **kwargs,\n", " ):\n", " \"\"\"\n", " Add a document to the ChromaDB collection.\n", "\n", " Args:\n", " document (str): The document to be added.\n", " condition (bool, optional): The condition to check before adding the document. Defaults to True.\n", "\n", " Returns:\n", " str: The ID of the added document.\n", " \"\"\"\n", " try:\n", " doc_id = str(uuid.uuid4())\n", " self.collection.add(\n", " ids=[doc_id],\n", " documents=[document],\n", " *args,\n", " **kwargs,\n", " )\n", " print(\"-----------------\")\n", " print(\"Document added successfully\")\n", " print(\"-----------------\")\n", " return doc_id\n", " except Exception as e:\n", " raise Exception(f\"Failed to add document: {str(e)}\")\n", "\n", " def query(\n", " self,\n", " query_text: str,\n", " *args,\n", " **kwargs,\n", " ):\n", " \"\"\"\n", " Query documents from the ChromaDB collection.\n", "\n", " Args:\n", " query (str): The query string.\n", " n_docs (int, optional): The number of documents to retrieve. Defaults to 1.\n", "\n", " Returns:\n", " dict: The retrieved documents.\n", " \"\"\"\n", " try:\n", " docs = self.collection.query(\n", " query_texts=[query_text],\n", " n_results=self.n_results,\n", " *args,\n", " **kwargs,\n", " )[\"documents\"]\n", " return docs[0]\n", " except Exception as e:\n", " raise Exception(f\"Failed to query documents: {str(e)}\")\n", "\n", " def traverse_directory(self):\n", " \"\"\"\n", " Traverse through every file in the given directory and its subdirectories,\n", " and return the paths of all files.\n", " Parameters:\n", " - directory_name (str): The name of the directory to traverse.\n", " Returns:\n", " - list: A list of paths to each file in the directory and its subdirectories.\n", " \"\"\"\n", " added_to_db = False\n", "\n", " for root, dirs, files in os.walk(self.docs_folder):\n", " for file in files:\n", " file_path = os.path.join(root, file) # Change this line\n", " _, ext = os.path.splitext(file_path)\n", " data = data_to_text(file_path)\n", " added_to_db = self.add(str(data))\n", " print(f\"{file_path} added to Database\")\n", "\n", " return added_to_db\n", "\n", "# Get the API key from the environment\n", "api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", "\n", "# Initilaize the chromadb client\n", "chromadb = ChromaDB(\n", " metric=\"cosine\",\n", " output_dir=\"scp\",\n", " docs_folder=\"artifacts\",\n", ")\n", "\n", "# Initialize the language model\n", "llm = OpenAIChat(\n", " temperature=0.5,\n", " openai_api_key=api_key,\n", " max_tokens=1000,\n", ")\n", "\n", "## Initialize the workflow\n", "agent = Agent(\n", " llm=llm,\n", " name = \"Health and Wellness Blog\",\n", " system_prompt=\"Generate a 10,000 word blog on health and wellness.\",\n", " max_loops=4,\n", " autosave=True,\n", " dashboard=True,\n", " long_term_memory=chromadb,\n", " memory_chunk_size=300,\n", ")\n", "\n", "# Run the workflow on a task\n", "agent.run(\"Generate a 10,000 word blog on health and wellness.\")\n", "\n", "\n", "\n", "## Initialize the workflow\n", "agent = Agent(\n", " llm=llm,\n", " name = \"Health and Wellness Blog\",\n", " system_prompt=\"Generate a 10,000 word blog on health and wellness.\",\n", " max_loops=4,\n", " autosave=True,\n", " dashboard=True,\n", " long_term_memory=chromadb,\n", " memory_chunk_size=300,\n", ")\n", "\n", "# Run the workflow on a task\n", "agent.run(\"Generate a 10,000 word blog on health and wellness.\")\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "bUGZ93NNfxT1" }, "source": [ "**```Agent``` with Long Term Memory ++ Tools!**\n", "An LLM equipped with long term memory and tools, a full stack agent capable of automating all and any digital tasks given a good prompt." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NbBXS2AqfxT2" }, "outputs": [], "source": [ "import logging\n", "import os\n", "import uuid\n", "from typing import Optional\n", "\n", "import chromadb\n", "from dotenv import load_dotenv\n", "\n", "from swarms.utils.data_to_text import data_to_text\n", "from swarms.utils.markdown_message import display_markdown_message\n", "from swarms.memory.base_vectordb import BaseVectorDatabase\n", "from swarms import Agent, OpenAIChat\n", "\n", "\n", "# Load environment variables\n", "load_dotenv()\n", "\n", "\n", "\n", "# Results storage using local ChromaDB\n", "class ChromaDB(BaseVectorDatabase):\n", " \"\"\"\n", "\n", " ChromaDB database\n", "\n", " Args:\n", " metric (str): The similarity metric to use.\n", " output (str): The name of the collection to store the results in.\n", " limit_tokens (int, optional): The maximum number of tokens to use for the query. Defaults to 1000.\n", " n_results (int, optional): The number of results to retrieve. Defaults to 2.\n", "\n", " Methods:\n", " add: _description_\n", " query: _description_\n", "\n", " Examples:\n", " >>> chromadb = ChromaDB(\n", " >>> metric=\"cosine\",\n", " >>> output=\"results\",\n", " >>> llm=\"gpt3\",\n", " >>> openai_api_key=OPENAI_API_KEY,\n", " >>> )\n", " >>> chromadb.add(task, result, result_id)\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " metric: str = \"cosine\",\n", " output_dir: str = \"swarms\",\n", " limit_tokens: Optional[int] = 1000,\n", " n_results: int = 3,\n", " docs_folder: str = None,\n", " verbose: bool = False,\n", " *args,\n", " **kwargs,\n", " ):\n", " self.metric = metric\n", " self.output_dir = output_dir\n", " self.limit_tokens = limit_tokens\n", " self.n_results = n_results\n", " self.docs_folder = docs_folder\n", " self.verbose = verbose\n", "\n", " # Disable ChromaDB logging\n", " if verbose:\n", " logging.getLogger(\"chromadb\").setLevel(logging.INFO)\n", "\n", " # Create Chroma collection\n", " chroma_persist_dir = \"chroma\"\n", " chroma_client = chromadb.PersistentClient(\n", " settings=chromadb.config.Settings(\n", " persist_directory=chroma_persist_dir,\n", " ),\n", " *args,\n", " **kwargs,\n", " )\n", "\n", " # Create ChromaDB client\n", " self.client = chromadb.Client()\n", "\n", " # Create Chroma collection\n", " self.collection = chroma_client.get_or_create_collection(\n", " name=output_dir,\n", " metadata={\"hnsw:space\": metric},\n", " *args,\n", " **kwargs,\n", " )\n", " display_markdown_message(\n", " \"ChromaDB collection created:\"\n", " f\" {self.collection.name} with metric: {self.metric} and\"\n", " f\" output directory: {self.output_dir}\"\n", " )\n", "\n", " # If docs\n", " if docs_folder:\n", " display_markdown_message(\n", " f\"Traversing directory: {docs_folder}\"\n", " )\n", " self.traverse_directory()\n", "\n", " def add(\n", " self,\n", " document: str,\n", " *args,\n", " **kwargs,\n", " ):\n", " \"\"\"\n", " Add a document to the ChromaDB collection.\n", "\n", " Args:\n", " document (str): The document to be added.\n", " condition (bool, optional): The condition to check before adding the document. Defaults to True.\n", "\n", " Returns:\n", " str: The ID of the added document.\n", " \"\"\"\n", " try:\n", " doc_id = str(uuid.uuid4())\n", " self.collection.add(\n", " ids=[doc_id],\n", " documents=[document],\n", " *args,\n", " **kwargs,\n", " )\n", " print(\"-----------------\")\n", " print(\"Document added successfully\")\n", " print(\"-----------------\")\n", " return doc_id\n", " except Exception as e:\n", " raise Exception(f\"Failed to add document: {str(e)}\")\n", "\n", " def query(\n", " self,\n", " query_text: str,\n", " *args,\n", " **kwargs,\n", " ):\n", " \"\"\"\n", " Query documents from the ChromaDB collection.\n", "\n", " Args:\n", " query (str): The query string.\n", " n_docs (int, optional): The number of documents to retrieve. Defaults to 1.\n", "\n", " Returns:\n", " dict: The retrieved documents.\n", " \"\"\"\n", " try:\n", " docs = self.collection.query(\n", " query_texts=[query_text],\n", " n_results=self.n_results,\n", " *args,\n", " **kwargs,\n", " )[\"documents\"]\n", " return docs[0]\n", " except Exception as e:\n", " raise Exception(f\"Failed to query documents: {str(e)}\")\n", "\n", " def traverse_directory(self):\n", " \"\"\"\n", " Traverse through every file in the given directory and its subdirectories,\n", " and return the paths of all files.\n", " Parameters:\n", " - directory_name (str): The name of the directory to traverse.\n", " Returns:\n", " - list: A list of paths to each file in the directory and its subdirectories.\n", " \"\"\"\n", " added_to_db = False\n", "\n", " for root, dirs, files in os.walk(self.docs_folder):\n", " for file in files:\n", " file_path = os.path.join(root, file) # Change this line\n", " _, ext = os.path.splitext(file_path)\n", " data = data_to_text(file_path)\n", " added_to_db = self.add(str(data))\n", " print(f\"{file_path} added to Database\")\n", "\n", " return added_to_db\n", "\n", "\n", "# Making an instance of the ChromaDB class\n", "memory = ChromaDB(\n", " metric=\"cosine\",\n", " n_results=3,\n", " output_dir=\"results\",\n", " docs_folder=\"docs\",\n", ")\n", "\n", "# Initialize a tool\n", "def search_api(query: str):\n", " # Add your logic here\n", " return query\n", "\n", "# Initializing the agent with the Gemini instance and other parameters\n", "agent = Agent(\n", " agent_name=\"Covid-19-Chat\",\n", " agent_description=(\n", " \"This agent provides information about COVID-19 symptoms.\"\n", " ),\n", " llm=OpenAIChat(),\n", " max_loops=\"auto\",\n", " autosave=True,\n", " verbose=True,\n", " long_term_memory=memory,\n", " stopping_condition=\"finish\",\n", " tools=[search_api],\n", ")\n", "\n", "# Defining the task and image path\n", "task = (\"What are the symptoms of COVID-19?\",)\n", "\n", "# Running the agent with the specified task and image\n", "out = agent.run(task)\n", "print(out)\n" ] }, { "cell_type": "markdown", "source": [ "# Devin" ], "metadata": { "id": "PJSxgkkxkxM-" } }, { "cell_type": "code", "source": [ "from swarms import Agent, Anthropic\n", "import subprocess\n", "\n", "# Model\n", "llm = Anthropic(\n", " temperature=0.1,\n", ")\n", "\n", "# Tools\n", "def terminal(\n", " code: str,\n", "):\n", " \"\"\"\n", " Run code in the terminal.\n", "\n", " Args:\n", " code (str): The code to run in the terminal.\n", "\n", " Returns:\n", " str: The output of the code.\n", " \"\"\"\n", " out = subprocess.run(\n", " code, shell=True, capture_output=True, text=True\n", " ).stdout\n", " return str(out)\n", "\n", "def browser(query: str):\n", " \"\"\"\n", " Search the query in the browser with the `browser` tool.\n", "\n", " Args:\n", " query (str): The query to search in the browser.\n", "\n", " Returns:\n", " str: The search results.\n", " \"\"\"\n", " import webbrowser\n", "\n", " url = f\"https://www.google.com/search?q={query}\"\n", " webbrowser.open(url)\n", " return f\"Searching for {query} in the browser.\"\n", "\n", "def create_file(file_path: str, content: str):\n", " \"\"\"\n", " Create a file using the file editor tool.\n", "\n", " Args:\n", " file_path (str): The path to the file.\n", " content (str): The content to write to the file.\n", "\n", " Returns:\n", " str: The result of the file creation operation.\n", " \"\"\"\n", " with open(file_path, \"w\") as file:\n", " file.write(content)\n", " return f\"File {file_path} created successfully.\"\n", "\n", "def file_editor(file_path: str, mode: str, content: str):\n", " \"\"\"\n", " Edit a file using the file editor tool.\n", "\n", " Args:\n", " file_path (str): The path to the file.\n", " mode (str): The mode to open the file in.\n", " content (str): The content to write to the file.\n", "\n", " Returns:\n", " str: The result of the file editing operation.\n", " \"\"\"\n", " with open(file_path, mode) as file:\n", " file.write(content)\n", " return f\"File {file_path} edited successfully.\"\n", "\n", "\n", "# Agent\n", "agent = Agent(\n", " agent_name=\"Devin\",\n", " system_prompt=(\n", " \"Autonomous agent that can interact with humans and other\"\n", " \" agents. Be Helpful and Kind. Use the tools provided to\"\n", " \" assist the user. Return all code in markdown format.\"\n", " ),\n", " llm=llm,\n", " max_loops=\"auto\",\n", " autosave=True,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " interactive=True,\n", " tools=[terminal, browser, file_editor, create_file],\n", " code_interpreter=True,\n", " # streaming=True,\n", ")\n", "\n", "# Run the agent\n", "out = agent(\"Create a new file for a plan to take over the world.\")\n", "print(out)" ], "metadata": { "id": "cGrd4b8JkyPW" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Agentwith Pydantic BaseModel as Output Type" ], "metadata": { "id": "DWZxqhc3mjki" } }, { "cell_type": "code", "source": [ "from pydantic import BaseModel, Field\n", "from swarms import Anthropic, Agent\n", "\n", "\n", "# Initialize the schema for the person's information\n", "class Schema(BaseModel):\n", " name: str = Field(..., title=\"Name of the person\")\n", " agent: int = Field(..., title=\"Age of the person\")\n", " is_student: bool = Field(..., title=\"Whether the person is a student\")\n", " courses: list[str] = Field(\n", " ..., title=\"List of courses the person is taking\"\n", " )\n", "\n", "\n", "# Convert the schema to a JSON string\n", "tool_schema = Schema(\n", " name=\"Tool Name\",\n", " agent=1,\n", " is_student=True,\n", " courses=[\"Course1\", \"Course2\"],\n", ")\n", "\n", "# Define the task to generate a person's information\n", "task = \"Generate a person's information based on the following schema:\"\n", "\n", "# Initialize the agent\n", "agent = Agent(\n", " agent_name=\"Person Information Generator\",\n", " system_prompt=(\n", " \"Generate a person's information based on the following schema:\"\n", " ),\n", " # Set the tool schema to the JSON string -- this is the key difference\n", " tool_schema=tool_schema,\n", " llm=Anthropic(),\n", " max_loops=3,\n", " autosave=True,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " interactive=True,\n", " # Set the output type to the tool schema which is a BaseModel\n", " output_type=tool_schema, # or dict, or str\n", " metadata_output_type=\"json\",\n", " # List of schemas that the agent can handle\n", " list_tool_schemas=[tool_schema],\n", " function_calling_format_type=\"OpenAI\",\n", " function_calling_type=\"json\", # or soon yaml\n", ")\n", "\n", "# Run the agent to generate the person's information\n", "generated_data = agent.run(task)\n", "\n", "# Print the generated data\n", "print(f\"Generated data: {generated_data}\")\n", "\n" ], "metadata": { "id": "yuhvrtU8mkv9" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Multi Modal Autonomous Agent" ], "metadata": { "id": "m6AIyiYKmtJp" } }, { "cell_type": "code", "source": [ "# Description: This is an example of how to use the Agent class to run a multi-modal workflow\n", "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "from swarms import GPT4VisionAPI, Agent\n", "\n", "# Load the environment variables\n", "load_dotenv()\n", "\n", "# Get the API key from the environment\n", "api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", "# Initialize the language model\n", "llm = GPT4VisionAPI(\n", " openai_api_key=api_key,\n", " max_tokens=500,\n", ")\n", "\n", "# Initialize the task\n", "task = (\n", " \"Analyze this image of an assembly line and identify any issues such as\"\n", " \" misaligned parts, defects, or deviations from the standard assembly\"\n", " \" process. IF there is anything unsafe in the image, explain why it is\"\n", " \" unsafe and how it could be improved.\"\n", ")\n", "img = \"assembly_line.jpg\"\n", "\n", "## Initialize the workflow\n", "agent = Agent(\n", " llm=llm, max_loops=\"auto\", autosave=True, dashboard=True, multi_modal=True\n", ")\n", "\n", "# Run the workflow on a task\n", "agent.run(task=task, img=img)" ], "metadata": { "id": "btPwUmYLmue_" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# ToolAgent" ], "metadata": { "id": "aax1iI_r54jc" } }, { "cell_type": "code", "source": [ "from pydantic import BaseModel, Field\n", "from transformers import AutoModelForCausalLM, AutoTokenizer\n", "\n", "from swarms import ToolAgent\n", "from swarms.utils.json_utils import base_model_to_json\n", "\n", "# Load the pre-trained model and tokenizer\n", "model = AutoModelForCausalLM.from_pretrained(\n", " \"databricks/dolly-v2-12b\",\n", " load_in_4bit=True,\n", " device_map=\"auto\",\n", ")\n", "tokenizer = AutoTokenizer.from_pretrained(\"databricks/dolly-v2-12b\")\n", "\n", "\n", "# Initialize the schema for the person's information\n", "class Schema(BaseModel):\n", " name: str = Field(..., title=\"Name of the person\")\n", " agent: int = Field(..., title=\"Age of the person\")\n", " is_student: bool = Field(\n", " ..., title=\"Whether the person is a student\"\n", " )\n", " courses: list[str] = Field(\n", " ..., title=\"List of courses the person is taking\"\n", " )\n", "\n", "\n", "# Convert the schema to a JSON string\n", "tool_schema = base_model_to_json(Schema)\n", "\n", "# Define the task to generate a person's information\n", "task = (\n", " \"Generate a person's information based on the following schema:\"\n", ")\n", "\n", "# Create an instance of the ToolAgent class\n", "agent = ToolAgent(\n", " name=\"dolly-function-agent\",\n", " description=\"Ana gent to create a child data\",\n", " model=model,\n", " tokenizer=tokenizer,\n", " json_schema=tool_schema,\n", ")\n", "\n", "# Run the agent to generate the person's information\n", "generated_data = agent.run(task)\n", "\n", "# Print the generated data\n", "print(f\"Generated data: {generated_data}\")\n" ], "metadata": { "id": "SgJ3xZP156o3" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Task" ], "metadata": { "id": "DHfO5dtG6XhZ" } }, { "cell_type": "code", "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "from swarms import Agent, OpenAIChat, Task\n", "\n", "# Load the environment variables\n", "load_dotenv()\n", "\n", "\n", "# Define a function to be used as the action\n", "def my_action():\n", " print(\"Action executed\")\n", "\n", "\n", "# Define a function to be used as the condition\n", "def my_condition():\n", " print(\"Condition checked\")\n", " return True\n", "\n", "\n", "# Create an agent\n", "agent = Agent(\n", " llm=OpenAIChat(openai_api_key=os.environ[\"OPENAI_API_KEY\"]),\n", " max_loops=1,\n", " dashboard=False,\n", ")\n", "\n", "# Create a task\n", "task = Task(\n", " description=(\n", " \"Generate a report on the top 3 biggest expenses for small\"\n", " \" businesses and how businesses can save 20%\"\n", " ),\n", " agent=agent,\n", ")\n", "\n", "# Set the action and condition\n", "task.set_action(my_action)\n", "task.set_condition(my_condition)\n", "\n", "# Execute the task\n", "print(\"Executing task...\")\n", "task.run()\n", "\n", "# Check if the task is completed\n", "if task.is_completed():\n", " print(\"Task completed\")\n", "else:\n", " print(\"Task not completed\")\n", "\n", "# Output the result of the task\n", "print(f\"Task result: {task.result}\")" ], "metadata": { "id": "kRIhX_Ze6ZO2" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Multi-Agent Orchestration\n", "\n", "## SequentialWorkflow" ], "metadata": { "id": "W2i6YLUN6fZg" } }, { "cell_type": "code", "source": [ "from swarms import Agent, SequentialWorkflow, Anthropic\n", "\n", "\n", "# Initialize the language model agent (e.g., GPT-3)\n", "llm = Anthropic()\n", "\n", "# Initialize agents for individual tasks\n", "agent1 = Agent(\n", " agent_name=\"Blog generator\",\n", " system_prompt=\"Generate a blog post like stephen king\",\n", " llm=llm,\n", " max_loops=1,\n", " dashboard=False,\n", " tools=[],\n", ")\n", "agent2 = Agent(\n", " agent_name=\"summarizer\",\n", " system_prompt=\"Sumamrize the blog post\",\n", " llm=llm,\n", " max_loops=1,\n", " dashboard=False,\n", " tools=[],\n", ")\n", "\n", "# Create the Sequential workflow\n", "workflow = SequentialWorkflow(\n", " agents=[agent1, agent2], max_loops=1, verbose=False\n", ")\n", "\n", "# Run the workflow\n", "workflow.run(\n", " \"Generate a blog post on how swarms of agents can help businesses grow.\"\n", ")\n" ], "metadata": { "id": "Lpqq4SA96jo3" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## ConcurrentWorkflow" ], "metadata": { "id": "CF4kbMgb6wGI" } }, { "cell_type": "code", "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "from swarms import Agent, ConcurrentWorkflow, OpenAIChat, Task\n", "\n", "# Load environment variables from .env file\n", "load_dotenv()\n", "\n", "# Load environment variables\n", "llm = OpenAIChat(openai_api_key=os.getenv(\"OPENAI_API_KEY\"))\n", "agent = Agent(llm=llm, max_loops=1)\n", "\n", "# Create a workflow\n", "workflow = ConcurrentWorkflow(max_workers=5)\n", "\n", "# Create tasks\n", "task1 = Task(agent, \"What's the weather in miami\")\n", "task2 = Task(agent, \"What's the weather in new york\")\n", "task3 = Task(agent, \"What's the weather in london\")\n", "\n", "# Add tasks to the workflow\n", "workflow.add(tasks=[task1, task2, task3])\n", "\n", "# Run the workflow\n", "workflow.run()" ], "metadata": { "id": "Fl2Oambn6z5v" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## RecursiveWorkflow\n" ], "metadata": { "id": "Cw0i-5Nn7Q83" } }, { "cell_type": "code", "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "from swarms import Agent, OpenAIChat, RecursiveWorkflow, Task\n", "\n", "# Load environment variables from .env file\n", "load_dotenv()\n", "\n", "# Load environment variables\n", "llm = OpenAIChat(openai_api_key=os.getenv(\"OPENAI_API_KEY\"))\n", "agent = Agent(llm=llm, max_loops=1)\n", "\n", "# Create a workflow\n", "workflow = RecursiveWorkflow(stop_token=\"\")\n", "\n", "# Create tasks\n", "task1 = Task(agent, \"What's the weather in miami\")\n", "task2 = Task(agent, \"What's the weather in new york\")\n", "task3 = Task(agent, \"What's the weather in london\")\n", "\n", "# Add tasks to the workflow\n", "workflow.add(task1)\n", "workflow.add(task2)\n", "workflow.add(task3)\n", "\n", "# Run the workflow\n", "workflow.run()" ], "metadata": { "id": "7Pri4tNL7U-y" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## SwarmNetwork" ], "metadata": { "id": "8f-9tgtT7k7D" } }, { "cell_type": "code", "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "# Import the OpenAIChat model and the Agent struct\n", "from swarms import Agent, OpenAIChat, SwarmNetwork\n", "\n", "# Load the environment variables\n", "load_dotenv()\n", "\n", "# Get the API key from the environment\n", "api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", "# Initialize the language model\n", "llm = OpenAIChat(\n", " temperature=0.5,\n", " openai_api_key=api_key,\n", ")\n", "\n", "## Initialize the workflow\n", "agent = Agent(llm=llm, max_loops=1, agent_name=\"Social Media Manager\")\n", "agent2 = Agent(llm=llm, max_loops=1, agent_name=\" Product Manager\")\n", "agent3 = Agent(llm=llm, max_loops=1, agent_name=\"SEO Manager\")\n", "\n", "\n", "# Load the swarmnet with the agents\n", "swarmnet = SwarmNetwork(\n", " agents=[agent, agent2, agent3],\n", ")\n", "\n", "# List the agents in the swarm network\n", "out = swarmnet.list_agents()\n", "print(out)\n", "\n", "# Run the workflow on a task\n", "out = swarmnet.run_single_agent(\n", " agent2.id, \"Generate a 10,000 word blog on health and wellness.\"\n", ")\n", "print(out)\n", "\n", "\n", "# Run all the agents in the swarm network on a task\n", "out = swarmnet.run_many_agents(\"Generate a 10,000 word blog on health and wellness.\")\n", "print(out)" ], "metadata": { "id": "ttbv_Vne7oZj" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Majority Voting" ], "metadata": { "id": "U-5p46vW72pS" } }, { "cell_type": "code", "source": [ "from swarms import Agent, MajorityVoting, ChromaDB, Anthropic\n", "\n", "# Initialize the llm\n", "llm = Anthropic()\n", "\n", "# Agents\n", "agent1 = Agent(\n", " llm = llm,\n", " system_prompt=\"You are the leader of the Progressive Party. What is your stance on healthcare?\",\n", " agent_name=\"Progressive Leader\",\n", " agent_description=\"Leader of the Progressive Party\",\n", " long_term_memory=ChromaDB(),\n", " max_steps=1,\n", ")\n", "\n", "agent2 = Agent(\n", " llm=llm,\n", " agent_name=\"Conservative Leader\",\n", " agent_description=\"Leader of the Conservative Party\",\n", " long_term_memory=ChromaDB(),\n", " max_steps=1,\n", ")\n", "\n", "agent3 = Agent(\n", " llm=llm,\n", " agent_name=\"Libertarian Leader\",\n", " agent_description=\"Leader of the Libertarian Party\",\n", " long_term_memory=ChromaDB(),\n", " max_steps=1,\n", ")\n", "\n", "# Initialize the majority voting\n", "mv = MajorityVoting(\n", " agents=[agent1, agent2, agent3],\n", " output_parser=llm.majority_voting,\n", " autosave=False,\n", " verbose=True,\n", ")\n", "\n", "\n", "# Start the majority voting\n", "mv.run(\"What is your stance on healthcare?\")" ], "metadata": { "id": "ZaRfyNCH773B" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Real-World Deployment\n", "\n", "## Multi-Agent Swarm for Logistics" ], "metadata": { "id": "-uABoH4Y8Zkh" } }, { "cell_type": "code", "source": [ "import os\n", "\n", "from dotenv import load_dotenv\n", "\n", "from swarms.models import GPT4VisionAPI\n", "from swarms.prompts.logistics import (\n", " Efficiency_Agent_Prompt,\n", " Health_Security_Agent_Prompt,\n", " Productivity_Agent_Prompt,\n", " Quality_Control_Agent_Prompt,\n", " Safety_Agent_Prompt,\n", " Security_Agent_Prompt,\n", " Sustainability_Agent_Prompt,\n", ")\n", "from swarms.structs import Agent\n", "\n", "# Load ENV\n", "load_dotenv()\n", "api_key = os.getenv(\"OPENAI_API_KEY\")\n", "\n", "# GPT4VisionAPI\n", "llm = GPT4VisionAPI(openai_api_key=api_key)\n", "\n", "# Image for analysis\n", "factory_image = \"factory_image1.jpg\"\n", "\n", "# Initialize agents with respective prompts\n", "health_security_agent = Agent(\n", " llm=llm,\n", " sop=Health_Security_Agent_Prompt,\n", " max_loops=1,\n", " multi_modal=True,\n", ")\n", "\n", "# Quality control agent\n", "quality_control_agent = Agent(\n", " llm=llm,\n", " sop=Quality_Control_Agent_Prompt,\n", " max_loops=1,\n", " multi_modal=True,\n", ")\n", "\n", "\n", "# Productivity Agent\n", "productivity_agent = Agent(\n", " llm=llm,\n", " sop=Productivity_Agent_Prompt,\n", " max_loops=1,\n", " multi_modal=True,\n", ")\n", "\n", "# Initiailize safety agent\n", "safety_agent = Agent(llm=llm, sop=Safety_Agent_Prompt, max_loops=1, multi_modal=True)\n", "\n", "# Init the security agent\n", "security_agent = Agent(\n", " llm=llm, sop=Security_Agent_Prompt, max_loops=1, multi_modal=True\n", ")\n", "\n", "\n", "# Initialize sustainability agent\n", "sustainability_agent = Agent(\n", " llm=llm,\n", " sop=Sustainability_Agent_Prompt,\n", " max_loops=1,\n", " multi_modal=True,\n", ")\n", "\n", "\n", "# Initialize efficincy agent\n", "efficiency_agent = Agent(\n", " llm=llm,\n", " sop=Efficiency_Agent_Prompt,\n", " max_loops=1,\n", " multi_modal=True,\n", ")\n", "\n", "# Run agents with respective tasks on the same image\n", "health_analysis = health_security_agent.run(\n", " \"Analyze the safety of this factory\", factory_image\n", ")\n", "quality_analysis = quality_control_agent.run(\n", " \"Examine product quality in the factory\", factory_image\n", ")\n", "productivity_analysis = productivity_agent.run(\n", " \"Evaluate factory productivity\", factory_image\n", ")\n", "safety_analysis = safety_agent.run(\n", " \"Inspect the factory's adherence to safety standards\",\n", " factory_image,\n", ")\n", "security_analysis = security_agent.run(\n", " \"Assess the factory's security measures and systems\",\n", " factory_image,\n", ")\n", "sustainability_analysis = sustainability_agent.run(\n", " \"Examine the factory's sustainability practices\", factory_image\n", ")\n", "efficiency_analysis = efficiency_agent.run(\n", " \"Analyze the efficiency of the factory's manufacturing process\",\n", " factory_image,\n", ")" ], "metadata": { "id": "PszQmAoG8gI7" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Build your own LLMs, Agents, and Swarms!\n", "\n", "## Swarms Compliant Model Interface" ], "metadata": { "id": "2x-lo4hr89E1" } }, { "cell_type": "code", "source": [ "from swarms import BaseLLM\n", "\n", "class vLLMLM(BaseLLM):\n", " def __init__(self, model_name='default_model', tensor_parallel_size=1, *args, **kwargs):\n", " super().__init__(*args, **kwargs)\n", " self.model_name = model_name\n", " self.tensor_parallel_size = tensor_parallel_size\n", " # Add any additional initialization here\n", "\n", " def run(self, task: str):\n", " pass\n", "\n", "# Example\n", "model = vLLMLM(\"mistral\")\n", "\n", "# Run the model\n", "out = model(\"Analyze these financial documents and summarize of them\")\n", "print(out)\n" ], "metadata": { "id": "dyaoJKYl9FIp" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Swarms Compliant Agent Interface\n", "\n", "This is a non-running example." ], "metadata": { "id": "FD1Ro1O59MUF" } }, { "cell_type": "code", "source": [ "from swarms import Agent\n", "\n", "\n", "class MyCustomAgent(Agent):\n", "\n", "    def __init__(self, *args, **kwargs):\n", "\n", "        super().__init__(*args, **kwargs)\n", "\n", "        # Custom initialization logic\n", "\n", "    def custom_method(self, *args, **kwargs):\n", "\n", "        # Implement custom logic here\n", "\n", "        pass\n", "\n", "    def run(self, task, *args, **kwargs):\n", "\n", "        # Customize the run method\n", "\n", "        response = super().run(task, *args, **kwargs)\n", "\n", "        # Additional custom logic\n", "\n", "        return response`\n", "\n", "# Model\n", "agent = MyCustomAgent()\n", "\n", "# Run the agent\n", "out = agent(\"Analyze and summarize these financial documents: \")\n", "print(out)\n" ], "metadata": { "id": "tM3P3Uk39Q9y" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Compliant Interface for Multi-Agent Collaboration\n", "\n", "This is a non-running example." ], "metadata": { "id": "fhbgPU7X9iyB" } }, { "cell_type": "code", "source": [ "from swarms import AutoSwarm, AutoSwarmRouter, BaseSwarm\n", "\n", "\n", "# Build your own Swarm\n", "class MySwarm(BaseSwarm):\n", " def __init__(self, name=\"kyegomez/myswarm\", *args, **kwargs):\n", " super().__init__(*args, **kwargs)\n", " self.name = name\n", "\n", " def run(self, task: str, *args, **kwargs):\n", " # Add your multi-agent logic here\n", " # agent 1\n", " # agent 2\n", " # agent 3\n", " return \"output of the swarm\"\n", "\n", "\n", "# Add your custom swarm to the AutoSwarmRouter\n", "router = AutoSwarmRouter(\n", " swarms=[MySwarm]\n", ")\n", "\n", "\n", "# Create an AutoSwarm instance\n", "autoswarm = AutoSwarm(\n", " name=\"kyegomez/myswarm\",\n", " description=\"A simple API to build and run swarms\",\n", " verbose=True,\n", " router=router,\n", ")\n", "\n", "\n", "# Run the AutoSwarm\n", "autoswarm.run(\"Analyze these financial data and give me a summary\")\n", "\n" ], "metadata": { "id": "q_OcaKPo9nnI" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# AgentRearrange" ], "metadata": { "id": "XkSjPre39x5S" } }, { "cell_type": "code", "source": [ "from swarms import Agent, AgentRearrange, rearrange, Anthropic\n", "\n", "\n", "# Initialize the director agent\n", "\n", "director = Agent(\n", " agent_name=\"Director\",\n", " system_prompt=\"Directs the tasks for the workers\",\n", " llm=Anthropic(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"director.json\",\n", ")\n", "\n", "\n", "# Initialize worker 1\n", "\n", "worker1 = Agent(\n", " agent_name=\"Worker1\",\n", " system_prompt=\"Generates a transcript for a youtube video on what swarms are\",\n", " llm=Anthropic(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"worker1.json\",\n", ")\n", "\n", "\n", "# Initialize worker 2\n", "worker2 = Agent(\n", " agent_name=\"Worker2\",\n", " system_prompt=\"Summarizes the transcript generated by Worker1\",\n", " llm=Anthropic(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"worker2.json\",\n", ")\n", "\n", "\n", "# Create a list of agents\n", "agents = [director, worker1, worker2]\n", "\n", "# Define the flow pattern\n", "flow = \"Director -> Worker1 -> Worker2\"\n", "\n", "# Using AgentRearrange class\n", "agent_system = AgentRearrange(agents=agents, flow=flow)\n", "output = agent_system.run(\n", " \"Create a format to express and communicate swarms of llms in a structured manner for youtube\"\n", ")\n", "print(output)\n", "\n", "\n", "# Using rearrange function\n", "output = rearrange(\n", " agents,\n", " flow,\n", " \"Create a format to express and communicate swarms of llms in a structured manner for youtube\",\n", ")\n", "\n", "print(output)\n" ], "metadata": { "id": "kCsf1Vwz92Kx" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# HierarhicalSwarm\n", "\n", "coming soon" ], "metadata": { "id": "yRldmkep-Hui" } }, { "cell_type": "markdown", "source": [ "## AgentLoadBalancer\n", "\n", "Coming soon" ], "metadata": { "id": "g-9runeE-N77" } }, { "cell_type": "markdown", "source": [ "## GraphSwarm\n", "\n", "Coming soon" ], "metadata": { "id": "4iT48QMq-TS-" } }, { "cell_type": "markdown", "source": [ "## MixtureOfAgents" ], "metadata": { "id": "GzAFomOs-X-G" } }, { "cell_type": "code", "source": [ "from swarms import Agent, OpenAIChat, MixtureOfAgents\n", "\n", "# Initialize the director agent\n", "director = Agent(\n", " agent_name=\"Director\",\n", " system_prompt=\"Directs the tasks for the accountants\",\n", " llm=OpenAIChat(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"director.json\",\n", ")\n", "\n", "# Initialize accountant 1\n", "accountant1 = Agent(\n", " agent_name=\"Accountant1\",\n", " system_prompt=\"Prepares financial statements\",\n", " llm=OpenAIChat(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"accountant1.json\",\n", ")\n", "\n", "# Initialize accountant 2\n", "accountant2 = Agent(\n", " agent_name=\"Accountant2\",\n", " system_prompt=\"Audits financial records\",\n", " llm=OpenAIChat(),\n", " max_loops=1,\n", " dashboard=False,\n", " streaming_on=True,\n", " verbose=True,\n", " stopping_token=\"\",\n", " state_save_file_type=\"json\",\n", " saved_state_path=\"accountant2.json\",\n", ")\n", "\n", "# Create a list of agents\n", "agents = [director, accountant1, accountant2]\n", "\n", "\n", "# Swarm\n", "swarm = MixtureOfAgents(\n", " name=\"Mixture of Accountants\",\n", " agents=agents,\n", " layers=3,\n", " final_agent=director,\n", ")\n", "\n", "\n", "# Run the swarm\n", "out = swarm.run(\"Prepare financial statements and audit financial records\")\n", "print(out)" ], "metadata": { "id": "Y_jyxKJf-bLe" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [], "metadata": { "id": "2KRVmRAI-hpU" } } ], "metadata": { "colab": { "gpuType": "T4", "private_outputs": true, "provenance": [], "include_colab_link": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }