{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "\n", "# Task Solving with Code Generation, Execution and Debugging\n", "\n", "AutoGen offers conversable LLM agents, which can be used to solve various tasks with human or automatic feedback, including tasks that require using tools via code.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to write code and execute the code. Here `AssistantAgent` is an LLM-based agent that can write Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for the human user to execute the code written by `AssistantAgent`, or automatically execute the code. Depending on the setting of `human_input_mode` and `max_consecutive_auto_reply`, the `UserProxyAgent` either solicits feedback from the human user or returns auto-feedback based on the result of code execution (success or failure and corresponding outputs) to `AssistantAgent`. `AssistantAgent` will debug the code and suggest new code if the result contains error. The two agents keep communicating to each other until the task is done.\n", "\n", "\\:\\:\\:info Requirements\n", "\n", "Install `pyautogen`:\n", "```bash\n", "pip install pyautogen\n", "```\n", "\n", "For more information, please refer to the [installation guide](/docs/installation/).\n", "\n", "\\:\\:\\:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from typing import Dict, Union\n", "\n", "from IPython import get_ipython\n", "from IPython.display import display, Image\n", "\n", "import autogen\n", "\n", "config_list = autogen.config_list_from_json(\n", " \"OAI_CONFIG_LIST\",\n", " # filter_dict={\n", " # \"model\": [\"gpt-4\", \"gpt-4-0314\", \"gpt4\", \"gpt-4-32k\", \"gpt-4-32k-0314\", \"gpt-4-32k-v0314\"],\n", " # },\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "\\:\\:\\:tip\n", "\n", "Learn more about the various ways to configure LLM endpoints [here](/docs/llm_configuration).\n", "\n", "\\:\\:\\:" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Example Task: Check Stock Price Change\n", "\n", "In the example below, let's see how to use the agents in AutoGen to write a python script and execute the script. This process involves constructing a `AssistantAgent` to serve as the assistant, along with a `UserProxyAgent` that acts as a proxy for the human user. In this example demonstrated below, when constructing the `UserProxyAgent`, we select the `human_input_mode` to \"NEVER\". This means that the `UserProxyAgent` will not solicit feedback from the human user. It stops replying when the limit defined by `max_consecutive_auto_reply` is reached, or when `is_termination_msg()` returns true for the received message." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "What date is today? Compare the year-to-date gain for META and TESLA.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", "To get the current date, we can use Python's `datetime` module. After that, we will need to retrieve the year-to-date (YTD) gain for both META (Meta Platforms, Inc.) and TESLA (Tesla, Inc.). We can do this by fetching the stock prices from the beginning of the year and the current stock prices, then calculating the percentage change.\n", "\n", "First, let's write a Python script to get the current date:\n", "\n", "```python\n", "# filename: get_current_date.py\n", "\n", "from datetime import datetime\n", "\n", "# Get the current date\n", "current_date = datetime.now()\n", "\n", "# Print the current date in YYYY-MM-DD format\n", "print(current_date.strftime('%Y-%m-%d'))\n", "```\n", "\n", "Please save the above code in a file named `get_current_date.py` and execute it to get today's date. After that, we will proceed to the next step of fetching the stock data.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", "2024-02-07\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", "Great, today's date is 2024-02-07. Now, let's move on to the next step, which is to fetch the stock prices for META and TESLA.\n", "\n", "We will use Python to retrieve the stock data. There are several financial data APIs available, but for this example, we'll use `yfinance`, which is a popular library that allows us to fetch historical market data from Yahoo Finance.\n", "\n", "First, we need to install the `yfinance` package. You can do this by running the following command:\n", "\n", "```sh\n", "pip install yfinance\n", "```\n", "\n", "After installing `yfinance`, we will write a Python script to fetch the YTD stock prices for META and TESLA and calculate the YTD gain. The YTD gain is calculated by comparing the current stock price to the stock price at the beginning of the year.\n", "\n", "Here's the Python script to do that:\n", "\n", "```python\n", "# filename: ytd_stock_comparison.py\n", "\n", "import yfinance as yf\n", "from datetime import datetime\n", "\n", "# Define the tickers for Meta Platforms, Inc. and Tesla, Inc.\n", "tickers = [\"META\", \"TSLA\"]\n", "\n", "# Define the start of the year\n", "start_of_year = datetime(datetime.now().year, 1, 1)\n", "\n", "# Fetch the stock data\n", "meta_data = yf.download(tickers[0], start=start_of_year, end=datetime.now())\n", "tesla_data = yf.download(tickers[1], start=start_of_year, end=datetime.now())\n", "\n", "# Calculate the YTD gain for each stock\n", "meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100\n", "tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100\n", "\n", "# Print the YTD gain for each stock\n", "print(f\"META YTD Gain: {meta_ytd_gain:.2f}%\")\n", "print(f\"TESLA YTD Gain: {tesla_ytd_gain:.2f}%\")\n", "```\n", "\n", "Please save the above code in a file named `ytd_stock_comparison.py` and execute it. This script will output the YTD gain for both META and TESLA stocks.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is sh)...\u001b[0m\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...\u001b[0m\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", "Requirement already satisfied: yfinance in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (0.2.36)\n", "Requirement already satisfied: pandas>=1.3.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.2.0)\n", "Requirement already satisfied: numpy>=1.16.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.26.3)\n", "Requirement already satisfied: requests>=2.31 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.31.0)\n", "Requirement already satisfied: multitasking>=0.0.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (0.0.11)\n", "Requirement already satisfied: lxml>=4.9.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (5.1.0)\n", "Requirement already satisfied: appdirs>=1.4.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.4.4)\n", "Requirement already satisfied: pytz>=2022.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2023.3.post1)\n", "Requirement already satisfied: frozendict>=2.3.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.4.0)\n", "Requirement already satisfied: peewee>=3.16.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (3.17.0)\n", "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (4.12.3)\n", "Requirement already satisfied: html5lib>=1.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.1)\n", "Requirement already satisfied: soupsieve>1.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.5)\n", "Requirement already satisfied: six>=1.9 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n", "Requirement already satisfied: webencodings in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\n", "Requirement already satisfied: tzdata>=2022.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2023.4)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.6)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2.1.0)\n", "Requirement already satisfied: certifi>=2017.4.17 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2023.11.17)\n", "\n", "META YTD Gain: 31.31%\n", "TESLA YTD Gain: -25.49%\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", "The year-to-date (YTD) gain for META (Meta Platforms, Inc.) is 31.31%, indicating an increase in its stock price since the beginning of the year. On the other hand, TESLA (Tesla, Inc.) has experienced a YTD loss of -25.49%, indicating a decrease in its stock price since the beginning of the year.\n", "\n", "These percentages reflect the performance of each company's stock from the start of the year to today's date, 2024-02-07.\n", "\n", "TERMINATE\n", "\n", "--------------------------------------------------------------------------------\n" ] } ], "source": [ "# create an AssistantAgent named \"assistant\"\n", "assistant = autogen.AssistantAgent(\n", " name=\"assistant\",\n", " llm_config={\n", " \"cache_seed\": 41, # seed for caching and reproducibility\n", " \"config_list\": config_list, # a list of OpenAI API configurations\n", " \"temperature\": 0, # temperature for sampling\n", " }, # configuration for autogen's enhanced inference API which is compatible with OpenAI API\n", ")\n", "# create a UserProxyAgent instance named \"user_proxy\"\n", "user_proxy = autogen.UserProxyAgent(\n", " name=\"user_proxy\",\n", " human_input_mode=\"NEVER\",\n", " max_consecutive_auto_reply=10,\n", " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n", " code_execution_config={\n", " \"work_dir\": \"coding\",\n", " \"use_docker\": False, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly.\n", " },\n", ")\n", "# the assistant receives a message from the user_proxy, which contains the task description\n", "chat_res = user_proxy.initiate_chat(\n", " assistant,\n", " message=\"\"\"What date is today? Compare the year-to-date gain for META and TESLA.\"\"\",\n", " summary_method=\"reflection_with_llm\",\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The example above involves code execution. In AutoGen, code execution is triggered automatically by the `UserProxyAgent` when it detects an executable code block in a received message and no human user input is provided. This process occurs in a designated working directory, using a Docker container by default. Unless a specific directory is specified, AutoGen defaults to the `autogen/extensions` directory. Users have the option to specify a different working directory by setting the `work_dir` argument when constructing a new instance of the `UserProxyAgent`.\n", "\n", "The whole chat is auto-generated." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Check chat results\n", "The `initiate_chat` method returns a `ChatResult` object, which is a dataclass object storing information about the chat. Currently, it includes the following attributes:\n", "\n", "- `chat_history`: a list of chat history.\n", "- `summary`: a string of chat summary. A summary is only available if a summary_method is provided when initiating the chat.\n", "- `cost`: a tuple of (total_cost, total_actual_cost), where total_cost is a dictionary of cost information, and total_actual_cost is a dictionary of information on the actual incurred cost with cache.\n", "- `human_input`: a list of strings of human inputs solicited during the chat. (Note that since we are setting `human_input_mode` to `NEVER` in this notebook, this list is always empty.)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chat history: [{'content': 'What date is today? Compare the year-to-date gain for META and TESLA.', 'role': 'assistant'}, {'content': \"To get the current date, we can use Python's `datetime` module. After that, we will need to retrieve the year-to-date (YTD) gain for both META (Meta Platforms, Inc.) and TESLA (Tesla, Inc.). We can do this by fetching the stock prices from the beginning of the year and the current stock prices, then calculating the percentage change.\\n\\nFirst, let's write a Python script to get the current date:\\n\\n```python\\n# filename: get_current_date.py\\n\\nfrom datetime import datetime\\n\\n# Get the current date\\ncurrent_date = datetime.now()\\n\\n# Print the current date in YYYY-MM-DD format\\nprint(current_date.strftime('%Y-%m-%d'))\\n```\\n\\nPlease save the above code in a file named `get_current_date.py` and execute it to get today's date. After that, we will proceed to the next step of fetching the stock data.\", 'role': 'user'}, {'content': 'exitcode: 0 (execution succeeded)\\nCode output: \\n2024-02-07\\n', 'role': 'assistant'}, {'content': 'Great, today\\'s date is 2024-02-07. Now, let\\'s move on to the next step, which is to fetch the stock prices for META and TESLA.\\n\\nWe will use Python to retrieve the stock data. There are several financial data APIs available, but for this example, we\\'ll use `yfinance`, which is a popular library that allows us to fetch historical market data from Yahoo Finance.\\n\\nFirst, we need to install the `yfinance` package. You can do this by running the following command:\\n\\n```sh\\npip install yfinance\\n```\\n\\nAfter installing `yfinance`, we will write a Python script to fetch the YTD stock prices for META and TESLA and calculate the YTD gain. The YTD gain is calculated by comparing the current stock price to the stock price at the beginning of the year.\\n\\nHere\\'s the Python script to do that:\\n\\n```python\\n# filename: ytd_stock_comparison.py\\n\\nimport yfinance as yf\\nfrom datetime import datetime\\n\\n# Define the tickers for Meta Platforms, Inc. and Tesla, Inc.\\ntickers = [\"META\", \"TSLA\"]\\n\\n# Define the start of the year\\nstart_of_year = datetime(datetime.now().year, 1, 1)\\n\\n# Fetch the stock data\\nmeta_data = yf.download(tickers[0], start=start_of_year, end=datetime.now())\\ntesla_data = yf.download(tickers[1], start=start_of_year, end=datetime.now())\\n\\n# Calculate the YTD gain for each stock\\nmeta_ytd_gain = ((meta_data[\\'Close\\'][-1] - meta_data[\\'Close\\'][0]) / meta_data[\\'Close\\'][0]) * 100\\ntesla_ytd_gain = ((tesla_data[\\'Close\\'][-1] - tesla_data[\\'Close\\'][0]) / tesla_data[\\'Close\\'][0]) * 100\\n\\n# Print the YTD gain for each stock\\nprint(f\"META YTD Gain: {meta_ytd_gain:.2f}%\")\\nprint(f\"TESLA YTD Gain: {tesla_ytd_gain:.2f}%\")\\n```\\n\\nPlease save the above code in a file named `ytd_stock_comparison.py` and execute it. This script will output the YTD gain for both META and TESLA stocks.', 'role': 'user'}, {'content': 'exitcode: 0 (execution succeeded)\\nCode output: \\nRequirement already satisfied: yfinance in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (0.2.36)\\nRequirement already satisfied: pandas>=1.3.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.2.0)\\nRequirement already satisfied: numpy>=1.16.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.26.3)\\nRequirement already satisfied: requests>=2.31 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.31.0)\\nRequirement already satisfied: multitasking>=0.0.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (0.0.11)\\nRequirement already satisfied: lxml>=4.9.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (5.1.0)\\nRequirement already satisfied: appdirs>=1.4.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.4.4)\\nRequirement already satisfied: pytz>=2022.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2023.3.post1)\\nRequirement already satisfied: frozendict>=2.3.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.4.0)\\nRequirement already satisfied: peewee>=3.16.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (3.17.0)\\nRequirement already satisfied: beautifulsoup4>=4.11.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (4.12.3)\\nRequirement already satisfied: html5lib>=1.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.1)\\nRequirement already satisfied: soupsieve>1.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.5)\\nRequirement already satisfied: six>=1.9 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\\nRequirement already satisfied: webencodings in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\\nRequirement already satisfied: python-dateutil>=2.8.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\\nRequirement already satisfied: tzdata>=2022.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2023.4)\\nRequirement already satisfied: charset-normalizer<4,>=2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.3.2)\\nRequirement already satisfied: idna<4,>=2.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.6)\\nRequirement already satisfied: urllib3<3,>=1.21.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2.1.0)\\nRequirement already satisfied: certifi>=2017.4.17 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2023.11.17)\\n\\nMETA YTD Gain: 31.31%\\nTESLA YTD Gain: -25.49%\\n', 'role': 'assistant'}, {'content': \"The year-to-date (YTD) gain for META (Meta Platforms, Inc.) is 31.31%, indicating an increase in its stock price since the beginning of the year. On the other hand, TESLA (Tesla, Inc.) has experienced a YTD loss of -25.49%, indicating a decrease in its stock price since the beginning of the year.\\n\\nThese percentages reflect the performance of each company's stock from the start of the year to today's date, 2024-02-07.\\n\\nTERMINATE\", 'role': 'user'}]\n", "Summary: The year-to-date gain for META is 31.31%, while TESLA has a year-to-date loss of -25.49% as of February 7, 2024.\n", "Cost info: ({'total_cost': 0.20895, 'gpt-4': {'cost': 0.20895, 'prompt_tokens': 5355, 'completion_tokens': 805, 'total_tokens': 6160}}, {'total_cost': 0.18321, 'gpt-4': {'cost': 0.18321, 'prompt_tokens': 4865, 'completion_tokens': 621, 'total_tokens': 5486}})\n" ] } ], "source": [ "print(\"Chat history:\", chat_res.chat_history)\n", "\n", "print(\"Summary:\", chat_res.summary)\n", "print(\"Cost info:\", chat_res.cost)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Example Task: Plot Chart" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "Plot a chart of their stock price change YTD and save to stock_price_ytd.png.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", "To plot a chart of the YTD stock price changes for META and TESLA and save it to a file named `stock_price_ytd.png`, we will use Python with the `matplotlib` library for plotting and `yfinance` to fetch the stock data.\n", "\n", "First, ensure that `matplotlib` is installed by running the following command:\n", "\n", "```sh\n", "pip install matplotlib\n", "```\n", "\n", "Next, here's the Python script to fetch the stock data, plot the chart, and save it:\n", "\n", "```python\n", "# filename: plot_stock_price_ytd.py\n", "\n", "import yfinance as yf\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "\n", "# Define the tickers for Meta Platforms, Inc. and Tesla, Inc.\n", "tickers = [\"META\", \"TSLA\"]\n", "\n", "# Define the start of the year\n", "start_of_year = datetime(datetime.now().year, 1, 1)\n", "\n", "# Fetch the stock data\n", "meta_data = yf.download(tickers[0], start=start_of_year, end=datetime.now())\n", "tesla_data = yf.download(tickers[1], start=start_of_year, end=datetime.now())\n", "\n", "# Normalize the data to compare the percentage change\n", "meta_normalized = (meta_data['Close'] / meta_data['Close'].iloc[0]) * 100\n", "tesla_normalized = (tesla_data['Close'] / tesla_data['Close'].iloc[0]) * 100\n", "\n", "# Plot the data\n", "plt.figure(figsize=(14, 7))\n", "plt.plot(meta_normalized, label='META YTD')\n", "plt.plot(tesla_normalized, label='TESLA YTD')\n", "\n", "# Add titles and labels\n", "plt.title('YTD Stock Price Change for META and TESLA')\n", "plt.xlabel('Date')\n", "plt.ylabel('Normalized Price (Base 100)')\n", "plt.legend()\n", "\n", "# Save the plot to a file\n", "plt.savefig('stock_price_ytd.png')\n", "plt.show()\n", "```\n", "\n", "Please save the above code in a file named `plot_stock_price_ytd.py` and execute it. This script will create a chart showing the normalized YTD stock price changes for META and TESLA, and save the chart as `stock_price_ytd.png`. The normalization sets the initial stock prices to 100 to compare the relative changes in stock prices over time.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is sh)...\u001b[0m\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...\u001b[0m\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", "Requirement already satisfied: matplotlib in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (3.8.2)\n", "Requirement already satisfied: contourpy>=1.0.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (1.2.0)\n", "Requirement already satisfied: cycler>=0.10 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (4.47.2)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (1.4.5)\n", "Requirement already satisfied: numpy<2,>=1.21 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (1.26.3)\n", "Requirement already satisfied: packaging>=20.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (23.2)\n", "Requirement already satisfied: pillow>=8 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (10.2.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (3.1.1)\n", "Requirement already satisfied: python-dateutil>=2.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from matplotlib) (2.8.2)\n", "Requirement already satisfied: six>=1.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", "\n", "Figure(1400x700)\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", "The chart showing the year-to-date (YTD) stock price changes for META and TESLA has been successfully created and saved as `stock_price_ytd.png`. The chart should now be available in the directory where the script was executed.\n", "\n", "TERMINATE\n", "\n", "--------------------------------------------------------------------------------\n" ] } ], "source": [ "# followup of the previous question\n", "chat_res = user_proxy.send(\n", " recipient=assistant,\n", " message=\"\"\"Plot a chart of their stock price change YTD and save to stock_price_ytd.png.\"\"\",\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chat history: [{'content': 'What date is today? Compare the year-to-date gain for META and TESLA.', 'role': 'assistant'}, {'content': \"To get the current date, we can use Python's `datetime` module. After that, we will need to retrieve the year-to-date (YTD) gain for both META (Meta Platforms, Inc.) and TESLA (Tesla, Inc.). We can do this by fetching the stock prices from the beginning of the year and the current stock prices, then calculating the percentage change.\\n\\nFirst, let's write a Python script to get the current date:\\n\\n```python\\n# filename: get_current_date.py\\n\\nfrom datetime import datetime\\n\\n# Get the current date\\ncurrent_date = datetime.now()\\n\\n# Print the current date in YYYY-MM-DD format\\nprint(current_date.strftime('%Y-%m-%d'))\\n```\\n\\nPlease save the above code in a file named `get_current_date.py` and execute it to get today's date. After that, we will proceed to the next step of fetching the stock data.\", 'role': 'user'}, {'content': 'exitcode: 0 (execution succeeded)\\nCode output: \\n2024-02-05\\n', 'role': 'assistant'}, {'content': 'Great, today\\'s date is 2024-02-05. Now, let\\'s proceed to fetch the stock data for META and TESLA to compare their year-to-date gains.\\n\\nWe will use Python to fetch the stock data. For this purpose, we can use the `yfinance` library, which allows us to retrieve historical market data from Yahoo Finance. If `yfinance` is not installed, you will need to install it using `pip install yfinance`.\\n\\nHere\\'s the Python script to fetch the YTD stock data for META and TESLA and calculate their gains:\\n\\n```python\\n# filename: compare_ytd_gains.py\\n\\nimport yfinance as yf\\nfrom datetime import datetime\\n\\n# Define the tickers for Meta Platforms, Inc. and Tesla, Inc.\\ntickers = [\"META\", \"TSLA\"]\\n\\n# Define the start of the year\\nstart_of_year = datetime(datetime.now().year, 1, 1)\\n\\n# Fetch the historical data from the start of the year to the current date\\nmeta_data = yf.download(tickers[0], start=start_of_year, end=datetime.now())\\ntesla_data = yf.download(tickers[1], start=start_of_year, end=datetime.now())\\n\\n# Calculate the YTD gain for each stock\\nmeta_ytd_gain = ((meta_data[\\'Close\\'][-1] - meta_data[\\'Close\\'][0]) / meta_data[\\'Close\\'][0]) * 100\\ntesla_ytd_gain = ((tesla_data[\\'Close\\'][-1] - tesla_data[\\'Close\\'][0]) / tesla_data[\\'Close\\'][0]) * 100\\n\\n# Print the YTD gains\\nprint(f\"META YTD Gain: {meta_ytd_gain:.2f}%\")\\nprint(f\"TESLA YTD Gain: {tesla_ytd_gain:.2f}%\")\\n\\n# Compare the YTD gains\\nif meta_ytd_gain > tesla_ytd_gain:\\n print(\"META has a higher YTD gain than TESLA.\")\\nelif meta_ytd_gain < tesla_ytd_gain:\\n print(\"TESLA has a higher YTD gain than META.\")\\nelse:\\n print(\"META and TESLA have the same YTD gain.\")\\n```\\n\\nPlease save the above code in a file named `compare_ytd_gains.py` and execute it. The script will output the YTD gains for both META and TESLA and indicate which one is higher.', 'role': 'user'}, {'content': 'exitcode: 0 (execution succeeded)\\nCode output: \\nMETA YTD Gain: 37.17%\\nTESLA YTD Gain: -24.36%\\nMETA has a higher YTD gain than TESLA.\\n', 'role': 'assistant'}, {'content': 'The year-to-date (YTD) gain for META (Meta Platforms, Inc.) is 37.17%, while the YTD gain for TESLA (Tesla, Inc.) is -24.36%. This means that so far this year, META has had a higher gain compared to TESLA.\\n\\nIf you need further assistance or have more questions, feel free to ask. Otherwise, if everything is done, please let me know.\\n\\nTERMINATE', 'role': 'user'}, {'content': 'Plot a chart of their stock price change YTD and save to stock_price_ytd.png.', 'role': 'assistant'}, {'content': 'To plot a chart of the stock price changes YTD for META and TESLA and save it to a file named `stock_price_ytd.png`, we will use Python with the `matplotlib` library for plotting and `yfinance` to fetch the stock data.\\n\\nIf `matplotlib` is not installed, you will need to install it using `pip install matplotlib`.\\n\\nHere\\'s the Python script to plot the chart and save it:\\n\\n```python\\n# filename: plot_stock_price_ytd.py\\n\\nimport yfinance as yf\\nimport matplotlib.pyplot as plt\\nfrom datetime import datetime\\n\\n# Define the tickers for Meta Platforms, Inc. and Tesla, Inc.\\ntickers = [\"META\", \"TSLA\"]\\n\\n# Define the start of the year\\nstart_of_year = datetime(datetime.now().year, 1, 1)\\n\\n# Fetch the historical data from the start of the year to the current date\\nmeta_data = yf.download(tickers[0], start=start_of_year, end=datetime.now())\\ntesla_data = yf.download(tickers[1], start=start_of_year, end=datetime.now())\\n\\n# Normalize the data to compare the percentage change from the start of the year\\nmeta_normalized = (meta_data[\\'Close\\'] / meta_data[\\'Close\\'].iloc[0]) * 100\\ntesla_normalized = (tesla_data[\\'Close\\'] / tesla_data[\\'Close\\'].iloc[0]) * 100\\n\\n# Plot the data\\nplt.figure(figsize=(14, 7))\\nplt.plot(meta_normalized, label=\\'META YTD\\', color=\\'blue\\')\\nplt.plot(tesla_normalized, label=\\'TESLA YTD\\', color=\\'orange\\')\\n\\n# Add titles and labels\\nplt.title(\\'Stock Price Change YTD for META and TESLA\\')\\nplt.xlabel(\\'Date\\')\\nplt.ylabel(\\'Normalized Price (Base 100)\\')\\nplt.legend()\\n\\n# Save the plot to a file\\nplt.savefig(\\'stock_price_ytd.png\\')\\nplt.show()\\n```\\n\\nPlease save the above code in a file named `plot_stock_price_ytd.py` and execute it. The script will display a chart of the stock price changes YTD for META and TESLA and save the chart as `stock_price_ytd.png` in the current directory.', 'role': 'user'}, {'content': 'exitcode: 0 (execution succeeded)\\nCode output: \\nFigure(1400x700)\\n', 'role': 'assistant'}, {'content': 'The chart of the stock price changes YTD for META and TESLA has been successfully plotted and saved as `stock_price_ytd.png` in your current directory. You can view this image file to see the visual comparison of the stock performance for both companies since the start of the year.\\n\\nIf you have any more questions or need further assistance, feel free to ask. Otherwise, we have completed the task.\\n\\nTERMINATE', 'role': 'user'}]\n", "Summary: None\n", "Cost info: ({'total_cost': 0.28146, 'gpt-4': {'cost': 0.28146, 'prompt_tokens': 6642, 'completion_tokens': 1370, 'total_tokens': 8012}}, {'total_cost': 0})\n" ] } ], "source": [ "print(\"Chat history:\", chat_res.chat_history)\n", "print(\"Summary:\", chat_res.summary)\n", "print(\"Cost info:\", chat_res.cost)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Let's display the generated figure." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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7t1bs2bNupkyAQBAIcEMXgAAkCcqVKigdevWaefOnddduOvrr7/WQw89pNtuu03Dhw+XJFWpUkWStGvXLrVq1UoBAQF6/vnn5enpqSlTpqhNmzb6448/7D0jY2Nj1apVK+3Zs0dDhgzRrbfeqrNnz+rHH3/U8ePHM51lePnyZd1zzz3atGmTfv/9dzVp0iTH13jo0CFJUrFixdKNP/bYYypRooReffVVXbp0KcvnT58+XUOGDFGdOnU0atQoBQUF6e+//9aSJUvsX7levny5OnfurEaNGmn06NFyc3PTtGnTdOedd2r16tW67bbbsjz/jz/+KEk56uV6/vx5derUST179lTfvn01b948vfDCC6pXr546d+4syezp+8UXX+i+++7TsGHDdPHiRU2dOlUdO3bUX3/9laFdxezZs3Xx4kU9/PDDstlseu+999SzZ0/9888/8vT0lCT9/PPPuvfee1WvXj2NHTtW58+f19ChQ1WmTJkMNT788MOaPn26Bg8erCeffFIRERGaMGGC/v77b61du9Z+zswEBgZq/Pjx6tOnj7744gvt3r1bp06d0uLFi2Wz2bL9c8quZs2aqUqVKlq6dGmWx9SqVUtff/21nnnmGZUtW9b+df0SJUro8uXLatOmjQ4ePKgRI0aoUqVKmjt3rgYNGqQLFy6km3UrSdOmTVN8fLyGDx8ub29vhYSE3LDG+++/Xx06dNChQ4fs//Zmz56t3r17X/dnGRUVlWHMw8Mj0w91bmTWrFmqUqWKmjRporp168rPz0/ffPONnnvuuRs+d+nSpfrnn380ePBghYaGateuXfrss8+0a9curV+/PsPvtW/fvqpUqZLGjh2rLVu26IsvvlDJkiXTzWZ/6KGHNHPmTN1///1q3ry5li9frq5du+b4urIjMTEx0w+iihQpIl9fX0nm++myZct0/Phx+4dGeWHWrFnq2bOnvLy8dN9992nSpEnauHFjrt4PAQBAIWIAAADkgd9++81wd3c33N3djWbNmhnPP/+88euvvxpXrlzJcGyRIkWMgQMHZhjv3r274eXlZRw6dMg+duLECaNo0aLGHXfcYR979dVXDUnGggULMpwjJSXFMAzDWLFihSHJmDt3rnHx4kWjdevWRvHixY2///77htcSERFhSDJee+0148yZM0ZkZKSxcuVK45ZbbjEkGfPnzzcMwzCmTZtmSDJatmxpJCUlpTtH6r6IiAjDMAzjwoULRtGiRY2mTZsaly9fzrTmlJQUo1q1akbHjh3tY4ZhGHFxcUalSpWM9u3bX7fuW265xQgMDLzh9aVq3bq1Icn46quv7GMJCQlGaGio0atXL/tYUlKSkZCQkO6558+fN0qVKmUMGTLEPpb6cytWrJgRFRVlH//hhx8MScaiRYvsY/Xq1TPKli1rXLx40T62cuVKQ5JRoUIF+9jq1asNScasWbPSvf6SJUsyHc/KXXfdZQQGBhru7u7GqFGjrnvs448/bmT1n8mp1/j+++9n+fx77rnHkGRER0df93UqVKhgdO3aNd3Yxx9/bEgyZs6caR+7cuWK0axZM8Pf39+IiYlJV0dAQIBx+vTp677Ota+XlJRkhIaGGm+88YZhGIaxe/duQ5Lxxx9/2P9uN27caH/e6NGjDUmZbjVq1Mj0tebOnWtIMlasWJFh35UrV4xixYoZL730kn3s/vvvNxo0aJCt64iLi8sw9s033xiSjFWrVmWo++q/UcMwjB49ehjFihWzP966dashyXjsscfSHXf//fcbkozRo0dnqy7DuP51G4b5O8jqZzl27Fj7cVOnTjUkGV5eXkbbtm2NV155xVi9erWRnJyc4ZySjMcff/yGtW3atMmQZCxdutQwDPP9pmzZssZTTz2V7esDAACFEy0aAABAnmjfvr3WrVunu+++W9u2bdN7772njh07qkyZMvaZpdeTnJys3377Td27d1flypXt46VLl9b999+vNWvWKCYmRpLZiqBBgwbq0aNHhvNcO3svOjpaHTp00N69e7Vy5cobLo52tdGjR6tEiRIKDQ1VmzZtdOjQIb377rvq2bNnuuOGDRt2w367S5cu1cWLF/Xf//5XPj4+mda8detWHThwQPfff7/OnTuns2fP6uzZs7p06ZLatWunVatWKSUlJcvXiImJUdGiRbN9fZLk7++frh+ol5eXbrvtNv3zzz/2MXd3d/tXxVNSUhQVFaWkpCQ1btxYW7ZsyXDOe++9V8HBwfbHrVq1kiT7OU+cOKEdO3bowQcfTLdoV+vWrVWvXr1055o7d64CAwPVvn17+8/j7NmzatSokfz9/TO0icjKp59+qitXrqhcuXJ65ZVXsvWc3Eq9posXL+b4ub/88otCQ0N133332cc8PT315JNPKjY2Vn/88Ue643v16qUSJUrk6DXc3d3Vt29fffPNN5LMWZ3lypWz/56yMn/+fC1dujTdNm3atBy9tmS2KTl37ly6a7zvvvu0bds27dq164bPT53lKknx8fE6e/asbr/9dknK9O/x2lYcrVq10rlz5+zvJ7/88osk6cknn0x33NNPP529C8qhpk2bZvg5Ll26NN3PY8iQIVqyZInatGmjNWvW6I033lCrVq1UrVq1XLWXkczfc6lSpdS2bVtJ5vvOvffeq2+//VbJycl5cm0AAMAatGgAAAB5pkmTJlqwYIGuXLmibdu2aeHChRo3bpx69+6trVu3XndBqTNnziguLk41atTIsK9WrVpKSUnRsWPHVKdOHR06dEi9evXKVk1PP/204uPj9ffff9sX2cqu4cOHq0+fPnJzc1NQUJDq1Kkjb2/vDMdVqlTphudKbe9wvfYVBw4ckCQNHDgwy2Oio6PThadXCwgISBfMZkfZsmUzhOLBwcHavn17urEZM2boww8/1N69e5WYmGgfz+zay5cvn+F8kuw9c48cOSJJqlq1aobnVq1aNV1Id+DAAUVHR2fZdzS7C06VL19eJUuWVJ06ddIFhPkhNjZWknIctkvmz6ZatWpyc0s/D6NWrVr2/VfLzt9eZu6//36NHz9e27Zt0+zZs9WvX78btqy44447slxkLSdmzpypSpUqydvbWwcPHpRktmnx8/PTrFmz9Pbbb1/3+VFRUXrttdf07bffZvj9R0dHZzj+en+PAQEBOnLkiNzc3OztKlJl9l6UF4oXL67w8PAbHtexY0d17NhRcXFx2rx5s+bMmaPJkyfrrrvu0t69e3PUizc5OVnffvut2rZta+8hLplh84cffqhly5apQ4cOuboeAABgPQJeAACQ57y8vNSkSRM1adJE1atX1+DBgzV37lxLVmu/55579O233+qdd97RV199lSE4u55q1aplK4jJq8AwdXbu+++/n+VM46tnvF6rZs2a+vvvv3Xs2DGVK1cuW6+Z1cxjwzDs92fOnKlBgwape/fueu6551SyZEm5u7tr7Nix9uA6p+fMrpSUFJUsWTLLxaByOnu1IOzcuVMlS5ZUQEBAvr9Wbv/2mjZtqipVqujpp59WRESEvQd0fouJidGiRYsUHx+vatWqZdg/e/ZsvfXWW9cNm/v27as///xTzz33nBo2bCh/f3+lpKSoU6dOmc5wz8u/Ryv4+fmpVatWatWqlYoXL67XXntNixcvvu4HQddavny5Tp48qW+//Vbffvtthv2zZs0i4AUAwIER8AIAgHzVuHFjSdLJkyftY5mFNyVKlJCfn5/27duXYd/evXvl5uZmDy2rVKminTt3Zuv1u3fvrg4dOmjQoEEqWrSoJk2alJvLuGmpswN37tyZ6czVq48JCAjIVrB8rW7duumbb77RzJkzNWrUqNwXe4158+apcuXKWrBgQbrfXW4D+woVKkiSffbm1a4dq1Klin7//Xe1aNEi32fe5oV169bp0KFD6dpe5ESFChW0fft2paSkpPswYu/evfb9eeW+++7Tm2++qVq1auWodcnNWLBggeLj4zVp0qQMs4H37dunl19+WWvXrlXLli0zff758+e1bNkyvfbaa3r11Vft46mz33OjQoUKSklJ0aFDh9LN2s3svchqmb2fZsesWbNUsmRJffrppxn2LViwQAsXLtTkyZMd4t8YAADIiB68AAAgT6xYsSLTGXGp/S2vDk6KFCmiCxcupDvO3d1dHTp00A8//KDDhw/bx0+dOqXZs2erZcuW9hmRvXr1sreAuFZmNTz44IMaP368Jk+erBdeeCE3l3fTOnTooKJFi2rs2LGKj49Pty+15kaNGqlKlSr64IMP7F/zv9qZM2eu+xq9e/dWvXr19NZbb2ndunUZ9l+8eFEvvfRSjmtPnQF59c92w4YNmb5GdoSFhalu3br66quv0l3nH3/8oR07dqQ7tm/fvkpOTtYbb7yR4TxJSUkZ/o6sdOTIEQ0aNEheXl567rnncnWOLl26KDIyUnPmzLGPJSUl6X//+5/8/f3VunXrvCpXDz30kEaPHq0PP/wwz855IzNnzlTlypX1yCOPqHfv3um2//znP/L3989ytraU+d+iJH388ce5rqlz586SpPHjx+fZOW/WsmXLMh3P7P30Ri5fvqwFCxborrvuyvAz7927t0aMGKGLFy9mq1c6AAAonJjBCwAA8sQTTzyhuLg49ejRQzVr1tSVK1f0559/as6cOapYsaIGDx5sP7ZRo0b6/fff9dFHHyksLEyVKlVS06ZN9eabb2rp0qVq2bKlHnvsMXl4eGjKlClKSEjQe++9Z3/+c889p3nz5qlPnz4aMmSIGjVqpKioKP3444+aPHmyGjRokKG+ESNGKCYmRi+99JIC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l1xyiSZPntzo952fn69zzjlHaWlpWr16tf7yl7/ovvvu0/PPP+875tChQ+revbseeughJSUlNbptp6Dv6+97SYqPj9e+fft8y44dOxp9jtaOvq+/7++++24999xzmjNnjr799ltNmjRJ48aN05o1axp9ntYsVPu+srJSHo9H//u//6uRI0fWeUxsbKymTJmi5cuXa9OmTbr77rt1991317o2OBn9X3//P/nkk37X/F27dql9+/a65JJLGn2e1ixU+/7zzz/Xqaeeqrffflvr1q3TxIkTNWHCBH344Ye+Y/i+F7p9L/F9L1T7viW+7zn98//uu+/k9Xr13HPPaePGjXr88cc1d+5c3XnnnUdtd/v27brgggs0fPhwffPNN5o6daquu+46LVq0yHdMUVGR+vXrp6effrpRtQKOZwAb7N+/30gyy5YtM8YYk5ubayIiIsybb77pO2bTpk1Gklm5cmW97dx4441m+PDhtbZfeuml5u677zbTp083/fr1O2otXq/XJCUlmb/85S++bbm5uSYqKsq89tprtY6fN2+eSUhIaOAdWp555hnTrl07U1pa6tv2pz/9yfTp06fO49PS0szjjz/eqLadir6v6ftA2gsG9H1N3ycnJ5unnnrK73UXXXSRueKKKxp1DqcJlb4/3NVXX23GjBnTqGPHjRtnrrzyyoDP4RT0f/3effdd43K5TFZWVsDncIJQ7Ptq559/vpk4cWKd+/i+ZwmVvuf7Xuj2vR3f95z8+VebNWuWSU9PP2rbt99+uznppJNq1TZq1Kg6j5dk3n333aO2CTgdI3hhi7y8PElS+/btJVl/NSwvL/cb8dK3b1917dpVK1euPGo71W1Umzdvnr7//ntNnz69UbVs375d2dnZfudOSEjQwIEDj3ruxli5cqXOPvtsRUZG+raNGjVKmzdv1sGDB4+rbaei7/37vrCwUGlpaUpNTdWYMWO0cePG4zpva0bf1/R9aWlprf890+PxaMWKFcd17tYqVPr+WKxZs0aff/65hg4d2uLnbin0f/1efPFFjRw5UmlpaS1+7pYQyn1fV82hhL73r5nve6HZ93Z83wuGz78x18+VK1fW+r9lRo0aZcu/5UBrEW53AQg9Xq9XU6dO1ZlnnqmTTz5ZkpSdna3IyMhacx4lJiYqOzu7znY+//xz/eMf/9C//vUv37bMzEzdcccd+vTTTxUe3rgf7+r2ExMTG33uxsrOzlZ6enqtdqv3tWvX7rjadxr63r/v+/Tpo5deekmnnnqq8vLy9Mgjj2jw4MHauHGjunTpclznb23oe/++HzVqlB577DGdffbZ6tGjhxYvXqx33nlHlZWVx3Xu1iiU+j4QXbp00Q8//KCKigrdd999uu6661rs3C2J/q/f3r179fHHH+vVV19t0fO2lFDu+zfeeENffvmlnnvuuSZt1ynoe/++5/te6PZ9S3/fC4bPf+vWrZozZ44eeeSRBtuuq938/HwVFxfL4/E0qkYgmDCCFy3upptu0oYNG/T6668fcxsbNmzQmDFjNH36dJ1zzjmSrLnvLr/8ct1///3q3bt3na9bsGCB2rRp41s+/fTTY67hSCeddJKv3fPOO6/J2g0m9L2/QYMGacKECerfv7+GDh2qd955Rx07dgzKXwjpe39PPvmkevXqpb59+yoyMlJTpkzRxIkT5XYH3z/L9H3dPv30U3311VeaO3eunnjiCb322mtNVltrQv/X7+WXX1bbtm3rvBlbMAjVvl+6dKkmTpyoF154IWhunhco+t6/7/m+F5hg6vuW/r7n9M9/z549Ovfcc3XJJZfo97//vW/74e1OmjTp2N4YEAIYwYsWNWXKFH344Ydavny531+sk5KSVFZWptzcXL+/Lubk5NS6EcW3336rESNG6Prrr9fdd9/t215QUKCvvvpKa9as0ZQpUyRZf8U0xig8PFz//ve/9etf/1oDBw70vaZz587at2+f71zJycl+527MnUGrffTRRyovL5ck318Mk5KS/O5QWt1u9b5QQt833PcREREaMGCAtm7d2uhzOwF9X7vvO3bsqPfee08lJSX68ccflZKSojvuuEPdu3dv9LmdINT6PhDVo7xPOeUU5eTk6L777tNll10WcDutGf1fP2OMXnrpJV111VV+07kEi1Dt+2XLlmn06NF6/PHHNWHChEa3GUzo+4b7nu97llDo+5b8vuf0z3/v3r0aPny4Bg8eXOvGs998841vPT4+3ve+6vq+HR8fz+hdhC67Jv9FaPF6veamm24yKSkpZsuWLbX2V0/+/tZbb/m2fffdd7Umf9+wYYPp1KmTue2222q1UVlZadavX++3TJ482fTp08esX7/eFBYW1ltbUlKSeeSRR3zb8vLymvRmS2VlZb5t06ZNC6mbrNH3jet7Y4ypqKgwffr0MTfffHOjztHa0feN7/uysjLTo0cPM23atEado7UL1b4/XCA3Wbv//vtNWlpawOdorej/hvt/6dKlRpJZv359wG23ZqHc90uXLjWxsbG1bqhUF77vWUKx743h+54xodv3zfF9Lxg+/927d5tevXqZ8ePHm4qKika979tvv92cfPLJftsuu+wybrKGkEbAixYxefJkk5CQYDIyMsy+fft8y6FDh3zHTJo0yXTt2tUsWbLEfPXVV2bQoEFm0KBBvv3r1683HTt2NFdeeaVfG/v376/3vI25u6cxxjz00EOmbdu25v333zfr1q0zY8aMMenp6aa4uNh3zI4dO8yaNWvM/fffb9q0aWPWrFlj1qxZYwoKCuptNzc31yQmJpqrrrrKbNiwwbz++usmJibGPPfcc75jSktLfW0lJyebW2+91axZs8ZkZmY2WLcT0Pf19/39999vFi1aZLZt22ZWr15txo8fb6Kjo83GjRsbrNsJ6Pv6+/6LL74wb7/9ttm2bZtZvny5+eUvf2nS09PNwYMHG6zbCUK1740xZuPGjWbNmjVm9OjRZtiwYb7XVXvqqafMBx98YLZs2WK2bNli/vrXv5q4uDhz1113NVi3U9D/9fd/tSuvvNIMHDiwwVqdJlT7fsmSJSYmJsZMmzbNr+Yff/zRdwzf90K37/m+F7p93xLf95z++e/evdv07NnTjBgxwuzevdvv/Efz/fffm5iYGHPbbbeZTZs2maefftqEhYWZhQsX+o4pKCjw9aUk89hjj5k1a9aYHTt2NFg34EQEvGgRkupc5s2b5zumuLjY3HjjjaZdu3YmJibGjBs3zu/CPn369DrbONqop8b+w+P1es0999xjEhMTTVRUlBkxYoTZvHmz3zFXX311nedfunTpUdteu3atGTJkiImKijKdO3c2Dz30kN/+7du319nu0KFDG6zbCej7+vt+6tSppmvXriYyMtIkJiaa888/33z99dcN1uwU9H39fZ+RkWFOPPFEExUVZTp06GCuuuoqs2fPngZrdopQ7vu0tLQ6X1dt9uzZ5qSTTjIxMTEmPj7eDBgwwDzzzDOmsrKywbqdgv6vv/+Nsf4I5PF4zPPPP99grU4Tqn1f32sO/y7H973Q7Xu+74Vu37fE9z2nf/7z5s2r9z00ZOnSpaZ///4mMjLSdO/e3e89V++vq92rr766wbYBJ3IZY4wAAAAAAAAAAI4TfLfrBgAAAAAAAIAQQcALAAAAAAAAAA5FwAsAAAAAAAAADkXACwAAAAAAAAAORcALAAAAAAAAAA5FwAsAAAAAAAAADkXACwAAAAAAAAAORcALAAAAAAAAAA5FwAsAAICQcM0118jlcsnlcikiIkKJiYn61a9+pZdeekler7fR7cyfP19t27ZtvkIBAACAABDwAgAAIGSce+652rdvn7KysvTxxx9r+PDh+uMf/6gLL7xQFRUVdpcHAAAABIyAFwAAACEjKipKSUlJ6ty5s0477TTdeeedev/99/Xxxx9r/vz5kqTHHntMp5xyimJjY5Wamqobb7xRhYWFkqSMjAxNnDhReXl5vtHA9913nySptLRUt956qzp37qzY2FgNHDhQGRkZ9rxRAAAAhAwCXgAAAIS0X/7yl+rXr5/eeecdSZLb7dbs2bO1ceNGvfzyy1qyZIluv/12SdLgwYP1xBNPKD4+Xvv27dO+fft06623SpKmTJmilStX6vXXX9e6det0ySWX6Nxzz1VmZqZt7w0AAADBz2WMMXYXAQAAADS3a665Rrm5uXrvvfdq7Rs/frzWrVunb7/9tta+t956S5MmTdKBAwckWXPwTp06Vbm5ub5jdu7cqe7du2vnzp1KSUnxbR85cqTOOOMM/d///V+Tvx8AAABAksLtLgAAAACwmzFGLpdLkvSf//xHM2fO1Hfffaf8/HxVVFSopKREhw4dUkxMTJ2vX79+vSorK9W7d2+/7aWlperQoUOz1w8AAIDQRcALAACAkLdp0yalp6crKytLF154oSZPnqwZM2aoffv2WrFiha699lqVlZXVG/AWFhYqLCxMq1evVlhYmN++Nm3atMRbAAAAQIgi4AUAAEBIW7JkidavX6+bb75Zq1evltfr1aOPPiq327pdxRtvvOF3fGRkpCorK/22DRgwQJWVldq/f7/OOuusFqsdAAAAIOAFAABAyCgtLVV2drYqKyuVk5OjhQsXaubMmbrwwgs1YcIEbdiwQeXl5ZozZ45Gjx6tzz77THPnzvVro1u3biosLNTixYvVr18/xcTEqHfv3rriiis0YcIEPfrooxowYIB++OEHLV68WKeeeqouuOACm94xAAAAgp3b7gIAAACAlrJw4UIlJyerW7duOvfcc7V06VLNnj1b77//vsLCwtSvXz899thjevjhh3XyySdrwYIFmjlzpl8bgwcP1qRJk3TppZeqY8eOmjVrliRp3rx5mjBhgm655Rb16dNHY8eO1ZdffqmuXbva8VYBAAAQIlzGGGN3EQAAAAAAAACAwDGCFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHIqAFwAAAAAAAAAcioAXAAAAAAAAAByKgBcAAAAAAAAAHOr/Awsd6Lg618B2AAAAAElFTkSuQmCC", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "try:\n", " image = Image(filename=\"coding/stock_price_ytd.png\")\n", " display(image)\n", "except FileNotFoundError:\n", " print(\"Image not found. Please check the file name and modify if necessary.\")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Use a Different Code Execution Environment\n", "\n", "The code execution happened in a separate process, so the plot is not directly displayed in the notebook. Is it possible to change the code execution environment into IPython?\n", "\n", "Yes! In the following we demonstrate how to extend the `UserProxyAgent` to use a different code execution environment." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "class IPythonUserProxyAgent(autogen.UserProxyAgent):\n", " def __init__(self, name: str, **kwargs):\n", " super().__init__(name, **kwargs)\n", " self._ipython = get_ipython()\n", "\n", " def generate_init_message(self, *args, **kwargs) -> Union[str, Dict]:\n", " return (\n", " super().generate_init_message(*args, **kwargs)\n", " + \"\"\"\n", "If you suggest code, the code will be executed in IPython.\"\"\"\n", " )\n", "\n", " def run_code(self, code, **kwargs):\n", " result = self._ipython.run_cell(\"%%capture --no-display cap\\n\" + code)\n", " log = self._ipython.ev(\"cap.stdout\")\n", " log += self._ipython.ev(\"cap.stderr\")\n", " if result.result is not None:\n", " log += str(result.result)\n", " exitcode = 0 if result.success else 1\n", " if result.error_before_exec is not None:\n", " log += f\"\\n{result.error_before_exec}\"\n", " exitcode = 1\n", " if result.error_in_exec is not None:\n", " log += f\"\\n{result.error_in_exec}\"\n", " exitcode = 1\n", " return exitcode, log, None" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The implementation overrides three functions in `UserProxyAgent`:\n", "* constructor. We get the ipython instance as the code execution environment.\n", "* `generate_init_message`. We generate a modified initial message to send to the assistant agent, by adding the info that the execution will be performed in IPython.\n", "* `run_code`. We execute the code with the ipython instance.\n", "\n", "With the new `IPythonUserProxyAgent`, we are able to run the code within the current notebook environment and display the plot directly." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mipython_user_proxy\u001b[0m (to assistant):\n", "\n", "Plot a chart of META and TESLA stock price gain YTD\n", "If you suggest code, the code will be executed in IPython.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to ipython_user_proxy):\n", "\n", "To plot a chart of META (Facebook's parent company, Meta Platforms, Inc.) and TESLA (Tesla, Inc.) stock price gain year-to-date (YTD), we can use Python with libraries such as `pandas` for data manipulation and `matplotlib` or `plotly` for plotting. We will also use `yfinance` to fetch historical stock data.\n", "\n", "Here's the plan:\n", "1. Install the `yfinance` library if it's not already installed.\n", "2. Fetch the YTD stock price data for META and TESLA.\n", "3. Calculate the YTD gain for each stock.\n", "4. Plot the YTD gain on a chart.\n", "\n", "First, let's install `yfinance` and import the necessary libraries. Execute the following code:\n", "\n", "```python\n", "# Install yfinance if not already installed\n", "!pip install yfinance\n", "\n", "import yfinance as yf\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "\n", "# Check if today's date is required or the last trading day\n", "today = datetime.today().strftime('%Y-%m-%d')\n", "\n", "# Fetch YTD stock data for META and TESLA\n", "meta_data = yf.download('META', start='2023-01-01', end=today)\n", "tesla_data = yf.download('TSLA', start='2023-01-01', end=today)\n", "\n", "# Calculate the YTD gain for each stock\n", "meta_ytd_gain = (meta_data['Close'] - meta_data['Close'].iloc[0]) / meta_data['Close'].iloc[0] * 100\n", "tesla_ytd_gain = (tesla_data['Close'] - tesla_data['Close'].iloc[0]) / tesla_data['Close'].iloc[0] * 100\n", "\n", "# Plot the YTD gain on a chart\n", "plt.figure(figsize=(14, 7))\n", "plt.plot(meta_ytd_gain.index, meta_ytd_gain, label='META YTD Gain %')\n", "plt.plot(tesla_ytd_gain.index, tesla_ytd_gain, label='TESLA YTD Gain %')\n", "plt.title('META vs TESLA Stock Price Gain YTD')\n", "plt.xlabel('Date')\n", "plt.ylabel('Gain %')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()\n", "```\n", "\n", "This code will install `yfinance`, fetch the YTD stock data for META and TESLA, calculate the YTD gain, and plot it on a chart. Please execute the code in your IPython environment.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n" ] }, { "data": { "image/png": "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822bO+4///zTAIwZM2bkWb9w4cICl19o27ZtBmA89dRT+dYlJiYaJ0+edHxdWJqY+zN7oQkTJhgmk8k4dOhQvntyodxncP/+/fnG8dFHHxU61gv9+OOPBmD4+/sbkZGRBY4n16WWmOWaM2eOARgffPBBicYmIiJyMWUQiYiIFGPIkCGcO3eO+fPnc+bMGebPn19sednNN9/M4sWL830VloFRlBkzZjBgwABHWU2DBg1o06ZNiUqkevToQWBgILNmzXIsO336NIsXL+bOO+90LPPz8yMuLq5EGTWXo3379gXel9zsKIAHHniAhQsX0q1bN1auXMn48ePp0qULDRo0YPXq1Zd03hkzZhAcHOy4/yaTiTvvvJPvvvsOq9Va7P7Tpk3j448/JiIigjlz5vDss8/SuHFjbrzxRo4ePVrs/kuWLCErK4unnnoqT3nRyJEj8fX15ZdffgFgy5YtxMbG8tRTT+Hn55fnGAU1jv7999/p06cPN954I7Nnzy60aXpBGjVqRI0aNYiIiOCRRx6hfv36/PLLL3h6ejq2cXNzK7BE8WI//fQTgYGB/OMf/8i3LnfcP/zwA9WqVaNXr155ssfatGmDt7c3v//+e6HHz51draDMqMjISGrUqOH4+t///udYd2GD6LS0NE6dOkWnTp0wDIMtW7YUe109e/bM0yS6efPm+Pr6lni2tNtuu43+/fuTlJTEJ598kmc8ZS333pw5c6bcziEiIpWbZjETEREpRo0aNejZsyczZ84kPT0dq9XK7bffXuQ+YWFh9OzZ87LPvWvXLrZs2cLw4cPZv3+/Y3m3bt345JNPSE1NxdfXt9D9nZ2due2225g5cyaZmZm4ubkxe/ZsLBZLngDRCy+8wJIlS7juuuuoX78+vXv35u677y6w787lCAwMLNF96dOnD3369CE9PZ1NmzYxa9YsPvvsMwYOHMju3btL1YvIarXy3Xff0b17d0d/HbAHq9555x2WLl1K7969izyG2Wxm9OjRjB49msTERFatWsVnn33GggULGDp0KH/++WeR+x86dAiwB2Uu5OrqSmRkpGN9bplX06ZNi72ujIwMBgwYQJs2bfj+++9xdi7dn3U//fQTvr6+uLi4EBYWlicQkqtWrVoF9oK6WExMDI0aNSpyDPv27SMlJaXQf7uEhIRC980NjhbUW+nnn3/GYrGwbdu2PD21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ErJUYlYo3RERERERERERqRKybSoxK4zuiIiIiIiIiIhUCRarSswKowCRiIiIiIiIiFQJKjErnO6IiIiIiIiIiFQJKjErnO6IiIiIiIiIiFQJlmyVmBVGASIRERERERERqRLO9yBSOORiuiMiIiIiIiIiUiVYVGJWKN0REREREREREakSckvMnFVilo8CRCIiIiIiIiJSJeSWmLkqgygf3RERERERERERqRJyS8yczQqHXEx3RERERERERESqBMcsZs4qMbuYAkQiIiIiIiIiUiWoxKxwuiMiIiIiIiIiUiWcLzFTBtHFFCASERERERERkSrhfImZwiEXq9A7MmHCBNq1a4ePjw9BQUHccsst7NmzJ8823bp1w2Qy5fl69NFH82xz+PBhBgwYgKenJ0FBQTz33HNkZ2dfyUsRERERERERkatcdk4GkYtKzPJxrsiTL1++nNGjR9OuXTuys7N56aWX6N27Nzt37sTLy8ux3ciRI3nttdcc7z09PR2vrVYrAwYMICQkhNWrV3P8+HGGDx+Oi4sLb7755hW9HhERERERERG5euX2IHJxUonZxSo0QLRw4cI876dPn05QUBCbNm2ia9eujuWenp6EhIQUeIxFixaxc+dOlixZQnBwMC1btmT8+PG88MILjB07FldX13K9BhERERERERG5NmTllpgpgyifCg0QXSwlJQUAf3//PMtnzJjBN998Q0hICIMGDeJf//qXI4tozZo1NGvWjODgYMf2ffr04bHHHmPHjh20atUq33kyMzPJzMx0vE9NTQXAYrFgsVjK/LrKWu4Yr4WxytVLz5GUFz1bUh70XMmVoOdMyoueLSkPeq4uTW4Gkdkwqsy9K+l1mgzDMMp5LCVis9m46aabSE5OZuXKlY7lkydPpk6dOtSsWZO//vqLF154geuuu47Zs2cD8PDDD3Po0CF+++03xz7p6el4eXnx66+/0q9fv3znGjt2LOPGjcu3fObMmXnK10RERERERESk8nj7LyeOpJl4OMpKk+pXRTik3KWnp3P33XeTkpKCr69vodtdNRlEo0ePZvv27XmCQ2APAOVq1qwZoaGh3HjjjcTExFCvXr1LOteLL77IM88843ifmppKeHg4vXv3LvJmXS0sFguLFy+mV69euLi4VPRw5Bql50jKi54tKQ96ruRK0HMm5UXPlpQHPVeX5tMDqyHtLB3bX8f19QMqejhXRG7VVHGuigDR448/zvz581mxYgVhYWFFbtu+fXsA9u/fT7169QgJCWH9+vV5tjlx4gRAoX2L3NzccHNzy7fcxcXlmvrButbGK1cnPUdSXvRsSXnQcyVXgp4zKS96tqQ86LkqneycpCEPt6pz30p6nRXalckwDB5//HHmzJnDsmXLiIiIKHafrVu3AhAaGgpAx44d+fvvv0lISHBss3jxYnx9fYmOji6XcYuIiIiIiIjItUezmBWuQjOIRo8ezcyZM/n555/x8fEhPj4egGrVquHh4UFMTAwzZ86kf//+BAQE8Ndff/H000/TtWtXmjdvDkDv3r2Jjo5m2LBhvPXWW8THx/PKK68wevToArOERERERERERKRqsmgWs0JV6B359NNPSUlJoVu3boSGhjq+Zs2aBYCrqytLliyhd+/eREVFMWbMGG677TbmzZvnOIaTkxPz58/HycmJjh07cu+99zJ8+HBee+21irosEREREREREbkKWWz2GjNnswJEF6vQDKLiJlALDw9n+fLlxR6nTp06/Prrr2U1LBERERERERGphHJLzFydVWJ2MYXMRERERERERKRKyLbaE1VUYpaf7oiIiIiIiIiIVAlZORlEzgoQ5aM7IiIiIiIiIiJVgmYxK5wCRCIiIiIiIiJS6VltBrmtkF2VQZSP7oiIiIiIiIiIVHq52UOgErOC6I6IiIiIiIiISKWXdUGASCVm+SlAJCIiIiIiIiKVXu4MZgAuZoVDLqY7IiIiIiIiIiKVXm6JmZPZhNmsDKKLKUAkIiIiIiIiIpVeVrZmMCuKAkQiIiIiIiIiUull2+wlZi5qUF0g3RURERERERERqfRyS8wUICqY7oqIiIiIiIiIVHoqMSuaAkQiIiIiIiIiUunllpg5awazAumuiIiIiIiIiEill1ti5uqsUEhBdFdEREREREREpNI734NIJWYFUYBIRERERERERCo9i1UlZkXRXRERERERERGRSs+S26RaJWYF0l0RERERERERkUov25bTg0glZgVSgEhEREREREREKr0slZgVSXdFRERERERERCo9lZgVTXdFRERERERERCo9lZgVTQEiEREREREREan0VGJWNN0VEREREREREan0VGJWNN0VEREREREREan0ckvMXFRiViAFiERERERERESk0rPklJi5qMSsQLor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MGzqOg4nppdo3+V7T5KUlkWgtxsjOtUt03FJ5aMSMxEREREREZFSMAyDB77cwIGTaTQI8iYtMxuAwa3CyuV8Xm7OTBvRjjsnrWXPiTPcM3Ut3z7Yrtj95myxl73d0rImzk7KD5Gi6QkRERERERERKYU9J85w4KS9CfW+hLMcS8nAw8WJvk1Dyu2cfp6ufP3gddT29+RI0jke+HIzaZbCt09Jt7BkZwIAg1uXT+BKKhcFiERERERERERKYcnOEwB0jAzg7va1MZlgeKc6eLmVb5FOkK873zzYniAfN/YmnGXSbidH9tLF5v99jCyrjagQH6Jr+pbruKRyUIBIREREREREpBQW5wSIbmpZkzdvbcbu8X35Z9+oK3Lu2gGefP1ge6p5OHPorIlR324lM9uab7s5m+19kQa3rnVFxiXXPgWIREREREREREroRGoG2+JSMJngxsZBgL2RtMlkumJjaBTiw+fDWuNqNlgdk8ST324l22pzrN+fcJaNh05jNsHNLRUgkpJRgEhERERERESkhHKzh1qG+xHk415h42gZ7sdDjWy4OJlYuCOel+b8jWEY2GwGL835G4AeUUEE+1bcGOXaolnMREREREREREooN0DUKzq4gkcCjfwM3rujOU/M2sb3G+PwdXchrLoH62OT8HR14t+DmlT0EOUaogwiERERERERkRI4m5nNmphEAHo1rvgAEUCfJsH857bmAHy+Mpbxv+wC4MV+UYT7e1bk0OQaowCRiIiIiIiISAn8vPUoWVYbdQM8qR/kXdHDcRjSNpxXBjQGwGoz6BgZwD3t61TwqORaoxIzERERERERkWKkZWbz/pJ9ANzXqe4VbUpdEg91icRsMrF870neuLUpZvPVNT65+ilAJCIiIiIiIlKMz/+M5eSZTGr7e1612TkPXB/BA9dHVPQw5BqlEjMREREREREpMZvNqOghXHEnz2QyaUUMAM/3bYSrsz5KS+Wjp1pERERERERKZNaGwzR+dSGTlsdU9FCuqA+W7iU9y0qLsGoMaBZa0cMRKRcKEImIiIiIiEixbDaDT36PITPbxoQFu3nz110YRuXPJoo5eZZv1x8B4MX+ja+63kMiZUUBIhEREREREcln9uY4+n/wJ8v3ngRg7YFEDiel4+pk/xg5ecUBnv/xL7KttoocZrl7a+FurDaDno2D6BAZUNHDESk3ChCJ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3apmzWr31Z7vhrgRziCyg8mTJystLU2rV6+u8zrS0tL00EMPKS4uTkOGDKm2fOvWrdq9e7eWLVumRYsWadWqVZKklStXys/Pr/K1devWOtcAx3LmHL3wwgtKTU3Vl19+KXd3d40bN07GmDrvB2zLWbMVGxur+++/X926dVNMTIwWLFigJUuWqLi4uM77Adty1mxVOHv2rL744gs9+eSTda4f9uWMGevSpYveffddLViwQL6+vgoLC1P79u0VGhpa5awiOJYzZgvOwV7ZKisr06OPPqrZs2erU6dO1/0c2cItc/Q1bk3N5MmTTbt27czx48erjCclJV33uuCIiAiTkJBQZezgwYOmVatW5qWXXqrVNl999VXTqVMnY4wxeXl5Jj09vfJVWFhojh07dt3rlu+77z4zderUauvjOlPHawo5qnDmzBkjySQnJ9eqDthXU8pWWlqakWQOHz5cqzpgX00hW3PmzDEhISHcM62RagoZy8zMNPn5+aagoMC4ubmZjz76qFZ1wL4aY7auxT2InJc9s3X58mUjybi7u1e+LBZL5VhSUhLfDXHLaBDZiNVqNZMnTzZt2rQxR48erba84kZkn3zySeXY4cOHq92ILC0tzbRq1cq88MILtd727NmzTWRk5A1rCwsLM3/9618rx3Jzc7kRWSPUlHJU4dSpU0aS2bx5c61rge01xWytWLHCuLm5mUuXLtW6FtheU8mW1Wo17du3N88991ytt4+G0VQydq3ly5cbX19fvsw7WGPO1rVoEDmfhshWWVmZOXDgQJXXxIkTTefOnc2BAwdqfNIr3w1xIzSIbGTixIkmICDAbNmypcqjcq/9F4CYmBgTERFhNm3aZHbv3l3t8d8HDhwwISEhZuzYsVXWkZ2dXTln6dKlZt26debo0aPm6NGj5h//+Idp0aKFefnll29Y37x580xgYKBZu3at2b9/v3nooYeqPcrw1KlTJjU11cyePdv4+fmZ1NRUk5qaavLz8214pHAjzp6jb7/91ixZssSkpqaakydPmqSkJBMdHW1uv/12U1RUZOOjhVvh7NlKTk42CxcuNHv37jXHjh0zK1asMCEhIWbcuHE2PlK4Vc6erQobN240ksyhQ4dsdGRgK00hY0uWLDEpKSnmyJEjZunSpcbHx8e8/vrrNjxKqIvGnq2LFy+a1NRUs379eiPJrF692qSmppqMjIzKORkZGSY1NdW89dZbRpL55ptvTGpqqrl48aINjxRuVUNl6+dq8xQzY/huiJrRILIRSdd9JSYmVs65cuWKmTRpkmnZsqXx9fU1o0aNqvIHPi4u7rrruPZfFxYvXmy6dOlifH19jb+/v+nZs6d54403qjw69XqsVqv505/+ZEJDQ42Xl5f51a9+ZY4cOVJlzvjx46+7fc78aDjOnqP9+/ebgQMHmqCgIOPl5WWioqJMTEyMOXv2rM2OEerG2bOVkpJi+vbtawICAoy3t7e58847zdy5c2k8NgLOnq0KY8aMMdHR0fU+HrC9ppCxxx9/3AQFBRlPT0/TrVs3895779nk2KB+Gnu2EhMTr7vuuLi4m27/2n1Aw2uobP1cbRtEfDdETSzGcOdYAAAAAAAAV8ajEwAAAAAAAFwcDSIAAAAAAAAXR4MIAAAAAADAxdEgAgAAAAAAcHE0iAAAAAAAAFwcDSIAAAAAAAAXR4MIAAAAAADAxdEgAgAAAAAAcHE0iAAAAAAAAFwcDSIAAIA6eOKJJ2SxWGSxWOTh4aHQ0FANHjxYb7/9tqxWa63X88477ygwMNB+hQIAANQCDSIAAIA6GjZsmDIyMnTy5El9/vnnGjhwoJ555hkNHz5cpaWlji4PAACg1mgQAQAA1JGXl5fCwsLUtm1b9erVSy+99JLWrl2rzz//XO+8844kKSEhQXfffbeaN2+u8PBwTZo0SQUFBZKkLVu2aMKECcrNza08G2nWrFmSpOLiYj3//PNq27atmjdvrr59+2rLli2O2VEAANDk0SACAACwoQceeEDdu3fXmjVrJElubm5avHixDh48qHfffVebNm3Siy++KEmKjo7WokWL5O/vr4yMDGVkZOj555+XJE2ZMkU7duzQ6tWrtX//fj3yyCMaNmyY0tPTHbZvAACg6bIYY4yjiwAAAHA2TzzxhHJycvTpp59WW/a73/1O+/fv1/fff19t2SeffKKYmBhduHBBUvk9iKZNm6acnJzKOadPn1aHDh10+vRptWnTpnJ80KBBuueeezR37lyb7w8AAHBtzRxdAAAAQFNjjJHFYpEkbdy4UfHx8Tp8+LDy8vJUWlqqoqIiFRYWytfX97qfP3DggMrKytSpU6cq48XFxQoODrZ7/QAAwPXQIAIAALCxQ4cOqX379jp58qSGDx+uiRMn6rXXXlNQUJC2bdumJ598UlevXq2xQVRQUCB3d3elpKTI3d29yjI/P7+G2AUAAOBiaBABAADY0KZNm3TgwAE9++yzSklJkdVq1YIFC+TmVn7rx48++qjKfE9PT5WVlVUZ69mzp8rKypSdna0BAwY0WO0AAMB10SACAACoo+LiYmVmZqqsrExZWVnasGGD4uPjNXz4cI0bN05paWkqKSnRkiVL9Nvf/lbbt2/XsmXLqqwjKipKBQUFSkpKUvfu3eXr66tOnTrpscce07hx47RgwQL17NlT58+fV1JSkrp166YHH3zQQXsMAACaKp5iBgAAUEcbNmxQ69atFRUVpWHDhmnz5s1avHix1q5dK3d3d3Xv3l0JCQn685//rK5du2rlypWKj4+vso7o6GjFxMRo9OjRCgkJ0V/+8hdJUmJiosaNG6fnnntOnTt31siRI7Vr1y5FREQ4YlcBAEATx1PMAAAAAAAAXBxnEAEAAAAAALg4GkQAAAAAAAAujgYRAAAAAACAi6NBBAAAAAAA4OJoEAEAAAAAALg4GkQAAAAAAAAujgYRAAAAAACAi6NBBAAAAAAA4OJoEAEAAAAAALg4GkQAAAAAAAAujgYRAAAAAACAi/v/58dvYBN343YAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mipython_user_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", "Requirement already satisfied: yfinance in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (0.2.36)\n", "Requirement already satisfied: pandas>=1.3.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.2.0)\n", "Requirement already satisfied: numpy>=1.16.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.26.3)\n", "Requirement already satisfied: requests>=2.31 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.31.0)\n", "Requirement already satisfied: multitasking>=0.0.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (0.0.11)\n", "Requirement already satisfied: lxml>=4.9.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (5.1.0)\n", "Requirement already satisfied: appdirs>=1.4.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.4.4)\n", "Requirement already satisfied: pytz>=2022.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2023.3.post1)\n", "Requirement already satisfied: frozendict>=2.3.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.4.0)\n", "Requirement already satisfied: peewee>=3.16.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (3.17.0)\n", "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (4.12.3)\n", "Requirement already satisfied: html5lib>=1.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.1)\n", "Requirement already satisfied: soupsieve>1.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.5)\n", "Requirement already satisfied: six>=1.9 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n", "Requirement already satisfied: webencodings in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\n", "Requirement already satisfied: tzdata>=2022.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2023.4)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.6)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2.1.0)\n", "Requirement already satisfied: certifi>=2017.4.17 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2023.11.17)\n", "/Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages/yfinance/utils.py:775: FutureWarning: The 'unit' keyword in TimedeltaIndex construction is deprecated and will be removed in a future version. Use pd.to_timedelta instead.\n", " df.index += _pd.TimedeltaIndex(dst_error_hours, 'h')\n", "[*********************100%%**********************] 1 of 1 completed\n", "/Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages/yfinance/utils.py:775: FutureWarning: The 'unit' keyword in TimedeltaIndex construction is deprecated and will be removed in a future version. Use pd.to_timedelta instead.\n", " df.index += _pd.TimedeltaIndex(dst_error_hours, 'h')\n", "[*********************100%%**********************] 1 of 1 completed\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to ipython_user_proxy):\n", "\n", "The code has executed successfully, and the required libraries are already installed on your system. The warning from `yfinance` about the 'unit' keyword in `TimedeltaIndex` construction is a future deprecation notice and does not affect the execution of the current code.\n", "\n", "Since the code has been executed without any errors, you should have seen a plot displaying the YTD gain percentage for both META and TESLA stocks. This plot visually compares the performance of the two stocks since the beginning of the year.\n", "\n", "If you have seen the plot and it reflects the YTD gains for both stocks, then the task is complete. If the plot did not display or if there were any issues with the visualization, please let me know so I can assist further.\n", "\n", "If everything is in order, this concludes the task.\n", "\n", "TERMINATE\n", "\n", "--------------------------------------------------------------------------------\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/qingyunwu/Documents/github/autogen/autogen/agentchat/conversable_agent.py:793: UserWarning: No summary_method provided or summary_method is not supported: \n", " cache=cache,\n" ] }, { "data": { "text/plain": [ "ChatResult(chat_history=[{'content': 'Plot a chart of META and TESLA stock price gain YTD\\nIf you suggest code, the code will be executed in IPython.', 'role': 'assistant'}, {'content': \"To plot a chart of META (Facebook's parent company, Meta Platforms, Inc.) and TESLA (Tesla, Inc.) stock price gain year-to-date (YTD), we can use Python with libraries such as `pandas` for data manipulation and `matplotlib` or `plotly` for plotting. We will also use `yfinance` to fetch historical stock data.\\n\\nHere's the plan:\\n1. Install the `yfinance` library if it's not already installed.\\n2. Fetch the YTD stock price data for META and TESLA.\\n3. Calculate the YTD gain for each stock.\\n4. Plot the YTD gain on a chart.\\n\\nFirst, let's install `yfinance` and import the necessary libraries. Execute the following code:\\n\\n```python\\n# Install yfinance if not already installed\\n!pip install yfinance\\n\\nimport yfinance as yf\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom datetime import datetime\\n\\n# Check if today's date is required or the last trading day\\ntoday = datetime.today().strftime('%Y-%m-%d')\\n\\n# Fetch YTD stock data for META and TESLA\\nmeta_data = yf.download('META', start='2023-01-01', end=today)\\ntesla_data = yf.download('TSLA', start='2023-01-01', end=today)\\n\\n# Calculate the YTD gain for each stock\\nmeta_ytd_gain = (meta_data['Close'] - meta_data['Close'].iloc[0]) / meta_data['Close'].iloc[0] * 100\\ntesla_ytd_gain = (tesla_data['Close'] - tesla_data['Close'].iloc[0]) / tesla_data['Close'].iloc[0] * 100\\n\\n# Plot the YTD gain on a chart\\nplt.figure(figsize=(14, 7))\\nplt.plot(meta_ytd_gain.index, meta_ytd_gain, label='META YTD Gain %')\\nplt.plot(tesla_ytd_gain.index, tesla_ytd_gain, label='TESLA YTD Gain %')\\nplt.title('META vs TESLA Stock Price Gain YTD')\\nplt.xlabel('Date')\\nplt.ylabel('Gain %')\\nplt.legend()\\nplt.grid(True)\\nplt.show()\\n```\\n\\nThis code will install `yfinance`, fetch the YTD stock data for META and TESLA, calculate the YTD gain, and plot it on a chart. Please execute the code in your IPython environment.\", 'role': 'user'}, {'content': \"exitcode: 0 (execution succeeded)\\nCode output: \\nRequirement already satisfied: yfinance in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (0.2.36)\\r\\nRequirement already satisfied: pandas>=1.3.0 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.2.0)\\r\\nRequirement already satisfied: numpy>=1.16.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.26.3)\\r\\nRequirement already satisfied: requests>=2.31 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.31.0)\\r\\nRequirement already satisfied: multitasking>=0.0.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (0.0.11)\\r\\nRequirement already satisfied: lxml>=4.9.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (5.1.0)\\r\\nRequirement already satisfied: appdirs>=1.4.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.4.4)\\r\\nRequirement already satisfied: pytz>=2022.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2023.3.post1)\\r\\nRequirement already satisfied: frozendict>=2.3.4 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (2.4.0)\\r\\nRequirement already satisfied: peewee>=3.16.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (3.17.0)\\r\\nRequirement already satisfied: beautifulsoup4>=4.11.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (4.12.3)\\r\\nRequirement already satisfied: html5lib>=1.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from yfinance) (1.1)\\r\\nRequirement already satisfied: soupsieve>1.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.5)\\r\\nRequirement already satisfied: six>=1.9 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\\r\\nRequirement already satisfied: webencodings in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\\r\\nRequirement already satisfied: python-dateutil>=2.8.2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\\r\\nRequirement already satisfied: tzdata>=2022.7 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from pandas>=1.3.0->yfinance) (2023.4)\\r\\nRequirement already satisfied: charset-normalizer<4,>=2 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.3.2)\\r\\nRequirement already satisfied: idna<4,>=2.5 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (3.6)\\r\\nRequirement already satisfied: urllib3<3,>=1.21.1 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2.1.0)\\r\\nRequirement already satisfied: certifi>=2017.4.17 in /Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages (from requests>=2.31->yfinance) (2023.11.17)\\r\\n/Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages/yfinance/utils.py:775: FutureWarning: The 'unit' keyword in TimedeltaIndex construction is deprecated and will be removed in a future version. Use pd.to_timedelta instead.\\n df.index += _pd.TimedeltaIndex(dst_error_hours, 'h')\\n\\r[*********************100%%**********************] 1 of 1 completed\\n/Users/qingyunwu/miniconda3/envs/ag2/lib/python3.10/site-packages/yfinance/utils.py:775: FutureWarning: The 'unit' keyword in TimedeltaIndex construction is deprecated and will be removed in a future version. Use pd.to_timedelta instead.\\n df.index += _pd.TimedeltaIndex(dst_error_hours, 'h')\\n\\r[*********************100%%**********************] 1 of 1 completed\\n\", 'role': 'assistant'}, {'content': \"The code has executed successfully, and the required libraries are already installed on your system. The warning from `yfinance` about the 'unit' keyword in `TimedeltaIndex` construction is a future deprecation notice and does not affect the execution of the current code.\\n\\nSince the code has been executed without any errors, you should have seen a plot displaying the YTD gain percentage for both META and TESLA stocks. This plot visually compares the performance of the two stocks since the beginning of the year.\\n\\nIf you have seen the plot and it reflects the YTD gains for both stocks, then the task is complete. If the plot did not display or if there were any issues with the visualization, please let me know so I can assist further.\\n\\nIf everything is in order, this concludes the task.\\n\\nTERMINATE\", 'role': 'user'}], summary='', cost=({'total_cost': 0.5330100000000001, 'gpt-4': {'cost': 0.5330100000000001, 'prompt_tokens': 13771, 'completion_tokens': 1998, 'total_tokens': 15769}}, {'total_cost': 0.38469000000000003, 'gpt-4': {'cost': 0.38469000000000003, 'prompt_tokens': 10553, 'completion_tokens': 1135, 'total_tokens': 11688}}), human_input=None)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipy_user = IPythonUserProxyAgent(\n", " \"ipython_user_proxy\",\n", " human_input_mode=\"NEVER\",\n", " max_consecutive_auto_reply=10,\n", " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\")\n", " or x.get(\"content\", \"\").rstrip().endswith('\"TERMINATE\".'),\n", " code_execution_config={\n", " \"use_docker\": False, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly.\n", " },\n", ")\n", "# the assistant receives a message from the user, which contains the task description\n", "ipy_user.initiate_chat(\n", " assistant,\n", " message=\"\"\"Plot a chart of META and TESLA stock price gain YTD\"\"\",\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" }, "vscode": { "interpreter": { "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" } }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "2d910cfd2d2a4fc49fc30fbbdc5576a7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "454146d0f7224f038689031002906e6f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_e4ae2b6f5a974fd4bafb6abb9d12ff26", "IPY_MODEL_577e1e3cc4db4942b0883577b3b52755", "IPY_MODEL_b40bdfb1ac1d4cffb7cefcb870c64d45" ], "layout": "IPY_MODEL_dc83c7bff2f241309537a8119dfc7555", "tabbable": null, "tooltip": null } }, "577e1e3cc4db4942b0883577b3b52755": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_2d910cfd2d2a4fc49fc30fbbdc5576a7", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_74a6ba0c3cbc4051be0a83e152fe1e62", "tabbable": null, "tooltip": null, "value": 1 } }, "6086462a12d54bafa59d3c4566f06cb2": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "74a6ba0c3cbc4051be0a83e152fe1e62": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "7d3f3d9e15894d05a4d188ff4f466554": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "b40bdfb1ac1d4cffb7cefcb870c64d45": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_f1355871cc6f4dd4b50d9df5af20e5c8", "placeholder": "​", "style": "IPY_MODEL_ca245376fd9f4354af6b2befe4af4466", "tabbable": null, "tooltip": null, "value": " 1/1 [00:00<00:00, 44.69it/s]" } }, "ca245376fd9f4354af6b2befe4af4466": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "dc83c7bff2f241309537a8119dfc7555": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e4ae2b6f5a974fd4bafb6abb9d12ff26": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_6086462a12d54bafa59d3c4566f06cb2", "placeholder": "​", "style": "IPY_MODEL_7d3f3d9e15894d05a4d188ff4f466554", "tabbable": null, "tooltip": null, "value": "100%" } }, "f1355871cc6f4dd4b50d9df5af20e5c8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 2 }