diff --git a/Notebooks/Coding Assistant/coding_assistant_eval.ipynb b/notebooks/Coding Assistant/coding_assistant_eval.ipynb similarity index 100% rename from Notebooks/Coding Assistant/coding_assistant_eval.ipynb rename to notebooks/Coding Assistant/coding_assistant_eval.ipynb diff --git a/notebooks/Flows_101/crewai_flows_101.ipynb b/notebooks/Flows_101/crewai_flows_101.ipynb new file mode 100644 index 00000000..c53fc25b --- /dev/null +++ b/notebooks/Flows_101/crewai_flows_101.ipynb @@ -0,0 +1,1883 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "D2QMtJMSc4Sj" + }, + "source": [ + "# ๐Ÿš€ **CrewAI Flow: Dynamic Content Creation Router**\n", + "\n", + "## Project Overview\n", + "\n", + "This notebook demonstrates a **CrewAI Flow** that dynamically routes content creation tasks to specialized crew of agents based on user input. This workflow showcases CrewAI's advanced Flow architecture with **state persistence**, **event-driven routing**, and **multi-crew orchestration**.\n", + "\n", + "### ๐ŸŽฏ What you'll learn\n", + "\n", + "- **Flow Architecture**: Event-driven workflows with `@start`, `@router`, and `@listen` decorators\n", + "- **State Management**: Persistent state across workflow execution with `@persist`\n", + "- **Dynamic Routing**: Intelligent crew selection based on content type\n", + "- **Multi-Crew Orchestration**: Coordinating specialized teams for different content formats\n", + "\n", + "### ๐ŸŒŠ Flow Steps:\n", + "1. **Input Collection**: Gather URL and desired content type from user\n", + "2. **Dynamic Routing**: Route to appropriate specialized crew based on content type\n", + "3. **Content Processing**: Execute specialized content creation with dedicated crews\n", + "4. **Output Finalization**: Return polished, ready-to-use content" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yx2ptS5qdNbZ" + }, + "source": [ + "First we'll start by installing the required packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "G-Dic6iLdHLF", + "outputId": "ebe519ff-c984-4da9-9ca3-67cda984a523" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m40.6/40.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m42.8/42.8 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m67.3/67.3 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m48.5/48.5 kB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m418.7/418.7 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m8.7/8.7 MB\u001b[0m \u001b[31m67.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m16.4/16.4 MB\u001b[0m \u001b[31m66.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m719.8/719.8 kB\u001b[0m \u001b[31m36.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m628.3/628.3 kB\u001b[0m \u001b[31m32.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m2.4/2.4 MB\u001b[0m \u001b[31m83.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m147.8/147.8 kB\u001b[0m \u001b[31m13.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m211.3/211.3 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m155.5/155.5 kB\u001b[0m \u001b[31m12.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m35.8/35.8 MB\u001b[0m \u001b[31m24.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m72.5/72.5 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m131.9/131.9 kB\u001b[0m \u001b[31m9.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m65.7/65.7 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m208.0/208.0 kB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m60.0/60.0 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m5.6/5.6 MB\u001b[0m \u001b[31m87.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m5.9/5.9 MB\u001b[0m \u001b[31m78.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m57.6/57.6 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m756.0/756.0 kB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m106.7/106.7 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m786.2/786.2 kB\u001b[0m \u001b[31m44.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m3.0/3.0 MB\u001b[0m \u001b[31m83.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m242.3/242.3 kB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m78.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m317.1/317.1 kB\u001b[0m \u001b[31m23.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m284.2/284.2 kB\u001b[0m \u001b[31m20.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m98.0/98.0 kB\u001b[0m \u001b[31m7.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m45.5/45.5 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m131.6/131.6 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m73.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m45.1/45.1 kB\u001b[0m \u001b[31m3.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m66.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m64.7/64.7 kB\u001b[0m \u001b[31m4.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m363.0/363.0 kB\u001b[0m \u001b[31m24.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m213.1/213.1 kB\u001b[0m \u001b[31m15.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m103.3/103.3 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m45.9/45.9 MB\u001b[0m \u001b[31m12.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m89.1/89.1 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m313.2/313.2 kB\u001b[0m \u001b[31m20.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m77.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m71.1/71.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m46.0/46.0 kB\u001b[0m \u001b[31m3.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m295.3/295.3 kB\u001b[0m \u001b[31m21.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m510.8/510.8 kB\u001b[0m \u001b[31m32.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m86.8/86.8 kB\u001b[0m \u001b[31m6.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m66.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m209.2/209.2 kB\u001b[0m \u001b[31m15.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m44.0/44.0 MB\u001b[0m \u001b[31m20.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m337.3/337.3 kB\u001b[0m \u001b[31m21.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m4.7/4.7 MB\u001b[0m \u001b[31m102.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m452.2/452.2 kB\u001b[0m \u001b[31m28.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m5.4/5.4 MB\u001b[0m \u001b[31m100.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m229.6/229.6 kB\u001b[0m \u001b[31m17.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m3.5/3.5 MB\u001b[0m \u001b[31m86.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for pypika (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "google-colab 1.0.0 requires requests==2.32.4, but you have requests 2.32.5 which is incompatible.\n", + "transformers 4.56.1 requires tokenizers<=0.23.0,>=0.22.0, but you have tokenizers 0.20.3 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ], + "source": [ + "%pip install -U --quiet crewai==0.177.0 crewai_tools" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cJhrxHrefNcK" + }, + "source": [ + "Set the API Keys needed:\n", + "\n", + "- `OPENAI_API_KEY` or any LLM provider you prefer\n", + "- `SERPER_API_KEY` they have a generous free tier you can use. Get your key at https://serper.dev" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CaXuYxNXeydI", + "outputId": "d9441cfa-f234-491d-c102-68950325d61a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "โœ… API keys set\n" + ] + } + ], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "# Get keys from environment first\n", + "OPENAI_API_KEY = os.environ.get('OPENAI_API_KEY')\n", + "SERPER_API_KEY = os.environ.get('SERPER_API_KEY')\n", + "\n", + "# Prompt user for keys only if not already set\n", + "if not OPENAI_API_KEY:\n", + " OPENAI_API_KEY = getpass.getpass(\"OpenAI API key (hidden): \")\n", + "if not SERPER_API_KEY:\n", + " SERPER_API_KEY = getpass.getpass(\"Serper API key (hidden): \")\n", + "\n", + "if OPENAI_API_KEY and SERPER_API_KEY:\n", + " os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY\n", + " os.environ['SERPER_API_KEY'] = SERPER_API_KEY\n", + " print(\"โœ… API keys set\")\n", + "else:\n", + " print(\"๐Ÿšจ API keys not set\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tul7CSEKp84o" + }, + "source": [ + "### Define the State Model for the Flow\n", + "\n", + "The state model is like a shared notebook that all agents can read and write to.\n", + "\n", + "It persists data throughout the entire workflow execution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xIb41H6U1eej" + }, + "outputs": [], + "source": [ + "from typing import Dict, Any\n", + "from pydantic import BaseModel\n", + "\n", + "class ContentState(BaseModel):\n", + " \"\"\"\n", + " State model that tracks information throughout the content creation workflow.\n", + "\n", + " Think of this as a form that gets filled out as the workflow progresses:\n", + " - Start: Only URL is filled\n", + " - After routing: Content type is determined\n", + " - After processing: Final content is ready\n", + " - Throughout: Metadata can be added by any step\n", + " \"\"\"\n", + " url: str = \"\" # The source website we're analyzing\n", + " content_type: str = \"\" # \"blog\", \"newsletter\", or \"linkedin\"\n", + " final_content: str = \"\" # The final content after processing\n", + " metadata: Dict[str, Any] = {} # Arbitrary metadata" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TXyaqY2DqJEL" + }, + "source": [ + "**Why use state?**\n", + "1. **Data Persistence**: Information flows between different workflow steps\n", + "2. **Type Safety**: Pydantic ensures data integrity\n", + "3. **Flexibility**: Easy to add new fields as workflow evolves\n", + "4. **Debugging**: Clear view of what data exists at each step" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pM-9CyXnqQOz" + }, + "source": [ + "### Create Specialized Agent Teams for Each Content Type\n", + "\n", + "Think of these agents as factories for each content type:\n", + "- We're using factory functions to create specialized agent pairs\n", + "- Each content type gets its own **researcher + writer** team\n", + "- This allows for highly specialized expertise and output formats" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Q30JgXCsqlcn" + }, + "source": [ + "1. **Blog content creation agents.**\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "htfE87J-elaK", + "outputId": "9151c11c-9090-461e-ba4b-4e2c7b5b247b" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", + " return datetime.utcnow().replace(tzinfo=utc)\n" + ] + } + ], + "source": [ + "from crewai import Agent, LLM\n", + "from crewai_tools import SerperDevTool\n", + "\n", + "def create_blog_agents():\n", + " \"\"\"Create agents specialized for blog content\"\"\"\n", + "\n", + " blog_researcher = Agent(\n", + " role=\"Blog Content Researcher\",\n", + " goal=\"Extract and analyze web content to identify key insights for blog posts\",\n", + " backstory=\"\"\"You are an expert content researcher who specializes in analyzing\n", + " web content and identifying the most valuable insights for creating engaging blog posts.\n", + " You excel at understanding complex topics and breaking them down into digestible content.\"\"\",\n", + " verbose=True,\n", + " tool=[SerperDevTool()],\n", + " llm=LLM(model=\"gpt-4o-mini\"),\n", + " max_iter=5\n", + " )\n", + "\n", + " blog_writer = Agent(\n", + " role=\"Blog Content Writer\",\n", + " goal=\"Transform research into engaging, well-structured blog posts\",\n", + " backstory=\"\"\"You are a skilled blog writer with expertise in creating compelling content\n", + " that engages readers and drives meaningful discussions. You excel at taking complex\n", + " information and making it accessible and interesting.\"\"\",\n", + " verbose=True,\n", + " llm=LLM(model=\"gpt-4o-mini\")\n", + " )\n", + "\n", + " return blog_researcher, blog_writer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2VRpAN2hqshE" + }, + "source": [ + "2. **Newsletter content creation agents.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fonaWxPweoLp" + }, + "outputs": [], + "source": [ + "def create_newsletter_agents():\n", + " \"\"\"Create agents specialized for newsletter content\"\"\"\n", + "\n", + " newsletter_researcher = Agent(\n", + " role=\"Newsletter Content Researcher\",\n", + " goal=\"Extract key insights from web content for newsletter format\",\n", + " backstory=\"\"\"You are an expert at identifying the most newsworthy and actionable\n", + " insights from web content. You understand what makes content valuable for newsletter\n", + " subscribers and how to present information concisely.\"\"\",\n", + " verbose=True,\n", + " tool=[SerperDevTool()],\n", + " llm=LLM(model=\"gpt-4o-mini\"),\n", + " max_iter=5\n", + " )\n", + "\n", + " newsletter_writer = Agent(\n", + " role=\"Newsletter Writer\",\n", + " goal=\"Create engaging newsletter content that provides immediate value\",\n", + " backstory=\"\"\"You are a newsletter specialist who knows how to craft content that\n", + " busy professionals want to read. You excel at creating scannable, actionable content\n", + " with clear takeaways.\"\"\",\n", + " verbose=True,\n", + " llm=LLM(model=\"gpt-4o-mini\")\n", + " )\n", + "\n", + " return newsletter_researcher, newsletter_writer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WxvCGcLVq4vC" + }, + "source": [ + "3. **LinkedIn content creation agents.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LncnBvjtgsWT" + }, + "outputs": [], + "source": [ + "def create_linkedin_agents():\n", + " \"\"\"Create agents specialized for LinkedIn content\"\"\"\n", + "\n", + " linkedin_researcher = Agent(\n", + " role=\"LinkedIn Content Researcher\",\n", + " goal=\"Extract professional insights suitable for LinkedIn audience\",\n", + " backstory=\"\"\"You are an expert at identifying professional insights and industry\n", + " trends that resonate with LinkedIn's professional audience. You understand what\n", + " content drives engagement on professional networks.\"\"\",\n", + " verbose=True,\n", + " tool=[SerperDevTool()],\n", + " llm=LLM(model=\"gpt-4o-mini\"),\n", + " max_iter=5\n", + " )\n", + "\n", + " linkedin_writer = Agent(\n", + " role=\"LinkedIn Content Writer\",\n", + " goal=\"Create engaging LinkedIn posts that drive professional engagement\",\n", + " backstory=\"\"\"You are a LinkedIn content specialist who knows how to craft posts\n", + " that get noticed in the professional feed. You excel at creating content that\n", + " sparks meaningful professional discussions.\"\"\",\n", + " verbose=True,\n", + " llm=LLM(model=\"gpt-4o-mini\")\n", + " )\n", + "\n", + " return linkedin_researcher, linkedin_writer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TOO4ajI8g2mg" + }, + "source": [ + "### Define task creation functions for each content type\n", + "\n", + "Task design principles:\n", + "1. Clear, specific instructions improve output quality\n", + "2. One-shot examples of the final output helps the agent accomplish better than without examples\n", + "3. Task guardrails is another advanced CrewAI feature that can be used to make the task outputs more deterministic. More on that [here](https://docs.crewai.com/en/concepts/tasks#task-guardrails)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9mmiaRCorByr" + }, + "source": [ + "1. **Blog writing Task.**\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0UdrxHDUgw5y" + }, + "outputs": [], + "source": [ + "from crewai import Task\n", + "\n", + "def create_blog_tasks(researcher, writer, url):\n", + " \"\"\"Create tasks for blog content generation\"\"\"\n", + "\n", + " research_task = Task(\n", + " description=f\"\"\"\n", + " Analyze the content from {url} and extract key insights for a blog post.\n", + " Your analysis should identify:\n", + " 1. Main themes and key points\n", + " 2. Interesting insights or data points\n", + " 3. Potential angles for blog content\n", + " 4. Target audience considerations\n", + " 5. SEO-worthy topics and keywords\n", + "\n", + " Provide a comprehensive research summary that will guide blog writing.\n", + " \"\"\",\n", + " expected_output=\"A detailed research summary with key insights, themes, and recommendations for blog content\",\n", + " agent=researcher\n", + " )\n", + "\n", + " writing_task = Task(\n", + " description=\"\"\"\n", + " Create an engaging blog post based on the research findings.\n", + "\n", + " Requirements:\n", + " - 800-1200 words\n", + " - Engaging headline\n", + " - Clear introduction with hook\n", + " - Well-structured body with subheadings\n", + " - Actionable insights or takeaways\n", + " - Strong conclusion\n", + " - SEO-optimized content\n", + " - Professional yet accessible tone\n", + "\n", + " Format the output in markdown.\n", + " \"\"\",\n", + " expected_output=\"A complete, well-structured blog post in markdown format\",\n", + " agent=writer,\n", + " context=[research_task]\n", + " )\n", + "\n", + " return [research_task, writing_task]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YyozTXgprOLw" + }, + "source": [ + "2. **Newsletter writing Task.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9WP3fsOeg8lf" + }, + "outputs": [], + "source": [ + "def create_newsletter_tasks(researcher, writer, url):\n", + " \"\"\"Create tasks for newsletter content generation\"\"\"\n", + "\n", + " research_task = Task(\n", + " description=f\"\"\"\n", + " Analyze the content from {url} and extract the most newsworthy insights for a newsletter.\n", + " Focus on:\n", + " 1. Most important news or updates\n", + " 2. Actionable insights subscribers can use immediately\n", + " 3. Key statistics or data points\n", + " 4. Industry implications\n", + " 5. Quick takeaways for busy professionals\n", + "\n", + " Prioritize information that provides immediate value.\n", + " \"\"\",\n", + " expected_output=\"A focused research summary highlighting the most valuable and actionable insights\",\n", + " agent=researcher\n", + " )\n", + "\n", + " writing_task = Task(\n", + " description=\"\"\"\n", + " Create a compelling newsletter section based on the research.\n", + "\n", + " Requirements:\n", + " - 400-600 words\n", + " - Catchy subject line\n", + " - Scannable format with bullet points\n", + " - Clear action items or takeaways\n", + " - Conversational yet professional tone\n", + " - Include relevant links or resources\n", + " - End with a clear call-to-action\n", + "\n", + " Format for easy reading in email.\n", + " \"\"\",\n", + " expected_output=\"A complete newsletter section with subject line and formatted content\",\n", + " agent=writer,\n", + " context=[research_task]\n", + " )\n", + "\n", + " return [research_task, writing_task]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4hDXksoYrS1o" + }, + "source": [ + "2. **LinkedIn post writing Task.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rg0rxmZHiAI-" + }, + "outputs": [], + "source": [ + "def create_linkedin_tasks(researcher, writer, url):\n", + " \"\"\"Create tasks for LinkedIn content generation\"\"\"\n", + "\n", + " research_task = Task(\n", + " description=f\"\"\"\n", + " Analyze the content from {url} and extract insights suitable for LinkedIn audience.\n", + " Consider what would engage LinkedIn's professional audience based on the content.\n", + " \"\"\",\n", + " expected_output=\"Research summary focused on professional insights and engagement opportunities\",\n", + " agent=researcher\n", + " )\n", + "\n", + " writing_task = Task(\n", + " description=\"\"\"\n", + " Create an engaging LinkedIn post based on the research.\n", + "\n", + " Requirements:\n", + " - 150-300 words (optimal LinkedIn length)\n", + " - Professional yet conversational tone\n", + " - Include relevant hashtags (3-5)\n", + " - Pose a question to encourage engagement\n", + " - Share a key insight or lesson learned from the content\n", + " - Use line breaks for readability\n", + " - Include a call-to-action for comments\n", + "\n", + " Make it shareable and discussion-worthy.\n", + " \"\"\",\n", + " expected_output=\"A complete LinkedIn post with hashtags and engagement elements\",\n", + " agent=writer,\n", + " context=[research_task]\n", + " )\n", + "\n", + " return [research_task, writing_task]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c2ee4e6b" + }, + "source": [ + "### **ContentRouterFlow Class Analysis**\n", + "\n", + "This class orchestrates the entire content creation pipeline.\n", + "\n", + "**Class Overview**\n", + "\n", + "- `ContentRouterFlow` is a **subclass of `Flow[ContentState]`** that implements an event-driven workflow for dynamic content creation routing. It demonstrates CrewAI's Flow architecture with state management and specialized crew routing.\n", + "\n", + "### Key Decorators & Their Roles\n", + "\n", + "**๐Ÿ’พ `@persist()`**\n", + "\n", + "- **Purpose**: Enables automatic state persistence across workflow execution\n", + "- **Behavior**: Saves flow state to SQLite database by default\n", + "- **Benefits**: Workflow recovery, state tracking, and debugging capabilities\n", + "- **Scope**: Applied at class level to persist all method states\n", + "\n", + "**๐Ÿš€ `@start()`**\n", + "- **Purpose**: Marks the workflow entry point\n", + "- **Function**: Collects user input (URL + content type) and initializes state\n", + "- **Triggers**: Automatic when flow begins\n", + "\n", + "**๐Ÿงญ `@router(get_user_input)`**\n", + "- **Purpose**: Creates decision point for workflow routing\n", + "- **Logic**: Returns `self.state.content_type` to determine next path\n", + "- **Output**: Routes to \"blog\", \"newsletter\", or \"linkedin\" listeners\n", + "\n", + "**๐Ÿ‘‚ `@listen(\"event_name\")`**\n", + "- **Purpose**: Creates event listeners for specific triggers\n", + "- **Behavior**: Methods execute when their specified event occurs\n", + "- **Examples**: `@listen(\"blog\")`, `@listen(\"newsletter\")`, `@listen(\"linkedin\")`\n", + "\n", + "## Workflow:\n", + "\n", + "1. The workflow starts with **`@start()`** on **`get_user_input()`**.\n", + "2. The result of **`get_user_input()`** is routed by **`@router()`** to one of the `process_*_content` methods based on the content_type.\n", + "3. Whichever `process_*_content` method runs (e.g., `process_blog_content`), it will eventually complete and save the result to the flow's state." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rlEEUOE_iBTz" + }, + "outputs": [], + "source": [ + "from crewai.flow.flow import Flow, listen, router, start\n", + "from crewai.flow.persistence import persist\n", + "from crewai import Crew\n", + "\n", + "@persist(verbose=True)\n", + "class ContentRouterFlow(Flow[ContentState]):\n", + " \"\"\"\n", + " A dynamic workflow that routes content creation to specialized crews.\n", + "\n", + " Flow Overview:\n", + " 1. START: Get user input (URL + content type)\n", + " 2. ROUTE: Direct to appropriate content crew\n", + " 3. PROCESS: Execute specialized content creation\n", + " 4. FINISH: Return the final content\n", + "\n", + " This flow demonstrates:\n", + " - Event-driven architecture with decorators\n", + " - State management across workflow steps\n", + " - Dynamic routing based on user input\n", + " - Parallel processing capabilities\n", + " \"\"\"\n", + "\n", + " @start()\n", + " def get_user_input(self):\n", + " \"\"\"Get URL and desired content type from user\"\"\"\n", + " # Enter your target URL here\n", + " url = input(\"Enter your target URL: \") # example: https://blog.crewai.com/crewai-on-2025-ia-enablers-list-with-openai-and-anthropic/\n", + "\n", + " # Enter your content type: blog, newsletter, or LinkedIn\n", + " content_type = input(\"Enter your desired content type (blog, newsletter, or linkedin): \")\n", + "\n", + " # Store in state\n", + " self.state.url = url\n", + " self.state.content_type = content_type\n", + "\n", + " return \"Input collected\"\n", + "\n", + " @router(get_user_input)\n", + " def route_to_crew(self, previous_result):\n", + " \"\"\"Route to appropriate crew based on content type\"\"\"\n", + " return self.state.content_type\n", + "\n", + " @listen(\"blog\")\n", + " def process_blog_content(self):\n", + " \"\"\"Process content using blog crew\"\"\"\n", + " # Create blog agents\n", + " researcher, writer = create_blog_agents()\n", + "\n", + " # Create blog tasks\n", + " tasks = create_blog_tasks(researcher, writer, self.state.url)\n", + "\n", + " # Create and run crew\n", + " blog_crew = Crew(\n", + " agents=[researcher, writer],\n", + " tasks=tasks,\n", + " verbose=True\n", + " )\n", + "\n", + " result = blog_crew.kickoff()\n", + " self.state.final_content = result.raw\n", + "\n", + " return \"Blog content created\"\n", + "\n", + " @listen(\"newsletter\")\n", + " def process_newsletter_content(self):\n", + " \"\"\"Process content using newsletter crew\"\"\"\n", + "\n", + " # Create newsletter agents\n", + " researcher, writer = create_newsletter_agents()\n", + "\n", + " # Create newsletter tasks\n", + " tasks = create_newsletter_tasks(researcher, writer, self.state.url)\n", + "\n", + " # Create and run crew\n", + " newsletter_crew = Crew(\n", + " agents=[researcher, writer],\n", + " tasks=tasks,\n", + " verbose=True\n", + " )\n", + "\n", + " result = newsletter_crew.kickoff()\n", + " self.state.final_content = result.raw\n", + "\n", + " return \"Newsletter content created\"\n", + "\n", + " @listen(\"linkedin\")\n", + " def process_linkedin_content(self):\n", + " \"\"\"Process content using LinkedIn crew\"\"\"\n", + "\n", + " # Create LinkedIn agents\n", + " researcher, writer = create_linkedin_agents()\n", + "\n", + " # Create LinkedIn tasks\n", + " tasks = create_linkedin_tasks(researcher, writer, self.state.url)\n", + "\n", + " # Create and run crew\n", + " linkedin_crew = Crew(\n", + " agents=[researcher, writer],\n", + " tasks=tasks,\n", + " verbose=True\n", + " )\n", + "\n", + " result = linkedin_crew.kickoff()\n", + " self.state.final_content = result.raw\n", + "\n", + " return \"LinkedIn content created\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FtiNVMzJlRUk" + }, + "source": [ + "### Run the Flow\n", + "\n", + "Now we're ready to bring everything together into the flow and run it to start the automation. You should see a print out of the agent process so you can keep track of what the agents are doing." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "e07bb2aa3e6c4c3499fb4da283bafe4e", + "b8e0672c349e42228036c8f6e99016c9", + "aaec9eaaa69b4639b59e3745f104aee6", + "7bede0af569c4ee28154bcc1a2a75e25", + "fe3bc2013ef34446ae3370cb67603449", + "aa63125e36e946e39f869b91f8513ee1", + "d7e08ec3db57486cb1123a2330af3d2b", + "32d52106be2640f1af0cf18f3c28b0c0" + ] + }, + "collapsed": true, + "id": "FYNleibaiRh_", + "outputId": "4d22f61a-1541-4402-d71e-8a2256435dfa" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Flow Execution โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Starting Flow Execution                                                                                        โ”‚\n",
+       "โ”‚  Name: ContentRouterFlow                                                                                        โ”‚\n",
+       "โ”‚  ID: 8d81f08b-afd3-4713-be92-1327d8702d84                                                                       โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34mโ•ญโ”€\u001b[0m\u001b[34mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[34m Flow Execution \u001b[0m\u001b[34mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[34mโ”€โ•ฎ\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[1;34mStarting Flow Execution\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[34mContentRouterFlow\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[37mID: \u001b[0m\u001b[34m8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", + " return datetime.utcnow().replace(tzinfo=utc)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Flow started with ID: 8d81f08b-afd3-4713-be92-1327d8702d84\n",
+       "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: \n",
+       "datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects \n",
+       "to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+       "  return datetime.utcnow().replace(tzinfo=utc)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;35m Flow started with ID: 8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m\n", + "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: \n", + "datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects \n", + "to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", + " return datetime.utcnow().replace(tzinfo=utc)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Flow started with ID: 8d81f08b-afd3-4713-be92-1327d8702d84\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;35m Flow started with ID: 8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e07bb2aa3e6c4c3499fb4da283bafe4e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  self.msg_id = ip.kernel._parent_header['header']['msg_id']\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " self.msg_id = ip.kernel._parent_header['header']['msg_id']\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter your target URL: https://www.yahoo.com/news/articles/ftc-launches-inquiry-ai-chatbots-153035090.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAHyaxWe9vR_wMDQVV_SHygSZCWuY2g3DZVG5zsA7FG57L7IcRS4pXEpPARguD-jFVynVi1wSiTp1Lq567Ye02Zv00d0BAlzNGGs7QwFkRoosBwYK_wMPSJ9fcafgYQVvSi8YVSRwZl_jJ3Xz-6H0CuTBSN6aOFeNtlaWfp_Mutdz\n", + "Enter your desired content type (blog, newsletter, or linkedin): linkedin\n" + ] + }, + { + "data": { + "text/html": [ + "
 Saving flow state to memory for ID: 8d81f08b-afd3-4713-be92-1327d8702d84\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[96m Saving flow state to memory for ID: 8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Saving flow state to memory for ID: 8d81f08b-afd3-4713-be92-1327d8702d84\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[96m Saving flow state to memory for ID: 8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n",
+       "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: \n",
+       "datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects \n",
+       "to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+       "  return datetime.utcnow().replace(tzinfo=utc)\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n", + "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: \n", + "datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects \n", + "to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", + " return datetime.utcnow().replace(tzinfo=utc)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  self.msg_id = ip.kernel._parent_header['header']['msg_id']\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " self.msg_id = ip.kernel._parent_header['header']['msg_id']\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Crew Execution Started โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Crew Execution Started                                                                                         โ”‚\n",
+       "โ”‚  Name: crew                                                                                                     โ”‚\n",
+       "โ”‚  ID: 7a98f308-6b3c-44d1-870d-607e77478b46                                                                       โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[36mโ•ญโ”€\u001b[0m\u001b[36mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[36m Crew Execution Started \u001b[0m\u001b[36mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[36mโ”€โ•ฎ\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[1;36mCrew Execution Started\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[36mcrew\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[37mID: \u001b[0m\u001b[36m7a98f308-6b3c-44d1-870d-607e77478b46\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ”‚\u001b[0m \u001b[36mโ”‚\u001b[0m\n", + "\u001b[36mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+      "  return datetime.utcnow().replace(tzinfo=utc)\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– Agent Started โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Researcher                                                                             โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Task:                                                                                                          โ”‚\n",
+       "โ”‚          Analyze the content from                                                                               โ”‚\n",
+       "โ”‚  https://www.yahoo.com/news/articles/ftc-launches-inquiry-ai-chatbots-153035090.html?guccounter=1&guce_referre  โ”‚\n",
+       "โ”‚  r=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAHyaxWe9vR_wMDQVV_SHygSZCWuY2g3DZVG5zsA7FG57L7IcRS4pX  โ”‚\n",
+       "โ”‚  EpPARguD-jFVynVi1wSiTp1Lq567Ye02Zv00d0BAlzNGGs7QwFkRoosBwYK_wMPSJ9fcafgYQVvSi8YVSRwZl_jJ3Xz-6H0CuTBSN6aOFeNtl  โ”‚\n",
+       "โ”‚  aWfp_Mutdz and extract insights suitable for LinkedIn audience.                                                โ”‚\n",
+       "โ”‚          Consider what would engage LinkedIn's professional audience based on the content.                      โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[35mโ•ญโ”€\u001b[0m\u001b[35mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[35m ๐Ÿค– Agent Started \u001b[0m\u001b[35mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[35mโ”€โ•ฎ\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[1;92mLinkedIn Content Researcher\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[37mTask: \u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m Analyze the content from \u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92mhttps://www.yahoo.com/news/articles/ftc-launches-inquiry-ai-chatbots-153035090.html?guccounter=1&guce_referre\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92mr=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAHyaxWe9vR_wMDQVV_SHygSZCWuY2g3DZVG5zsA7FG57L7IcRS4pX\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92mEpPARguD-jFVynVi1wSiTp1Lq567Ye02Zv00d0BAlzNGGs7QwFkRoosBwYK_wMPSJ9fcafgYQVvSi8YVSRwZl_jJ3Xz-6H0CuTBSN6aOFeNtl\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92maWfp_Mutdz and extract insights suitable for LinkedIn audience.\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m Consider what would engage LinkedIn's professional audience based on the content.\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m \u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "aaec9eaaa69b4639b59e3745f104aee6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+      "  return datetime.utcnow().replace(tzinfo=utc)\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โœ… Agent Final Answer โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Researcher                                                                             โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Final Answer:                                                                                                  โ”‚\n",
+       "โ”‚  The ongoing inquiry by the Federal Trade Commission (FTC) into the practices surrounding AI chatbots marks a   โ”‚\n",
+       "โ”‚  significant turning point in how businesses use artificial intelligence. As professionals in technology,       โ”‚\n",
+       "โ”‚  marketing, and ethics, we must acknowledge the implications of this development.                               โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  1. **Regulatory Landscape is Evolving**: The inquiry signifies a recognition of the potential risks AI         โ”‚\n",
+       "โ”‚  technologies pose, not just to consumers but also to businesses. Professionals should stay informed about      โ”‚\n",
+       "โ”‚  regulatory changes as they can directly impact how we develop, market, and implement AI solutions.             โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  2. **Ethical AI Usage**: With rising concerns about user privacy and the accuracy of AI-generated content,     โ”‚\n",
+       "โ”‚  companies must prioritize ethical standards in their AI strategies. Engaging in discussions around best        โ”‚\n",
+       "โ”‚  practices for transparency and accountability will be essential for building trust with customers.             โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  3. **Market Competitiveness**: Organizations utilizing AI chatbots will need to adapt quickly. Those           โ”‚\n",
+       "โ”‚  companies that can navigate the regulatory landscape while also innovating responsibly will likely gain a      โ”‚\n",
+       "โ”‚  competitive advantage. It's crucial for professionals to invest in skills that will enable them to understand  โ”‚\n",
+       "โ”‚  both the technological and regulatory aspects of AI.                                                           โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  4. **Collaboration and Learning**: The inquiry highlights the need for interdisciplinary cooperation.          โ”‚\n",
+       "โ”‚  Business leaders should seek collaboration not only within tech teams but also with legal experts, ethicists,  โ”‚\n",
+       "โ”‚  and consumer advocates to foster a balanced approach to AI chatbot deployment.                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  5. **Future Trends in AI**: Consider how these developments may influence future trends in AI. Professionals   โ”‚\n",
+       "โ”‚  should observe shifts in consumer sentiment towards AI interactions and prepare strategies to adapt their      โ”‚\n",
+       "โ”‚  approaches. Engaging with industry experts and forums can provide insights into emerging best practices.       โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  This inquiry represents a call to action for all professionals involved in AI: embrace ethical                 โ”‚\n",
+       "โ”‚  considerations, stay informed on regulations, and continuously upgrade your skills to remain relevant in an    โ”‚\n",
+       "โ”‚  evolving landscape. As we anticipate the outcomes of the FTC's inquiry, letโ€™s proactively prepare our          โ”‚\n",
+       "โ”‚  organizations to meet future challenges head-on.                                                               โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m โœ… Agent Final Answer \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[1;92mLinkedIn Content Researcher\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mFinal Answer:\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mThe ongoing inquiry by the Federal Trade Commission (FTC) into the practices surrounding AI chatbots marks a \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92msignificant turning point in how businesses use artificial intelligence. As professionals in technology, \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mmarketing, and ethics, we must acknowledge the implications of this development. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m1. **Regulatory Landscape is Evolving**: The inquiry signifies a recognition of the potential risks AI \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mtechnologies pose, not just to consumers but also to businesses. Professionals should stay informed about \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mregulatory changes as they can directly impact how we develop, market, and implement AI solutions.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m2. **Ethical AI Usage**: With rising concerns about user privacy and the accuracy of AI-generated content, \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mcompanies must prioritize ethical standards in their AI strategies. Engaging in discussions around best \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mpractices for transparency and accountability will be essential for building trust with customers.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m3. **Market Competitiveness**: Organizations utilizing AI chatbots will need to adapt quickly. Those \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mcompanies that can navigate the regulatory landscape while also innovating responsibly will likely gain a \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mcompetitive advantage. It's crucial for professionals to invest in skills that will enable them to understand\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mboth the technological and regulatory aspects of AI.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m4. **Collaboration and Learning**: The inquiry highlights the need for interdisciplinary cooperation. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mBusiness leaders should seek collaboration not only within tech teams but also with legal experts, ethicists,\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mand consumer advocates to foster a balanced approach to AI chatbot deployment.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m5. **Future Trends in AI**: Consider how these developments may influence future trends in AI. Professionals \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mshould observe shifts in consumer sentiment towards AI interactions and prepare strategies to adapt their \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mapproaches. Engaging with industry experts and forums can provide insights into emerging best practices.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mThis inquiry represents a call to action for all professionals involved in AI: embrace ethical \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mconsiderations, stay informed on regulations, and continuously upgrade your skills to remain relevant in an \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mevolving landscape. As we anticipate the outcomes of the FTC's inquiry, letโ€™s proactively prepare our \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92morganizations to meet future challenges head-on.\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Task Completion โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Task Completed                                                                                                 โ”‚\n",
+       "โ”‚  Name: fc884895-8335-4f5c-a521-3ba8f9b390cf                                                                     โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Researcher                                                                             โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m Task Completion \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[1;32mTask Completed\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[32mfc884895-8335-4f5c-a521-3ba8f9b390cf\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[32mLinkedIn Content Researcher\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+      "  return datetime.utcnow().replace(tzinfo=utc)\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– Agent Started โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Writer                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Task:                                                                                                          โ”‚\n",
+       "โ”‚          Create an engaging LinkedIn post based on the research.                                                โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚          Requirements:                                                                                          โ”‚\n",
+       "โ”‚          - 150-300 words (optimal LinkedIn length)                                                              โ”‚\n",
+       "โ”‚          - Professional yet conversational tone                                                                 โ”‚\n",
+       "โ”‚          - Include relevant hashtags (3-5)                                                                      โ”‚\n",
+       "โ”‚          - Pose a question to encourage engagement                                                              โ”‚\n",
+       "โ”‚          - Share a key insight or lesson learned from the content                                               โ”‚\n",
+       "โ”‚          - Use line breaks for readability                                                                      โ”‚\n",
+       "โ”‚          - Include a call-to-action for comments                                                                โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚          Make it shareable and discussion-worthy.                                                               โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[35mโ•ญโ”€\u001b[0m\u001b[35mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[35m ๐Ÿค– Agent Started \u001b[0m\u001b[35mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[35mโ”€โ•ฎ\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[1;92mLinkedIn Content Writer\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[37mTask: \u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m Create an engaging LinkedIn post based on the research.\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m Requirements:\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - 150-300 words (optimal LinkedIn length)\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Professional yet conversational tone\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Include relevant hashtags (3-5)\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Pose a question to encourage engagement\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Share a key insight or lesson learned from the content\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Use line breaks for readability\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m - Include a call-to-action for comments\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m Make it shareable and discussion-worthy.\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[92m \u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ”‚\u001b[0m \u001b[35mโ”‚\u001b[0m\n", + "\u001b[35mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fe3bc2013ef34446ae3370cb67603449", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/local/lib/python3.12/dist-packages/jupyter_client/session.py:203: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n",
+      "  return datetime.utcnow().replace(tzinfo=utc)\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โœ… Agent Final Answer โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Writer                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Final Answer:                                                                                                  โ”‚\n",
+       "โ”‚  ๐ŸŒŸ **Navigating the AI Landscape: Compliance, Ethics, and Innovation** ๐ŸŒŸ                                      โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  The ongoing inquiry by the Federal Trade Commission (FTC) into AI chatbot practices is a pivotal moment for    โ”‚\n",
+       "โ”‚  all of us in the technology, marketing, and ethics sectors. This is not just a regulatory checkโ€”it's a         โ”‚\n",
+       "โ”‚  wake-up call for responsible innovation.                                                                       โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Here are key insights:                                                                                         โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  1. **Evolving Regulatory Landscape**: Stay updated on regulatory changes; they will shape how we develop and   โ”‚\n",
+       "โ”‚  implement AI solutions.                                                                                        โ”‚\n",
+       "โ”‚  2. **Ethical AI Usage**: Prioritizing privacy and accuracy in AI responses is vital for building trust with    โ”‚\n",
+       "โ”‚  our usersโ€”letโ€™s discuss how we can uphold these standards.                                                     โ”‚\n",
+       "โ”‚  3. **Market Competitiveness**: Those who can balance innovation with regulatory compliance will lead the       โ”‚\n",
+       "โ”‚  market. Are you ready to adapt?                                                                                โ”‚\n",
+       "โ”‚  4. **Collaboration is Key**: Engaging with legal experts and ethicists can foster a balanced approach to AI    โ”‚\n",
+       "โ”‚  deployment.                                                                                                    โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  As the landscape shifts, we must focus on collaborating, learning, and evolving our skill sets. Let's embrace  โ”‚\n",
+       "โ”‚  ethical considerations and enhance our understanding of regulations.                                           โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  ๐Ÿ” **Question for You**: How is your organization preparing for the impending regulatory changes surrounding   โ”‚\n",
+       "โ”‚  AI?                                                                                                            โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Let's spark this conversation! Comment below and share your insights. ๐Ÿ‘‡                                       โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  #ArtificialIntelligence #EthicalAI #MarketInnovation #FTCInquiry #Collaboration                                โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m โœ… Agent Final Answer \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[1;92mLinkedIn Content Writer\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mFinal Answer:\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m๐ŸŒŸ **Navigating the AI Landscape: Compliance, Ethics, and Innovation** ๐ŸŒŸ \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mThe ongoing inquiry by the Federal Trade Commission (FTC) into AI chatbot practices is a pivotal moment for \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mall of us in the technology, marketing, and ethics sectors. This is not just a regulatory checkโ€”it's a \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mwake-up call for responsible innovation. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mHere are key insights: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m1. **Evolving Regulatory Landscape**: Stay updated on regulatory changes; they will shape how we develop and \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mimplement AI solutions. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m2. **Ethical AI Usage**: Prioritizing privacy and accuracy in AI responses is vital for building trust with \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mour usersโ€”letโ€™s discuss how we can uphold these standards. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m3. **Market Competitiveness**: Those who can balance innovation with regulatory compliance will lead the \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mmarket. Are you ready to adapt? \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m4. **Collaboration is Key**: Engaging with legal experts and ethicists can foster a balanced approach to AI \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mdeployment. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mAs the landscape shifts, we must focus on collaborating, learning, and evolving our skill sets. Let's embrace\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92methical considerations and enhance our understanding of regulations. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m๐Ÿ” **Question for You**: How is your organization preparing for the impending regulatory changes surrounding \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mAI? \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92mLet's spark this conversation! Comment below and share your insights. ๐Ÿ‘‡ \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[92m#ArtificialIntelligence #EthicalAI #MarketInnovation #FTCInquiry #Collaboration\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Task Completion โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Task Completed                                                                                                 โ”‚\n",
+       "โ”‚  Name: 0bfd714e-29d6-476e-a04a-1d1d91c4b2b8                                                                     โ”‚\n",
+       "โ”‚  Agent: LinkedIn Content Writer                                                                                 โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m Task Completion \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[1;32mTask Completed\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[32m0bfd714e-29d6-476e-a04a-1d1d91c4b2b8\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAgent: \u001b[0m\u001b[32mLinkedIn Content Writer\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Crew Completion โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Crew Execution Completed                                                                                       โ”‚\n",
+       "โ”‚  Name: crew                                                                                                     โ”‚\n",
+       "โ”‚  ID: 7a98f308-6b3c-44d1-870d-607e77478b46                                                                       โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚  Final Output: ๐ŸŒŸ **Navigating the AI Landscape: Compliance, Ethics, and Innovation** ๐ŸŒŸ                        โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  The ongoing inquiry by the Federal Trade Commission (FTC) into AI chatbot practices is a pivotal moment for    โ”‚\n",
+       "โ”‚  all of us in the technology, marketing, and ethics sectors. This is not just a regulatory checkโ€”it's a         โ”‚\n",
+       "โ”‚  wake-up call for responsible innovation.                                                                       โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Here are key insights:                                                                                         โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  1. **Evolving Regulatory Landscape**: Stay updated on regulatory changes; they will shape how we develop and   โ”‚\n",
+       "โ”‚  implement AI solutions.                                                                                        โ”‚\n",
+       "โ”‚  2. **Ethical AI Usage**: Prioritizing privacy and accuracy in AI responses is vital for building trust with    โ”‚\n",
+       "โ”‚  our usersโ€”letโ€™s discuss how we can uphold these standards.                                                     โ”‚\n",
+       "โ”‚  3. **Market Competitiveness**: Those who can balance innovation with regulatory compliance will lead the       โ”‚\n",
+       "โ”‚  market. Are you ready to adapt?                                                                                โ”‚\n",
+       "โ”‚  4. **Collaboration is Key**: Engaging with legal experts and ethicists can foster a balanced approach to AI    โ”‚\n",
+       "โ”‚  deployment.                                                                                                    โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  As the landscape shifts, we must focus on collaborating, learning, and evolving our skill sets. Let's embrace  โ”‚\n",
+       "โ”‚  ethical considerations and enhance our understanding of regulations.                                           โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  ๐Ÿ” **Question for You**: How is your organization preparing for the impending regulatory changes surrounding   โ”‚\n",
+       "โ”‚  AI?                                                                                                            โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Let's spark this conversation! Comment below and share your insights. ๐Ÿ‘‡                                       โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  #ArtificialIntelligence #EthicalAI #MarketInnovation #FTCInquiry #Collaboration                                โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m Crew Completion \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[1;32mCrew Execution Completed\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[32mcrew\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mID: \u001b[0m\u001b[32m7a98f308-6b3c-44d1-870d-607e77478b46\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mFinal Output: ๐ŸŒŸ **Navigating the AI Landscape: Compliance, Ethics, and Innovation** ๐ŸŒŸ \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mThe ongoing inquiry by the Federal Trade Commission (FTC) into AI chatbot practices is a pivotal moment for \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mall of us in the technology, marketing, and ethics sectors. This is not just a regulatory checkโ€”it's a \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mwake-up call for responsible innovation. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mHere are key insights: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m1. **Evolving Regulatory Landscape**: Stay updated on regulatory changes; they will shape how we develop and \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mimplement AI solutions. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m2. **Ethical AI Usage**: Prioritizing privacy and accuracy in AI responses is vital for building trust with \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mour usersโ€”letโ€™s discuss how we can uphold these standards. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m3. **Market Competitiveness**: Those who can balance innovation with regulatory compliance will lead the \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mmarket. Are you ready to adapt? \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m4. **Collaboration is Key**: Engaging with legal experts and ethicists can foster a balanced approach to AI \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mdeployment. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAs the landscape shifts, we must focus on collaborating, learning, and evolving our skill sets. Let's embrace\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37methical considerations and enhance our understanding of regulations. \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m๐Ÿ” **Question for You**: How is your organization preparing for the impending regulatory changes surrounding \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mAI? \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mLet's spark this conversation! Comment below and share your insights. ๐Ÿ‘‡ \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37m#ArtificialIntelligence #EthicalAI #MarketInnovation #FTCInquiry #Collaboration\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d7e08ec3db57486cb1123a2330af3d2b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:111: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " if ip and hasattr(ip, 'kernel') and hasattr(ip.kernel, '_parent_header'):\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n",
+       "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n",
+       "  self.msg_id = ip.kernel._parent_header['header']['msg_id']\n",
+       "
\n" + ], + "text/plain": [ + "/usr/local/lib/python3.12/dist-packages/ipywidgets/widgets/widget_output.py:112: DeprecationWarning: \n", + "Kernel._parent_header is deprecated in ipykernel 6. Use .get_parent()\n", + " self.msg_id = ip.kernel._parent_header['header']['msg_id']\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[96m Saving flow state to memory for ID: 8d81f08b-afd3-4713-be92-1327d8702d84\u001b[00m\n" + ] + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Flow Completion โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚  Flow Execution Completed                                                                                       โ”‚\n",
+       "โ”‚  Name: ContentRouterFlow                                                                                        โ”‚\n",
+       "โ”‚  ID: 8d81f08b-afd3-4713-be92-1327d8702d84                                                                       โ”‚\n",
+       "โ”‚  Tool Args:                                                                                                     โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m Flow Completion \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[1;32mFlow Execution Completed\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mName: \u001b[0m\u001b[32mContentRouterFlow\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mID: \u001b[0m\u001b[32m8d81f08b-afd3-4713-be92-1327d8702d84\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[37mTool Args: \u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ”‚\u001b[0m \u001b[32mโ”‚\u001b[0m\n", + "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import asyncio\n", + "\n", + "# Create and run the flow\n", + "flow = ContentRouterFlow()\n", + "result = await flow.kickoff_async()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cu89Vp2Ekh7k" + }, + "source": [ + "Now that the run has completed, let's access the final content saved in our state via **`flow.state.final_content`**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 385 + }, + "id": "G8xptaEAi5kT", + "outputId": "297dde5d-585c-4ee0-c77f-5884f6f2e748" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "---" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "๐ŸŒŸ **Navigating the AI Landscape: Compliance, Ethics, and Innovation** ๐ŸŒŸ \n", + "\n", + "The ongoing inquiry by the Federal Trade Commission (FTC) into AI chatbot practices is a pivotal moment for all of us in the technology, marketing, and ethics sectors. This is not just a regulatory checkโ€”it's a wake-up call for responsible innovation. \n", + "\n", + "Here are key insights: \n", + "\n", + "1. **Evolving Regulatory Landscape**: Stay updated on regulatory changes; they will shape how we develop and implement AI solutions. \n", + "2. **Ethical AI Usage**: Prioritizing privacy and accuracy in AI responses is vital for building trust with our usersโ€”letโ€™s discuss how we can uphold these standards. \n", + "3. **Market Competitiveness**: Those who can balance innovation with regulatory compliance will lead the market. Are you ready to adapt? \n", + "4. **Collaboration is Key**: Engaging with legal experts and ethicists can foster a balanced approach to AI deployment. \n", + "\n", + "As the landscape shifts, we must focus on collaborating, learning, and evolving our skill sets. Let's embrace ethical considerations and enhance our understanding of regulations. \n", + "\n", + "๐Ÿ” **Question for You**: How is your organization preparing for the impending regulatory changes surrounding AI? \n", + "\n", + "Let's spark this conversation! Comment below and share your insights. ๐Ÿ‘‡ \n", + "\n", + "#ArtificialIntelligence #EthicalAI #MarketInnovation #FTCInquiry #Collaboration" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import display, Markdown\n", + "\n", + "# Display the actual content\n", + "display(Markdown(\"---\"))\n", + "\n", + "# Format the content nicely for notebook\n", + "content = str(flow.state.final_content)\n", + "display(Markdown(content))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2zTtLZDzw4cy" + }, + "source": [ + "## **Next Steps**\n", + "\n", + "- Explore CrewAI's advanced features like **`plot()`**, **`and_`**, and **`or_`** for complex logic. Access the [docs here](https://docs.crewai.com).\n", + "- Build human-in-the-loop workflows for interactive decision making\n", + "- Add guardrails + observability to your crews\n", + "- Scale to production with [CrewAI's enterprise](https://app.crewai.com) orchestration capabilities\n", + "- Join the [CrewAI community](https://community.crewai.com) and contribute to the ecosystem\n", + "\n", + "**You're now equipped to build sophisticated, production-ready multi-agent AI systems that can handle complex, real-world automation challenges!**\n" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/Notebooks/Landing Page Flow/landing_page_flow.ipynb b/notebooks/Landing Page Flow/landing_page_flow.ipynb similarity index 100% rename from Notebooks/Landing Page Flow/landing_page_flow.ipynb rename to notebooks/Landing Page Flow/landing_page_flow.ipynb diff --git a/Notebooks/QA Agent/crewai.ipynb b/notebooks/QA Agent/crewai.ipynb similarity index 100% rename from Notebooks/QA Agent/crewai.ipynb rename to notebooks/QA Agent/crewai.ipynb diff --git a/Notebooks/QA Agent/crewai_flow.html b/notebooks/QA Agent/crewai_flow.html similarity index 100% rename from Notebooks/QA Agent/crewai_flow.html rename to notebooks/QA Agent/crewai_flow.html diff --git a/Notebooks/QA Agent/db/chroma.sqlite3 b/notebooks/QA Agent/db/chroma.sqlite3 similarity index 100% rename from Notebooks/QA Agent/db/chroma.sqlite3 rename to notebooks/QA Agent/db/chroma.sqlite3 diff --git a/Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/data_level0.bin b/notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/data_level0.bin similarity index 100% rename from Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/data_level0.bin rename to notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/data_level0.bin diff --git a/Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/header.bin b/notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/header.bin similarity index 100% rename from Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/header.bin rename to notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/header.bin diff --git a/Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/length.bin b/notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/length.bin similarity index 100% rename from Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/length.bin rename to notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/length.bin diff --git a/Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/link_lists.bin b/notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/link_lists.bin similarity index 100% rename from Notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/link_lists.bin rename to notebooks/QA Agent/db/eb595800-58e8-4a23-b57f-60dad6aaadea/link_lists.bin diff --git a/Notebooks/QA Agent/laggraph.ipynb b/notebooks/QA Agent/laggraph.ipynb similarity index 100% rename from Notebooks/QA Agent/laggraph.ipynb rename to notebooks/QA Agent/laggraph.ipynb diff --git a/Notebooks/Simple QA Crew + Flow/crewai_flow.html b/notebooks/Simple QA Crew + Flow/crewai_flow.html similarity index 100% rename from Notebooks/Simple QA Crew + Flow/crewai_flow.html rename to notebooks/Simple QA Crew + Flow/crewai_flow.html diff --git a/Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/data_level0.bin b/notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/data_level0.bin similarity index 100% rename from Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/data_level0.bin rename to notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/data_level0.bin diff --git a/Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/header.bin b/notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/header.bin similarity index 100% rename from Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/header.bin rename to notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/header.bin diff --git a/Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/length.bin b/notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/length.bin similarity index 100% rename from Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/length.bin rename to notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/length.bin diff --git a/Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/link_lists.bin b/notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/link_lists.bin similarity index 100% rename from Notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/link_lists.bin rename to notebooks/Simple QA Crew + Flow/db/9b1e5adc-9f74-43a5-a2b8-180c85535334/link_lists.bin diff --git a/Notebooks/Simple QA Crew + Flow/db/chroma.sqlite3 b/notebooks/Simple QA Crew + Flow/db/chroma.sqlite3 similarity index 100% rename from Notebooks/Simple QA Crew + Flow/db/chroma.sqlite3 rename to notebooks/Simple QA Crew + Flow/db/chroma.sqlite3 diff --git a/Notebooks/Simple QA Crew + Flow/simple_qa_agentic_flow.ipynb b/notebooks/Simple QA Crew + Flow/simple_qa_agentic_flow.ipynb similarity index 100% rename from Notebooks/Simple QA Crew + Flow/simple_qa_agentic_flow.ipynb rename to notebooks/Simple QA Crew + Flow/simple_qa_agentic_flow.ipynb