autogen/notebook/agentchat_auto_feedback_from_code_execution.ipynb
Jack Gerrits b4a2c6e26f
Rewrite and consolidate configuration docs (#1581)
* Rewrite and consolidate configuration docs

* add link to filtering

* updates based on comments

* update lockfile

* update redirect

* spelling mistake

* update the noqa

* update links

* fix broken links

* lint fixes

* address comments

* update wording about model selection

* update cache_seed and json pattern

* add periods

* Update the config json func and other small changes

* update wording of json string

* update intro

* update description of caching

* fix link

* spelling mistake

* fix llm config

* Update website/docs/llm_configuration.ipynb

Co-authored-by: gagb <gagb@users.noreply.github.com>

* Add examples back as notebook

---------

Co-authored-by: gagb <gagb@users.noreply.github.com>
Co-authored-by: Aaron <aaronlaptop12@hotmail.com>
2024-02-11 18:04:43 +00:00

1079 lines
224 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<!--\n",
"tags: [\"code generation\", \"debugging\"]\n",
"description: |\n",
" Use conversable language learning model agents to solve tasks and provide automatic feedback through a comprehensive example of writing, executing, and debugging Python code to compare stock price changes.\n",
"-->\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": [
"<IPython.core.display.Image object>"
]
},
"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/GYrGwbdu2PD21AA4fPsyrr77K//73v3x9jkrSq6d27dr5llWvXr1EPZNytWvXjl9//ZW2bduWeJ9LkXtvCurPJCIiUhIKEImIiJTA3XffzciRI4mPj6dfv375sjvKyzfffAPA008/zdNPP51v/U8//VRshsfQoUOZNGkSCxYs4JZbbuH7778nKiqKFi1aOLZp3Lgxe/bsYf78+SxcuJCffvqJiRMn8uqrrzJu3LiyvahS8PT0pEuXLnTp0oXAwEDGjRvHggULuO+++0p8jGXLlnH8+HG+++47vvvuu3zrZ8yYUWyA6EIBAQHcdNNN3HTTTXTr1o3ly5dz6NAhR6+iK8XNzY3+/fvz888/s3DhQgYOHFiq/bt27UpgYGCR25RlxovNZiMoKKjQzLcaNWoUum/9+vVxdnbO088o1w033ACQLzhltVrp1asXSUlJvPDCC0RFReHl5cXRo0cZMWIENput2DFf2PD6QoZhFLvvlZZ7b+rXr1/BIxERkWuVAkQiIiIlcOutt/LII4+wdu3aPOVa5ckwDGbOnEn37t0ZNWpUvvXjx49nxowZxQaIunbtSmhoKLNmzeL6669n2bJlvPzyy/m28/Ly4s477+TOO+8kKyuLwYMH88Ybb/Diiy/i7u5eZtd1qXIzMI4fP16q/WbMmEFQUBCffPJJvnWzZ89mzpw5fPbZZ5cUDGnbti3Lly/n+PHj1KlTp8AyMDjf6HrPnj1ERkY6lmdlZREbG+vIqsrN4tm+fXuxmVa5M3rdfPPN3HHHHSxYsCDfzGJXSr169Vi3bh0WiwUXF5dCt1myZAmdO3cu9b328vJyBOOOHj1KrVq1it3n77//Zu/evXz55Zd5mlJfOCNhZWG1Wpk5cyaenp5cf/31FT0cERG5RqkHkYiISAl4e3vz6aefMnbsWAYNGnRFzrlq1SoOHjzI/fffz+23357v68477+T333/n2LFjRR7HbDZz++23M2/ePL7++muys7PzlJcB+WZlcnV1JTo6GsMwipxdqjwsXbq0wOW//vorkL9Mqyjnzp1j9uzZDBw4sMB7+Pjjj3PmzJk8fWsuFh8f75iq/EJZWVksXboUs9nsyNrw8vICyDd1fc+ePXF1deXDDz/Mk30ydepUUlJSGDBgAACtW7cmIiKC999/P98xCspacXV1Zfbs2bRr145Bgwaxfv36Et2Xsnbbbbdx6tQpPv7443zrcsc9ZMgQrFYr48ePz7dNdnZ2vuu92KuvvorVauXee+8tsNTs4vuTm/1z4XLDMPjggw+KvZ5ridVq5YknnmDXrl088cQTRZacioiIFEUZRCIiIiVUmrKmvXv3OsrDLhQcHEyvXr1KdIwZM2bg5OTkCB5c7KabbuLll1/mu+++45lnninyWHfeeScfffQR//73v2nWrJlj6vVcvXv3JiQkhM6dOxMcHMyuXbv4+OOP8zTHLgtHjx4t8L54e3tzyy23APYG3xEREQwaNIh69eqRlpbGkiVLmDdvniMQcqGNGzfy+uuv5ztmt27dOHr0KGfOnOGmm24qcDwdOnSgRo0azJgxI1/QLFdcXBzXXXcdPXr04MYbbyQkJISEhAS+/fZbtm3bxlNPPeUo1WrZsiVOTk7897//JSUlBTc3N3r06EFQUBAvvvgi48aNo2/fvtx0003s2bOHiRMn0q5dO+69917AHsz79NNPGTRoEC1btuT+++8nNDSU3bt3s2PHDn777bd84/Pw8GD+/Pn06NGDfv36sXz58hL1MCpLw4cP56uvvuKZZ55h/fr1dOnSxfHvNmrUKG6++WZuuOEGHnnkESZMmMDWrVvp3bs3Li4u7Nu3jx9++IEPPvigyN5eXbp04eOPP+Yf//gHDRo04J577iEqKoqsrCz27t3LjBkzcHV1JSQkBICoqCjq1avHs88+y9GjR/H19eWnn34qVf+gq01KSorj5yc9PZ39+/cze/ZsYmJiGDp0aIHBNxERkRKrqOnTRERErmYXTnNflNJOc1/YVPYXT3OflZVlBAQEGF26dCny/BEREUarVq2KvR6bzWaEh4cbgPH666/nWz9p0iSja9euRkBAgOHm5mbUq1fPeO6554yUlJRij53rcqa5r1OnjmO7b7/91hg6dKhRr149w8PDw3B3dzeio6ONl19+2UhNTc1zzKLu9fjx441BgwYZ7u7ujqnbCzJixAjDxcXFOHXqVIHrU1NTjQ8++MDo06ePERYWZri4uBg+Pj5Gx44djSlTpuSZft4wDGPKlClGZGSk4eTklO9+fPzxx0ZUVJTh4uJiBAcHG4899li+6ewNwz51fa9evQwfHx/Dy8vLaN68eZ6p1S+c5j7XqVOnjOjoaCMkJMTYt29fodebO6X7yZMnC93GMIqeVv3iae4Nwz6l/Msvv2xEREQYLi4uRkhIiHH77bcbMTExebabPHmy0aZNG8PDw8Pw8fExmjVrZjz//PPGsWPHihxPri1bthjDhw83ateubbi6ujruz5gxY/JMSW8YhrFz506jZ8+ehre3txEYGGiMHDnSMVX9hdPJFzbN/ejRo/Odv06dOsZ9991XorFeeOzi7ndJprm/8Pn29vY2GjRoYNx7773GokWLSjweERGRwpgM4yrssiciIiIiIiIiIleMehCJiIiIiIiIiFRxChCJiIiIiIiIiFRxChCJiIiIiIiIiFRxChCJiIiIiIiIiFRxChCJiIiIiIiIiFRxChCJiIiIiIiIiFRxzhU9gKuBzWbj2LFj+Pj4YDKZKno4IiIiIiIiIiJlwjAMzpw5Q82aNTGbC88TUoAIOHbsGOHh4RU9DBERERERERGRcnHkyBHCwsIKXa8AEeDj4wPYb5avr28Fj6Z4FouFRYsW0bt3b1xcXCp6OHKN0nMk5UXPlpQHPVdyJeg5k/KiZ0vKg54rKanU1FTCw8MdsY/CKEAEjrIyX1/fayZA5Onpia+vr34RyCXTcyTlRc+WlAc9V3Il6DmT8qJnS8qDnispreJa6qhJtYiIiIiIiIhIFacAkYiIiIiIiIhIFacAkYiIiIiIiIhIFaceRCVktVqxWCwVPQzAXmvq7OxMRkYGVqu1oocj1wAnJyecnZ2LrTkVERERERGRqkkBohI4e/YscXFxGIZR0UMBwDAMQkJCOHLkiD7wS4l5enoSGhqKq6trRQ9FRERERERErjIKEBXDarUSFxeHp6cnNWrUuCoCMjabjbNnz+Lt7Y3ZrCpBKZphGGRlZXHy5EliY2Np0KCBnhsRERERERHJQwGiYlgsFgzDoEaNGnh4eFT0cAB7gCgrKwt3d3d90JcS8fDwwMXFhUOHDjmeHREREREREZFcii6U0NWQOSRyORRMFBERERERkcLoE6OIiIiIiIiISBWnAJGIiIiIiIiISBWnAJFIGZk+fTp+fn4VPQwRERERERGRUlOAqJIaMWIEJpOJRx99NN+60aNHYzKZGDFiRL7tL/7q27cvf/zxR4HrLvz6448/AIiLi8PV1ZWmTZsWOT7DMOjZsyd9+vTJt27ixIn4+fnRs2fPIs9Zt25dALp16+ZY5ubmRq1atRg0aBCzZ88u0b2Kj4/nySefpH79+ri7uxMcHEznzp359NNPSU9PL9ExAO6880727t1b4u0LcvDgQbp27YqXlxddu3bl4MGDedYPHDiQn3766bLOISIiIiIiInIxBYgqsfDwcL777jvOnTvnWJaRkcHMmTOpXbt2vu379u3L8ePH83x9++23dOrUKc+yIUOG5Nu2U6dOgD2LZsiQIaSmprJu3bpCx2YymZg2bRrr1q1j0qRJjuWxsbE8//zzfPTRR/z00095zgEwbdo0x/sNGzY49hs5ciTHjx8nJiaGn376iejoaIYOHcrDDz9c5D06cOAArVq1YtGiRbz55pts2bKFNWvW8PzzzzN//nyWLFlSspuNfaawoKCgEm9fkDFjxlCrVi22bt1KaGgozz77rGPdrFmzMJvN3HbbbZd1DhEREREREZGLaZr7UjIMg3MWa4Wc28PFqVSzqbVu3ZqYmBhmz57NPffcA8Ds2bOpXbs2ERER+bZ3c3MjJCSkwGNduNzDw4PMzMx82xqGwbRp05g4cSJhYWFMnTqV9u3bFzq+8PBwPvjgAx5//HF69+5N3bp1efDBB+nduzfDhg0DoFq1ann28fPzK3CMnp6ejuVhYWF06NCBqKgoHnjgAYYMGULPnj0LHMOoUaNwdnZm48aNeHl5OZZHRkZy8803YxiGY9m7777LtGnTOHDgAP7+/gwaNIi33noLb29vwB4ce+qpp0hOTgZg7NixzJ07lzFjxvCvf/2L06dP069fP6ZMmYKPj0+B49m1axfvvvsuDRo0YMSIEY4AUXJyMq+88grLli0r9H6KiIiIiIiIXCoFiErpnMVK9Ku/Vci5d77WB0/X0v2TPfDAA0ybNs0RIPriiy+4//77HSVhZen3338nPT2dnj17UqtWLTp16sR7772XJ/Bysfvuu485c+bwwAMPMHjwYLZv386OHTvKZDz33XcfY8aMYfbs2QUGiBITEx2ZQ4WN8cKAnNls5sMPPyQiIoIDBw4watQonn/+eSZOnFjoGGJiYpg7dy7z58/n9OnTDBkyhP/85z+88cYbBW7fokULlixZQu/evVm0aBHNmzcH4LnnnmP06NGEh4eX5haIiIiIiIiIlIhKzCq5e++9l5UrV3Lo0CEOHTrEqlWruPfeewvcdv78+Xh7e+f5evPNN0t8rqlTpzJ06FCcnJxo2rQpkZGR/PDDD8XuN3nyZLZv385TTz3F5MmTqVGjRonPWRSz2UzDhg3z9fHJtX//fgzDoFGjRnmWBwYGOq7/hRdecCx/6qmn6N69O3Xr1qVHjx68/vrrfP/990WOwWazMX36dJo2bUqXLl0YNmwYS5cuLXT7t99+m927d1O3bl327dvH22+/zYoVK9i6dSvDhw9nyJAhREZG8uijj5KVlVXymyEiIiIiIiJSBGUQlZKHixM7X8vfWPlKnbu0atSowYABA5g+fTqGYTBgwAACAwML3LZ79+58+umneZb5+/uX6DzJycnMnj2blStXOpbde++9TJ06NU8z7IIEBQXxyCOPMHfuXG655ZYSna+kDMMoVVkewPr167HZbNxzzz1kZmY6li9ZsoQJEyawe/duUlNTyc7OJiMjg/T0dDw9PQs8Vt26dfOUk4WGhpKQkFDouWvVqsX8+fMd7zMzM+nTpw9ffvklr7/+Oj4+PuzZs4e+ffsyadIk/vGPf5Tq2kREREREREQKogBRKZlMplKXeVW0Bx54gMcffxyATz75pNDtvLy8qF+//iWdY+bMmWRkZOTpOWQYBjabjb1799KwYcMi93d2dsbZuWzvq9VqZd++fbRr167A9fXr18dkMrFnz548yyMjIwF7r6VcBw8eZODAgTz22GO88cYb+Pv7s3LlSh588EGysrIKDRC5uLjkeW8ymbDZbCW+hjfffJPevXvTpk0bRo4cyeuvv46LiwuDBw9m2bJlChCJiIiIiIhImVCJWRXQt29fsrKysFgsBU4rXxamTp3KmDFj2Lp1q+Nr27ZtdOnShS+++KJczlmcL7/8ktOnTxc661dAQAC9evXi448/Ji0trchjbdq0CZvNxjvvvEOHDh1o2LAhx44dK49hO+zatYuZM2cyfvx4wB7wslgsAFgsFqzWimmWLiIiIiIiIpXPtZUKI5fEycmJXbt2OV4XJjMzk/j4+DzLnJ2dCy1Jy7V161Y2b97MjBkziIqKyrPurrvu4rXXXuP1118v8wyhC6WnpxMfH092djZxcXHMmTOH9957j8cee4zu3bsXut/EiRPp3Lkzbdu2ZezYsTRv3hyz2cyGDRvYvXs3bdq0AezZRhaLhY8++ohBgwaxatUqPvvss3K7HsMwePjhh/M0+e7cuTNTpkyhYcOGfPXVV9x1113ldn4RERERERGpWpRBVEX4+vri6+tb5DYLFy4kNDQ0z9f1119f7LGnTp1KdHR0vuAQwK233kpCQgK//vrrJY+9JKZMmUJoaCj16tVj8ODB7Ny5k1mzZhU5wxhAvXr12LJlCz179uTFF1+kRYsWtG3blo8++ohnn33Wkb3TokUL3n33Xf773//StGlTZsyYwYQJE8rteiZPnkxwcDADBw50LBs7dqyjjK9+/fqMHj263M4vIiIiIiJSWW07ksyD0zcQe6roSpKqxmQYhlHRg6hoqampVKtWjZSUlHxBlIyMDGJjY4mIiMDd3b2CRpiXzWYjNTUVX19fzGbF+KRkLn6WLRYLv/76K/3798/XK0nkcujZkvKg50quBD1nUl70bEl50HN16V6a8zcz1x3mlpY1eX9oq4oeTrkrKuZxIUUXRERERERERKTKyLTYJw5avPMEGRb1ds2lAJGIiIiIiIiIVBkWqz1AlJZl5ffdCRU8mquHAkQiIiIiIiIiUmVk22yO1/P/Ol6BI7m6KEAkIiIiIiIiIlVGVvb5VsxLd58gLTO7Akdz9VCASERERERERESqjNwSM4AMi42lKjMDFCASERERERERkSokt8Qs3N8DgPnbjlXkcK4aChCJiIiIiIiISJVhySkxu7VlLQD+2HuSMxmWihzSVUEBIhERERERERGpMrJySsya1qpGvRpeZGXbWLzzRAWPquIpQCQiIiIiIiIiVUZuiZmLs5mBzWsCms0MFCASKXfTp0/Hz8+voochIiIiIiIinC8xc3UyM6hFKAB/7jtJSnrVLjNTgKgSMplMRX6NHTuWgwcPFrp+7dq1AFitVv7zn/8QFRWFh4cH/v7+tG/fns8//9xxrhEjRnDLLbcUO6a4uDhcXV1p2rRpkdsZhkHPnj3p06dPvnUTJ07Ez8+Pnj17Fnl9devWBaBbt26OZW5ubtSqVYtBgwYxe/bsEt3H+Ph4nnzySerXr4+7uzvBwcF07tyZTz/9lPT09BIdA+DOO+9k7969Jd6+IAcPHqRr1654eXnRtWtXDh48mGf9wIED+emnny7rHCIiIiIiIlWBJTeDyMlM/SAfokJ8sFgNftsRX8Ejq1gKEFVCx48fd3y9//77+Pr65ln27LPPOrZdsmRJnnXHjx+nTZs2AIwbN4733nuP8ePHs3PnTn7//XcefvhhkpOTSz2m6dOnM2TIEFJTU1m3bl2h25lMJqZNm8a6deuYNGmSY3lsbCzPP/88H330ET/99FOe8QJMmzbN8X7Dhg2O/UaOHMnx48eJiYnhp59+Ijo6mqFDh/Lwww8XOd4DBw7QqlUrFi1axJtvvsmWLVtYs2YNzz//PPPnz2fJkiUlvnYPDw+CgoJKvH1BxowZQ61atdi6dSuhoaF5/g1nzZqF2Wzmtttuu6xziIiIiIiIVAW509w7O5kAGNjcnkU076+qPZuZc0UP4JpjGGApefZImXLxBJOp2M1CQkIcr6tVq4bJZMqzDODUqVMABAQE5FuX63//+x+jRo3ijjvucCxr0aJFqYdtGAbTpk1j4sSJhIWFMXXqVNq3b1/o9uHh4XzwwQc8/vjj9O7dm7p16/Lggw/Su3dvhg0b5riuC/n5+RV4HZ6eno7lYWFhdOjQgaioKB544AGGDBlCz549CxzDqFGjcHZ2ZuPGjXh5eTmWR0ZGcvPNN2MYhmPZu+++y7Rp0zhw4AD+/v4MGjSIt956C29vb8AeHHvqqaccgbWxY8cyd+5cxowZw7/+9S9Onz5Nv379mDJlCj4+PgWOZ9euXbz77rs0aNCAESNGOAJEycnJvPLKKyxbtqzQ+ykiIiIiIiLnXVhiBjCweU3eXrSX1TGJJJ7NJMDbrSKHV2EUICotSzq8WbNizv3SMXD1Kn67MhISEsKyZcsYNWoUNWrUuOTj/P7776Snp9OzZ09q1apFp06deO+99/IEXi523333MWfOHB544AEGDx7M9u3b2bFjxyWP4eJjjxkzhtmzZxcYIEpMTHRkDhU2RtMFgTqz2cyHH35IREQEBw4cYNSoUTz//PNMnDix0DHExMQwd+5c5s+fz+nTpxkyZAj/+c9/eOONNwrcvkWLFixZsoTevXuzaNEimjdvDsBzzz3H6NGjCQ8PL80tEBERERERqbKyLygxA6gb6EXTWr5sP5rKgu3x3NuhTkUOr8KoxKyK69SpE97e3nm+cr377rucPHmSkJAQmjdvzqOPPsqCBQtKfY6pU6cydOhQnJycaNq0KZGRkfzwww/F7jd58mS2b9/OU089xeTJky8rSHUhs9lMw4YN8/XxybV//34Mw6BRo0Z5lgcGBjru0QsvvOBY/tRTT9G9e3fq1q1Ljx49eP311/n++++LHIPNZmP69Ok0bdqULl26MGzYMJYuXVro9m+//Ta7d++mbt267Nu3j7fffpsVK1awdetWhg8fzpAhQ4iMjOTRRx8lKyur5DdDRERERESkisnKzltiBjDIMZtZ1S0zUwZRabl42jN5KurcZWzWrFk0bty4wHXR0dFs376dTZs2sWrVKlasWMGgQYMYMWJEnkbVRUlOTmb27NmsXLnSsezee+9l6tSpjBgxosh9g4KCeOSRR5g7d26JGmGXhmEYebKASmL9+vXYbDbuueceMjMzHcuXLFnChAkT2L17N6mpqWRnZ5ORkUF6ejqengX/m9WtWzdPOVloaCgJCQmFnrtWrVrMnz/f8T4zM5M+ffrw5Zdf8vrrr+Pj48OePXvo27cvkyZN4h//+Eeprk1ERERERKSqsFjzlpgBDGgeyoQFu1kXm0RCagZBvu4VNbwKowyi0jKZ7GVeFfFVyoBGSYSHh1O/fv08Xxcym820a9eOp556itmzZzN9+nSmTp1KbGxsiY4/c+ZMMjIyaN++Pc7Ozjg7O/PCCy+wcuXKEs3slbtPWbJarezbt4+IiIgC19evXx+TycSePXvyLI+MjKR+/fp4eHg4lh08eJCBAwfSvHlzfvrpJzZt2sQnn3wCUGQmj4uLS573JpMJW06aY0m8+eab9O7dmzZt2vDHH39w22234eLiwuDBg/njjz9KfBwREREREZGqJrfE7MIMorDqnrSq7YdhwK9/H6+ooVUoBYikVKKjowFIS0sr0fZTp05lzJgxbN261fG1bds2unTpwhdffFGeQy3Ul19+yenTpwud9SsgIIBevXrx8ccfF3udmzZtwmaz8c4779ChQwcaNmzIsWPlm2G2a9cuZs6cyfjx4wF7wMtisQBgsViwWq3len4REREREZFrlWEYjgwiF6e8IZGBjjKzqhkgUolZFZeYmEh8fHyeZX5+fri7u3P77bfTuXNnOnXqREhICLGxsbz44os0bNiQqKgox/YpKSls3bo1zzECAgJITExk8+bNzJgxI8/2AHfddRevvfYar7/+eplnCF0oPT2d+Ph4srOziYuLY86cObz33ns89thjdO/evdD9Jk6cSOfOnWnbti1jx46lefPmmM1mNmzYwO7du2nTpg1gzzayWCx89NFHDBo0iFWrVvHZZ5+V2/UYhsHDDz+cp8l3586dmTJlCg0bNuSrr77irrvuKrfzi4iIiIiIXMtyg0OQP0A0oFkor/+yk42HTnMs+Rw1/Twu3r1SUwZRFdezZ09CQ0PzfM2dOxeAPn36MG/ePAYNGkTDhg257777iIqKYtGiRXmCOn/88QetWrXK8zVu3DimTp1KdHR0vuAQwK233kpCQgK//vpruV7flClTCA0NpV69egwePJidO3cya9asImcYA6hXrx5btmyhZ8+evPjii7Ro0YK2bdvy0Ucf8eyzzzqyd1q0aMG7777Lf//7X5o2bcqMGTOYMGFCuV3P5MmTCQ4OZuDAgY5lY8eOdZTx1a9fn9GjR5fb+UVERERERK5l2Re09nBxytvGJaSaO+3q+ANVs8zMZBiGUfxmlVtqairVqlUjJSUFX1/fPOsyMjKIjY0lIiICd/ero0mVzWYjNTUVX19fzGbF+KRkLn6WLRYLv/76K/3798/XE0nkcujZkvKg50quBD1nUl70bEl50HN1aVLSLbR4bREA+97oly+L6Ks1B3n15x20CKvGz49fXxFDLHNFxTwupOiCiIiIiIiIiFQJlgsyiJzN+SeC6t8sFCeziW1xKexPOHMlh1bhFCASERERERERkSrBYrUHiFycTJgKmCk80NuN7o1qAPDjpqNXdGwVTQEiEREREREREakSLNkFz2B2odvbhAMwe3Mc2VZbodtVNgoQiYiIiIiIiEiVkFtiVlSAqEdUENU9XUg4k8mf+09dqaFVOAWISki9vOVap2dYRERERESqugtLzArj6mzm5pa1APhxY9wVGdfVQAGiYjg5OQGQlZVVwSMRuTzp6ekAmuFARERERESqrJKUmAHc0TYMgMU7T5CcXjXiAc4VPYCrnbOzM56enpw8eRIXF5erYlp5m81GVlYWGRkZV8V45OpmGAbp6ekkJCTg5+fnCHqKiIiIiIhUNSUpMQNoUrMajUN92XU8lXnbjjGsY90rMLqKpQBRMUwmE6GhocTGxnLo0KGKHg5g/8B/7tw5PDw8Cuy6LlIQPz8/QkJCKnoYIiIiIiIiFcaSbQ8QORdRYpZrWIc6bDyURPMwv3Ie1dVBAaIScHV1pUGDBldNmZnFYmHFihV07dpV5UJSIi4uLsocEhERERGRKs9itZeYuRaTQQRwd/va3N2+dnkP6aqhAFEJmc1m3N3dK3oYgL0vUnZ2Nu7u7goQiYiIiIiIiJRQbolZSTKIqho1sBERERERERGRKiG3xKy4HkRVke6IiIiIiIiIiFQJuSVmChDlpzsiIiIiIiIiIlVCtmMWM5WYXUwBIhERERERERGpErJUYlYo3RERERERERERqRKybSoxK4zuiIiIiIiIiIhUCRarSswKowCRiIiIiIiIiFQJKjErnO6IiIiIiIiIiFQJKjErnO6IiIiIiIiIiFQJlmyVmBVGASIRERERERERqRLO9yBSOORiuiMiIiIiIiIiUiVYVGJWKN0REREREREREakSckvMnFVilo8CRCIiIiIiIiJSJeSWmLkqgygf3RERERERERERqRJyS8yczQqHXEx3RERERERERESqBMcsZs4qMbuYAkQiIiIiIiIiUiWoxKxwuiMiIiIiIiIiUiWcLzFTBtHFFCASERERERERkSrhfImZwiEXq9A7MmHCBNq1a4ePjw9BQUHccsst7NmzJ8823bp1w2Qy5fl69NFH82xz+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": [
"<Figure size 1400x700 with 1 Axes>"
]
},
"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&lt;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
}