mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-28 11:20:14 +00:00

* add initiate_chats implementation and example * update notebook * improve takeaway method * improve print * improve print * improve print * improve print * add tests * minor changes * format * correct typo * make prompt a parameter * add takeaway method * groupchat messages * add SoM example * fix typo * fix SoM typo * simplify chat function * add carryover * update notebook * doc * remove async for now * remove condition on reply * correct argument name * add notebook in website * format * make get_chat_takeaway private * rename takeaway method and add example * removing SoM example for now * carryover test * add test * takeaway_method * update tests * update notebook * chats_queue * add get_chat_takeaway * delete * add test * Update autogen/agentchat/conversable_agent.py Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com> * docstr * wording etc * add chat res * revise title * update agent_utils * unify the async method * add todo about overriding * attribute check * ChatResult type * revise test * takeaway to summary * cache and documentation * Use cache in summarize chat; polish tests --------- Co-authored-by: Chi Wang <wang.chi@microsoft.com> Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
1040 lines
218 KiB
Plaintext
1040 lines
218 KiB
Plaintext
{
|
||
"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": 1,
|
||
"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_endpoint_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": 2,
|
||
"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-05\n",
|
||
"\n",
|
||
"\n",
|
||
"--------------------------------------------------------------------------------\n",
|
||
"\u001b[33massistant\u001b[0m (to user_proxy):\n",
|
||
"\n",
|
||
"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",
|
||
"\n",
|
||
"We 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",
|
||
"\n",
|
||
"Here'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",
|
||
"\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 historical data from the start of the year to the current date\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 gains\n",
|
||
"print(f\"META YTD Gain: {meta_ytd_gain:.2f}%\")\n",
|
||
"print(f\"TESLA YTD Gain: {tesla_ytd_gain:.2f}%\")\n",
|
||
"\n",
|
||
"# Compare the YTD gains\n",
|
||
"if meta_ytd_gain > tesla_ytd_gain:\n",
|
||
" print(\"META has a higher YTD gain than TESLA.\")\n",
|
||
"elif meta_ytd_gain < tesla_ytd_gain:\n",
|
||
" print(\"TESLA has a higher YTD gain than META.\")\n",
|
||
"else:\n",
|
||
" print(\"META and TESLA have the same YTD gain.\")\n",
|
||
"```\n",
|
||
"\n",
|
||
"Please 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.\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",
|
||
"META YTD Gain: 37.17%\n",
|
||
"TESLA YTD Gain: -24.36%\n",
|
||
"META has a higher YTD gain than TESLA.\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 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",
|
||
"\n",
|
||
"If you need further assistance or have more questions, feel free to ask. Otherwise, if everything is done, please let me know.\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": 6,
|
||
"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",
|
||
"\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": 4,
|
||
"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 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",
|
||
"\n",
|
||
"If `matplotlib` is not installed, you will need to install it using `pip install matplotlib`.\n",
|
||
"\n",
|
||
"Here's the Python script to 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 historical data from the start of the year to the current date\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 from the start of the year\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', color='blue')\n",
|
||
"plt.plot(tesla_normalized, label='TESLA YTD', color='orange')\n",
|
||
"\n",
|
||
"# Add titles and labels\n",
|
||
"plt.title('Stock Price Change YTD 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. 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.\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",
|
||
"Figure(1400x700)\n",
|
||
"\n",
|
||
"\n",
|
||
"--------------------------------------------------------------------------------\n",
|
||
"\u001b[33massistant\u001b[0m (to user_proxy):\n",
|
||
"\n",
|
||
"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",
|
||
"\n",
|
||
"If you have any more questions or need further assistance, feel free to ask. Otherwise, we have completed the task.\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": 13,
|
||
"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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ZGRk5Du2sB5EeeWLCxYsoFmzZri5udG0aVN+/fXXEufasWNHHn30Ud5++2127doF2LOU4uLimDJlCmZz+f0T3MnJiQ8//JAmTZrw8ccfk5ycXG7nFhGRqkUBIhERkWJERETQqVMnvvnmG8e2RYsWkZyczPDhw4s8LjMzk7Nnzxb4ys7OLvMcTp48yfLly7n77rsBe9Dqhx9+KPFcLi4u3H777SxYsKDA2AULFpCVleW4h6lTp/Lkk0/SpEkT3n//fSZMmECrVq1Yv359medbHIvFUuj7cuEH9jp16vD7779z/Pjxcr32rFmzGDJkCK6urtx9993s37+fjRs3lnhcnTp1AHt5UHp6epHjunXrxpNPPgnAyy+/zNdff83XX3/tKLcbP348Y8eOpWbNmrzzzjsMHTqUzz//nD59+mCxWBznWbJkCd26dWPXrl089dRTvPPOO/To0YOFCxcWee2NGzfSs2dPWrduzaJFiy6pgXVeIKdGjRqObfHx8fTv359WrVrx/vvv06NHj0KPtVqt3HLLLUyYMIE2bdrwzjvv8NRTT5GcnMyOHTsc4x555BGef/55unTpwgcffMD999/PrFmz6Nu3b7734GLp6eksW7aM7t27ExYWVup7yvszGzNmDB999BF9+/blo48+KrT8szCrV6/mscceY/jw4fznP/8hMzOToUOHEh8fX+Kxb731FoGBgTzyyCNER0fzySef8Nxzz9G8efNSz7+0nJycuPvuu0lPTy+0Z5qIiEipVHYKk4iIyNUor8Rs48aNxscff2z4+PgY6enphmEYxp133mn06NHDMIzCy6aAIr+++eabQq9XXInZ22+/bXh4eDjKavbt22cAxvz580u8j99++80AjJ9++inf9gEDBhh169Z1/HzbbbcVWr5SFqUpMSvqfXnrrbcc46ZNm2YAhqurq9GjRw/jH//4h/HHH38UWpZDKUvMNm3aZADGkiVLDMOwl4aFhYUZTz31VKnubeTIkQZgVK9e3bj99tuNt99+29i9e3ep34O4uDjD1dXV6NOnT777+Pjjjw3A+OKLLwzDsJcLRUZGGnXq1DESExPzncNmszleX1hitnr1asPX19cYOHCgkZmZWeK95JWY7d271zhz5oxx6NAh4/PPPzfc3NyM4OBgRxnZTTfdZADGZ599VuAcN910U77n9YsvvjAA49133y0wNm/ef/zxhwEYs2bNyrf/119/LXT7hbZu3WoAxtNPP11gX3x8vHHmzBnH14WliXm/sxd66623DJPJZBw5cqTAe3KhvGfwwIEDBebx0UcfFTnXC/3www8GYPj7+xt169YtdD55LrXELM/8+fMNwPjggw9KNTcREZGLKYNIRESkBMOGDSMjI4OFCxdy7tw5Fi5cWGJ52W233caSJUsKfBWVgVGcWbNmMXDgQEdZTYMGDWjTpk2pSqR69uxJQEAAc+bMcWxLTExkyZIl3HXXXY5t1apV4/jx46XKqLkcHTp0KPR9ycuOAnjggQf49ddf6d69O6tXr2bixIl07dqVBg0a8Oeff17SdWfNmkVwcLDj/TeZTNx11118++23WK3WEo+fPn06H3/8MZGRkcyfP5/nnnuOxo0bc/PNN3PixIkSj1+6dCnZ2dk8/fTT+cqLHnroIXx9ffn5558B2Lx5M4cOHeLpp5+mWrVq+c5RWOPo5cuX07dvX26++WbmzZtXZNP0wjRq1IjAwEAiIyN55JFHqF+/Pj///DOenp6OMW5uboWWKF5s7ty5BAQE8MQTTxTYlzfv77//Hj8/P3r37p0ve6xNmzZ4e3uzfPnyIs+ft7paYZlRdevWJTAw0PH1448/OvZd2CA6LS2Ns2fP0rlzZwzDYPPmzSXeV69evfI1iW7RogW+vr6lXi1t6NChDBgwgISEBD755JN88ylvee/NuXPnKuwaIiJyfdMqZiIiIiUIDAykV69ezJ49m/T0dKxWK3fccUexx4SFhdGrV6/Lvvbu3bvZvHkzI0eO5MCBA47t3bt355NPPiElJQVfX98ij3d2dmbo0KHMnj2brKws3NzcmDdvHhaLJV+A6MUXX2Tp0qW0b9+e+vXr06dPH+65555C++5cjoCAgFK9L3379qVv376kp6cTHR3NnDlz+Oyzz7jlllvYs2dPmXoRWa1Wvv32W3r06OHorwP2YNU777zD77//Tp8+fYo9h9lsZuzYsYwdO5b4+HjWrFnDZ599xqJFixg+fDh//PFHsccfOXIEsAdlLuTq6krdunUd+/PKvJo1a1bifWVmZjJw4EDatGnDd999h7Nz2f5ZN3fuXHx9fXFxcSEsLCxfICRPrVq1Cu0FdbGYmBgaNWpU7Bz2799PcnJykX92cXFxRR6bFxwtrLfS//73PywWC1u3bs3XUwvg6NGjvPbaa/z4448F+hyVpldP7dq1C2yrXr16qXom5WnXrh2//PILbdu2LfUxlyLvvSmsP5OIiEhpKEAkIiJSCvfccw8PPfQQsbGx9O/fv0B2R0WZOXMmAM888wzPPPNMgf1z584tMcNj+PDhfP755yxatIjBgwfz3XffERUVRcuWLR1jGjduzN69e1m4cCG//vorc+fOZfLkybz22mtMmDChfG+qDDw9PenatStdu3YlICCACRMmsGjRIkaNGlXqcyxbtoxTp07x7bff8u233xbYP2vWrBIDRBeqUaMGt956K7feeivdu3dn5cqVHDlyxNGr6Epxc3NjwIAB/O9//+PXX3/llltuKdPx3bp1IyAgoNgx5ZnxYrPZCAoKKjLzLTAwsMhj69evj7Ozc75+RnluuukmgALBKavVSu/evUlISODFF18kKioKLy8vTpw4wejRo7HZbCXO+cKG1xcyDKPEY6+0vPemfv36lTwTERG5VilAJCIiUgq33347jzzyCOvWrctXrlWRDMNg9uzZ9OjRg8cee6zA/okTJzJr1qwSA0TdunUjNDSUOXPmcOONN7Js2TJeeeWVAuO8vLy46667uOuuu8jOzmbIkCG88cYbvPTSS7i7u5fbfV2qvAyMU6dOlem4WbNmERQUxCeffFJg37x585g/fz6fffbZJQVD2rZty8qVKzl16hR16tQptAwMzje63rt3L3Xr1nVsz87O5tChQ46sqrwsnh07dpSYaZW3otdtt93GnXfeyaJFiwqsLHal1KtXj/Xr12OxWHBxcSlyzNKlS+nSpUuZ32svLy9HMO7EiRPUqlWrxGO2b9/Ovn37+PLLL/M1pb5wRcLrhdVqZfbs2Xh6enLjjTdW9nREROQapR5EIiIipeDt7c2nn37K+PHjGTRo0BW55po1azh8+DD3338/d9xxR4Gvu+66i+XLl3Py5Mliz2M2m7njjjv46aef+Prrr8nJyclXXgYUWJXJ1dWVJk2aYBhGsatLVYTff/+90O2//PILULBMqzgZGRnMmzePW265pdD38PHHH+fcuXP5+tZcLDY21rFU+YWys7P5/fffMZvNjqwNLy8vgAJL1/fq1QtXV1c+/PDDfNkn06ZNIzk5mYEDBwJwww03EBkZyfvvv1/gHIVlrbi6ujJv3jzatWvHoEGD2LBhQ6nel/I2dOhQzp49y8cff1xgX968hw0bhtVqZeLEiQXG5OTkFLjfi7322mtYrVbuu+++QkvNLn5/8rJ/LtxuGAYffPBBifdzLbFarTz55JPs3r2bJ598stiSUxERkeIog0hERKSUylLWtG/fPkd52IWCg4Pp3bt3qc4xa9YsnJycHMGDi91666288sorfPvttzz77LPFnuuuu+7io48+4p///CfNmzd3LL2ep0+fPoSEhNClSxeCg4PZvXs3H3/8cb7m2OXhxIkThb4v3t7eDB48GLA3+I6MjGTQoEHUq1ePtLQ0li5dyk8//eQIhFxo06ZNTJo0qcA5u3fvzokTJzh37hy33nprofPp2LEjgYGBzJo1q0DQLM/x48dp3749PXv25OabbyYkJIS4uDi++eYbtm7dytNPP+0o1WrVqhVOTk78+9//Jjk5GTc3N3r27ElQUBAvvfQSEyZMoF+/ftx6663s3buXyZMn065dO+677z7AHsz79NNPGTRoEK1ateL+++8nNDSUPXv2sHPnTn777bcC8/Pw8GDhwoX07NmT/v37s3LlylL1MCpPI0eO5KuvvuLZZ59lw4YNdO3a1fHn9thjj3Hbbbdx00038cgjj/DWW2+xZcsW+vTpg4uLC/v37+f777/ngw8+KLa3V9euXfn444954oknaNCgAffeey9RUVFkZ2ezb98+Zs2ahaurKyEhIQBERUVRr149nnvuOU6cOIGvry9z584tU/+gq01ycrLj9yc9PZ0DBw4wb948YmJiGD58eKHBNxERkVKrrOXTRERErmYXLnNfnLIuc1/UUvYXL3OfnZ1t1KhRw+jatWux14+MjDRat25d4v3YbDYjPDzcAIxJkyYV2P/5558b3bp1M2rUqGG4ubkZ9erVM55//nkjOTm5xHPnuZxl7uvUqeMY98033xjDhw836tWrZ3h4eBju7u5GkyZNjFdeecVISUnJd87i3uuJEycagwYNMtzd3R1Ltxdm9OjRhouLi3H27NlC96ekpBgffPCB0bdvXyMsLMxwcXExfHx8jE6dOhlTp07Nt/y8YRjG1KlTjbp16xpOTk4F3o+PP/7YiIqKMlxcXIzg4GBjzJgxBZazNwz70vW9e/c2fHx8DC8vL6NFixb5lla/cJn7PGfPnjWaNGlihISEGPv37y/yfvOWdD9z5kyRYwyj+GXVL17m3jDsS8q/8sorRmRkpOHi4mKEhIQYd9xxhxETE5Nv3JQpU4w2bdoYHh4eho+Pj9G8eXPjhRdeME6ePFnsfPJs3rzZGDlypFG7dm3D1dXV8f6MGzcu35L0hmEYu3btMnr16mV4e3sbAQEBxkMPPeRYqv7C5eSLWuZ+7NixBa5fp04dY9SoUaWa64XnLun9Ls0y9xc+397e3kaDBg2M++67z1i8eHGp5yMiIlIUk2FchV32RERERERERETkilEPIhERERERERGRKk4BIhERERERERGRKk4BIhERERERERGRKk4BIhERERERERGRKk4BIhERERERERGRKk4BIhERERERERGRKs65sidwNbDZbJw8eRIfHx9MJlNlT0dEREREREREpFwYhsG5c+eoWbMmZnPReUIKEAEnT54kPDy8sqchIiIiIiIiIlIhjh07RlhYWJH7FSACfHx8APub5evrW8mzKZnFYmHx4sX06dMHFxeXyp6OXMP0LElF0zMmFUnPl1wpetakIun5koqk50sAUlJSCA8Pd8Q+iqIAETjKynx9fa+ZAJGnpye+vr76JZfLomdJKpqeMalIer7kStGzJhVJz5dUJD1fcqGSWuqoSbWIiIiIiIiISBWnAJGIiIiIiIiISBWnAJGIiIiIiIiISBWnHkSlZLVasVgslT0NwF5H6uzsTGZmJlartbKnI9cAJycnnJ2dS6w5FRERERERkapJAaJSSE1N5fjx4xiGUdlTAcAwDEJCQjh27Jg+8EupeXp6Ehoaiqura2VPRURERERERK4yChCVwGq1cvz4cTw9PQkMDLwqAjI2m43U1FS8vb0xm1UlKMUzDIPs7GzOnDnDoUOHaNCggZ4bERERERERyUcBohJYLBYMwyAwMBAPD4/Kng5gDxBlZ2fj7u6uD/pSKh4eHri4uHDkyBHHsyMiIiIiIiKSR9GFUroaModELoeCiSIiIiIiIlIUfWIUEREREREREaniFCASEREREREREaniFCASKSczZsygWrVqlT0NERERERERkTJTgOg6NXr0aEwmE48++miBfWPHjsVkMjF69OgC4y/+6tevHytWrCh034VfK1asAOD48eO4urrSrFmzYudnGAa9evWib9++BfZNnjyZatWq0atXr2KvGRERAUD37t0d29zc3KhVqxaDBg1i3rx5pXqvYmNjeeqpp6hfvz7u7u4EBwfTpUsXPv30U9LT00t1DoC77rqLffv2lXp8YQ4fPky3bt3w8vKiW7duHD58ON/+W265hblz517WNUREREREREQupgDRdSw8PJxvv/2WjIwMx7bMzExmz55N7dq1C4zv168fp06dyvf1zTff0Llz53zbhg0bVmBs586dAXsWzbBhw0hJSWH9+vVFzs1kMjF9+nTWr1/P559/7th+6NAhXnjhBT766CPmzp2b7xoA06dPd/y8ceNGx3EPPfQQp06dIiYmhrlz59KkSROGDx/Oww8/XOx7dPDgQVq3bs3ixYt588032bx5M2vXruWFF15g4cKFLF26tHRvNvaVwoKCgko9vjDjxo2jVq1abNmyhdDQUJ577jnHvjlz5mA2mxk6dOhlXUNERERERETkYlrmvowMwyDDYq2Ua3u4OJVpNbUbbriBmJgY5s2bx7333gvAvHnzqF27NpGRkQXGu7m5ERISUui5Ltzu4eFBVlZWgbGGYTB9+nQmT55MWFgY06ZNo0OHDkXOLzw8nA8++IDHH3+cPn36EBERwYMPPkifPn0YMWIEAH5+fvmOqVatWqFz9PT0dGwPCwujY8eOREVF8cADDzBs2DB69epV6Bwee+wxnJ2d2bRpE15eXo7tdevW5bbbbsMwDMe2d999l+nTp3Pw4EH8/f0ZNGgQ//nPf/D29gbswbGnn36apKQkAMaPH8+CBQsYN24c//jHP0hMTKR///5MnToVHx+fQueze/du3n33XRo0aMDo0aMdAaKkpCReffVVli1bVuT7KSIiIiIiInKpFCAqowyLlSav/VYp1971el88Xcv2R/bAAw8wffp0R4Doiy++4P7773eUhJWn5cuXk56eTq9evahVqxadO3fmvffeyxd4udioUaOYP38+DzzwAEOGDGHHjh3s3LmzXOYzatQoxo0bx7x58woNEMXHxzsyh4qa44UBObPZzIcffkhkZCQHDx7kscce44UXXmDy5MlFziEmJoYFCxawcOFCEhMTGTZsGP/617944403Ch3fsmVLli5dSp8+fVi8eDEtWrQA4Pnnn2fs2LGEh4eX5S0QERERERERKRWVmF3n7rvvPlavXs2RI0c4cuQIa9as4b777it07MKFC/H29s739eabb5b6WtOmTWP48OE4OTnRrFkz6taty/fff1/icVOmTGHHjh08/fTTTJkyhcDAwFJfszhms5mGDRsW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KexZtlgs/PLLLwwYMKBAXySR8qBnTCqSni+5UvSsSUXS8yUVSc/Xpdt1MoUBH/5BoI8bG1/pVdnTuSzFxTwupOiCiIiIiIiIiMgFLFaVmImIiIiIiIiIVGlVscRMASIRERERERERkQtk51S9Vcyqzp2KiIiIiIiIiJRCXomZiwJEcjH18pZrnZ5hERERERGR0skrMXNViZnkcXJyAiA7O7uSZyJyedLT0wG0eoGIiIiIiEgJqmKJmXNlT+Bq5+zsjKenJ2fOnMHFxeWqWFbeZrORnZ1NZmbmVTEfuboZhkF6ejpxcXFUq1bNEfQUERERERGRwp0vMas6GUQKEJXAZDIRGhrKoUOHOHLkSGVPB7B/4M/IyMDDwwOTqeo8rHJ5qlWrRkhISGVPQ0RERERE5Kp3fhWzqpOUoQBRKbi6utKgQYOrpszMYrGwatUqunXrpnIhKRUXFxdlDomIiIiIiJSSJbfEzFUBIrmY2WzG3d29sqcB2Psi5eTk4O7urgCRiIiIiIiISDnLzi0xc65CJWZVJxQmIiIiIiIiIlIKWuZeRERERERERKSKy7FWvRKzqnOnIiIiIiIiIiKloBIzEREREREREZEqTiVmIiIiIiIiIiJVXF6JmQJEIiIiIiIiIiJV1PkMIpWYiYiIiIiIiIhUSdkqMRMRERERERERqdpUYiYiIiIiIiIiUsXllZi5OledsEnVuVMRERERERERkVJwLHNvVg8iEREREREREZEqyaISMxERERERERGRqi0nr0m1SsxERERERERERKomxzL3KjETEREREREREamaslViJiIiIiIiIiJStanETERERERERESkilOJmYiIiIiIiIhIFacSMxERERERERGRKk4lZlfYW2+9Rbt27fDx8SEoKIjBgwezd+/efGO6d++OyWTK9/Xoo4/mG3P06FEGDhyIp6cnQUFBPP/88+Tk5FzJWxERERERERGR60RVLDFzrsyLr1y5krFjx9KuXTtycnJ4+eWX6dOnD7t27cLLy8sx7qGHHuL11193/Ozp6el4bbVaGThwICEhIfz555+cOnWKkSNH4uLiwptvvnlF70dERERERERErn2WvBKzKpRBVKkBol9//TXfzzNmzCAoKIjo6Gi6devm2O7p6UlISEih51i8eDG7du1i6dKlBAcH06pVKyZOnMiLL77I+PHjcXV1rdB7EBEREREREZHriyODqAr1IKrUANHFkpOTAfD398+3fdasWcycOZOQkBAGDRrEP/7xD0cW0dq1a2nevDnBwcGO8X379mXMmDHs3LmT1q1bF7hOVlYWWVlZjp9TUlIAsFgsWCyWcr+v8pY3x2thrnJ107MkFU3PmFQkPV9ypehZk4qk50sqkp6vS2fJsQeITIb1mn//Sjt/k2EYRgXPpVRsNhu33norSUlJrF692rF9ypQp1KlTh5o1a7Jt2zZefPFF2rdvz7x58wB4+OGHOXLkCL/99pvjmPT0dLy8vPjll1/o379/gWuNHz+eCRMmFNg+e/bsfOVrIiIiIiIiIlL1vLzRibQcE39vmUPoNR4mSE9P55577iE5ORlfX98ix101GURjx45lx44d+YJDYA8A5WnevDmhoaHcfPPNxMTEUK9evUu61ksvvcSzzz7r+DklJYXw8HD69OlT7Jt1tbBYLCxZsoTevXvj4uJS2dORa5ieJaloesakIun5kitFz5pUJD1fUpH0fF26V/5aBjk53NzjJiJqeJV8wFUsr2qqJFdFgOjxxx9n4cKFrFq1irCwsGLHdujQAYADBw5Qr149QkJC2LBhQ74xp0+fBiiyb5Gbmxtubm4Ftru4uFxTvzTX2nzl6qVnSSqanjGpSHq+5ErRsyYVSc+XVCQ9X2WXY7OXmHm4uV7z711p51+p3ZYMw+Dxxx9n/vz5LFu2jMjIyBKP2bJlCwChoaEAdOrUie3btxMXF+cYs2TJEnx9fWnSpEmFzFtERERERERErl+OVczUpPrKGDt2LLNnz+Z///sfPj4+xMbGAuDn54eHhwcxMTHMnj2bAQMGUKNGDbZt28YzzzxDt27daNGiBQB9+vShSZMmjBgxgv/85z/Exsby6quvMnbs2EKzhEREREREREREimKzGVhtVS9AVKl3+umnn5KcnEz37t0JDQ11fM2ZMwcAV1dXli5dSp8+fYiKimLcuHEMHTqUn376yXEOJycnFi5ciJOTE506deK+++5j5MiRvP7665V1WyIiIiIiIiJyjbLklpcBuDiZKnEmV1alZhCVtIBaeHg4K1euLPE8derU4ZdffimvaYmIiIiIiIhIFZVXXgbKIBIRERERERERqZIsORdmEFWdsEnVuVMRERERERERkRLklZiZTeBkrjolZgoQiYiIiIiIiIjkqoormIECRCIiIiIiIiIiDnklZgoQiYiIiIiIiIhUURZrXoCo6pSXgQJEIiIiIiIiIiIOKjETEREREREREanizmcQVa2QSdW6WxERERERERGRYqjETERERERERESkilOJmYiIiIiIiIhIFZeXQeSsAJGIiIiIiIiISNWUFyByVYmZiIiIiIiIiEjVpBIzEREREREREZEq7nyJmTKIRERERERERESqJC1zLyIiIiIiIiJSxeXklpi5KkAkIiIiIiIiIlI1ZSuDSERERERERESkalMPIhERERERERGRKu78MvdVK2RSte5WRERERERERKQYWuZeRERERERERKSKU4mZiIiIiIiIiEgVp2XuRURERERERESqOMcy985VK2RSte5WRERERERERKQYecvcO5tVYiYiIiIiIiIiUiWpxExEREREREREpIpTiZmIiIiIiIiISBWX7cggUomZiIiIiIiIiEiVZMnNIHI2V62QSdW6WxERERERERGRYuTkZRCpxExEREREREREpGrKa1LtqhIzEREREREREZGqKVslZiIiIiIiIiIiVZslRyVmIiIiIiIiIiJVWo5NJWYiIiIiIiIiIlWaSsxERERERERERKo4lZiJiIiIiIiIiFRxeSVmLioxExERERERERGpmiy5JWYuTlUrZFK17lZEREREREREpBjZeSVmChCJiIiIiIiIiFRNKjETEREREREREani8krMXJVBJCIiIiIiIiJSNeWtYuasAJGIiIiIiIiISNWUbVWJmYiIiIiIiIjIdS09O4e1MfHk5AaCLpZjq5olZs6VPQERERERERERkSshK8fK3VPWsfV4MnUDvXihbxR9mwZjMtmzhaw2A2tugEglZiIiIiIiIiIi16EJP+1i6/FkAA6eSePRmdG8umCHY7/lgqwilZiJiIiIiIiIiFxnvt90jNnrj2IywSf33MCY7vXs26OPO8rN8srLAFyUQSQiIiIiIiIicv3YeTLZkSn09M0NGdgilOf7NMLT1YnsHBuH49OA8yuYgQJEIiIiIiIiIiLXjeR0C4/OjCYrx0aPRoE80bM+AGaziUYhPgDsPnUOOF9iZjaBk1klZiIiIiIiIiIi1zybzeCZ77ZwLCGDcH8P3rurFeYLAj9RIb4A7IlNAcCSW2JW1bKHQAEiEREREREREblOfbL8AMv2xOHmbObTe9tQzdM13/7GofYM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yTFhYWHmySefbPK2FyxYYLp3737FsUVERJg//elPddOKioq4yVgr1pbyVOvo0aNGktm8eXOTxwLHaIv5evfdd42Hh4c5e/Zsk8cCx2gr+bLZbKZnz57m8ccfb/L20bLaStYutWrVKuPr68uJfCvQmvN1KQoi19USGauurjbZ2dn1XjNmzDB9+vQx2dnZl30CLOeP7ouCyE5mzJhhAgMDTWpqar1H417a8sfGxpqoqCizadMms2PHjgaP/c7OzjahoaHm/vvvr7eO06dP1y2zYsUK8+mnn5oDBw6YAwcOmL/+9a/G39/fPPvss1cc36JFi0xQUJBZt26dycrKMhMnTmzwmMKjR4+azMxMs2DBAuPn52cyMzNNZmamKSkpseORQlO4ep7+8Y9/mKSkJJOZmWmOHDliUlJSTExMjLnuuutMeXm5nY8WfipXz1daWppZunSp2bVrlzl48KB59913TWhoqJk6daqdjxSaw9XzVevLL780kszevXvtdGRgb20ha0lJSSYjI8Ps37/frFixwvj4+JhXXnnFjkcJzdXa83XmzBmTmZlp1q9fbySZNWvWmMzMTJOXl1e3TF5ensnMzDSvv/66kWS++uork5mZac6cOWPHI4XmaqmM/bumPMXMGM4f3RUFkZ1IavSVnJxct8yFCxfMzJkzTceOHY2vr6+ZNGlSvX/E4+PjG13Hpf8HYfny5eaGG24wvr6+JiAgwAwaNMi8+uqr9R6R2hibzWaef/55Ex4ebqxWq7nzzjvN/v376y3z4IMPNrp9rvhoea6ep6ysLDNixAgTHBxsrFar6dGjh4mNjTUnTpyw2zFC87l6vjIyMszQoUNNYGCgad++venXr5956aWXKB9bCVfPV60pU6aYmJiYaz4ecJy2kLUHHnjABAcHG29vbzNgwADz9ttv2+XY4Nq19nwlJyc3uu74+Pirbv/SfYDztFTG/l1TCyLOH92TxRjuGAsAAAAAAODOeEQCAAAAAACAm6MgAgAAAAAAcHMURAAAAAAAAG6OgggAAAAAAMDNURABAAAAAAC4OQoiAAAAAAAAN0dBBAAAAAAA4OYoiAAAAAAAANwcBREAAAAAAICboyACAABohmnTpslischiscjLy0vh4eEaPXq03njjDdlstiav580331RQUJDjBgoAANAEFEQAAADNNG7cOOXl5enIkSPasGGDRowYoUcffVTjx49XVVWVs4cHAADQZBREAAAAzWS1WhUREaGuXbtq8ODBeuaZZ7Ru3Tpt2LBBb775piQpMTFRN954ozp06KDIyEjNnDlTpaWlkqTU1FRNnz5dRUVFdVcjvfDCC5KkiooKPfHEE+ratas6dOigoUOHKjU11Tk7CgAA2jwKIgAAADsaOXKkoqOj9cknn0iSPDw8tHz5cu3Zs0dvvfWWNm3apKeeekqSFBMTo2XLlikgIEB5eXnKy8vTE088IUmaPXu20tPTtWbNGmVlZek3v/mNxo0bp9zcXKftGwAAaLssxhjj7EEAAAC4mmnTpqmwsFBr165tMO/ee+9VVlaWvvvuuwbzPv74Y8XGxuqHH36QVHMPoscee0yFhYV1yxw7dky9evXSsWPH1KVLl7rpo0aN0pAhQ/TSSy/ZfX8AAIB7a+fsAQAAALQ1xhhZLBZJ0pdffqmEhATt27dPxcXFqqqqUnl5ucrKyuTr69vo+7Ozs1VdXa3evXvXm15RUaGQkBCHjx8AALgfCiIAAAA727t3r3r27KkjR45o/PjxmjFjhl588UUFBwdr27Zteuihh3Tx4sXLFkSlpaXy9PRURkaGPD09683z8/NriV0AAABuhoIIAADAjjZt2qTs7Gz9/ve/V0ZGhmw2m5YsWSIPj5pbP3744Yf1lvf29lZ1dXW9aYMGDVJ1dbVOnz6t2267rcXGDgAA3BcFEQAAQDNVVFQoPz9f1dXVOnXqlDZu3KiEhASNHz9eU6dOVU5OjiorK5WUlKRf/epX2r59u1auXFlvHT169FBpaalSUlIUHR0tX19f9e7dW7/97W81depULVmyRIMGDVJBQYFSUlI0YMAA3XXXXU7aYwAA0FbxFDMAAIBm2rhxozp37qwePXpo3Lhx2rx5s5YvX65169bJ09NT0dHRSkxM1Msvv6z+/ftr9erVSkhIqLeOmJgYxcbGavLkyQoNDdUf//hHSVJycrKmTp2qxx9/XH369NHdd9+tb7/9VlFRUc7YVQAA0MbxFDMAAAAAAAA3xxVEAAAAAAAAbo6CCAAAAAAAwM1REAEAAAAAALg5CiIAAAAAAAA3R0EEAAAAAADg5iiIAAAAAAAA3BwFEQAAAAAAgJujIAIAAAAAAHBzFEQAAAAAAABujoIIAAAAAADAzVEQAQAAAAAAuLn/D7JH0xh60x8MAAAAAElFTkSuQmCC",
|
||
"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:790: UserWarning: No summary_method provided or summary_method is not supported: \n",
|
||
" warnings.warn(\"No summary_method provided or summary_method is not supported: \")\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.6175200000000001, 'gpt-4': {'cost': 0.6175200000000001, 'prompt_tokens': 15456, 'completion_tokens': 2564, 'total_tokens': 18020}}, {'total_cost': 0.4973699999999999, 'gpt-4': {'cost': 0.4973699999999999, 'prompt_tokens': 13007, 'completion_tokens': 1786, 'total_tokens': 14793}}))"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ipy_user = IPythonUserProxyAgent(\n",
|
||
" \"ipython_user_proxy\",\n",
|
||
" human_input_mode=\"NEVER\",\n",
|
||
" max_consecutive_auto_reply=10,\n",
|
||
" is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\")\n",
|
||
" or x.get(\"content\", \"\").rstrip().endswith('\"TERMINATE\".'),\n",
|
||
" code_execution_config={\n",
|
||
" \"use_docker\": False, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly.\n",
|
||
" },\n",
|
||
")\n",
|
||
"# the assistant receives a message from the user, which contains the task description\n",
|
||
"ipy_user.initiate_chat(\n",
|
||
" assistant,\n",
|
||
" message=\"\"\"Plot a chart of META and TESLA stock price gain YTD\"\"\",\n",
|
||
")"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.10.13"
|
||
},
|
||
"vscode": {
|
||
"interpreter": {
|
||
"hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1"
|
||
}
|
||
},
|
||
"widgets": {
|
||
"application/vnd.jupyter.widget-state+json": {
|
||
"state": {
|
||
"2d910cfd2d2a4fc49fc30fbbdc5576a7": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/base",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "LayoutModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "LayoutView",
|
||
"align_content": null,
|
||
"align_items": null,
|
||
"align_self": null,
|
||
"border_bottom": null,
|
||
"border_left": null,
|
||
"border_right": null,
|
||
"border_top": null,
|
||
"bottom": null,
|
||
"display": null,
|
||
"flex": null,
|
||
"flex_flow": null,
|
||
"grid_area": null,
|
||
"grid_auto_columns": null,
|
||
"grid_auto_flow": null,
|
||
"grid_auto_rows": null,
|
||
"grid_column": null,
|
||
"grid_gap": null,
|
||
"grid_row": null,
|
||
"grid_template_areas": null,
|
||
"grid_template_columns": null,
|
||
"grid_template_rows": null,
|
||
"height": null,
|
||
"justify_content": null,
|
||
"justify_items": null,
|
||
"left": null,
|
||
"margin": null,
|
||
"max_height": null,
|
||
"max_width": null,
|
||
"min_height": null,
|
||
"min_width": null,
|
||
"object_fit": null,
|
||
"object_position": null,
|
||
"order": null,
|
||
"overflow": null,
|
||
"padding": null,
|
||
"right": null,
|
||
"top": null,
|
||
"visibility": null,
|
||
"width": null
|
||
}
|
||
},
|
||
"454146d0f7224f038689031002906e6f": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"_dom_classes": [],
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "HBoxModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/controls",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "HBoxView",
|
||
"box_style": "",
|
||
"children": [
|
||
"IPY_MODEL_e4ae2b6f5a974fd4bafb6abb9d12ff26",
|
||
"IPY_MODEL_577e1e3cc4db4942b0883577b3b52755",
|
||
"IPY_MODEL_b40bdfb1ac1d4cffb7cefcb870c64d45"
|
||
],
|
||
"layout": "IPY_MODEL_dc83c7bff2f241309537a8119dfc7555",
|
||
"tabbable": null,
|
||
"tooltip": null
|
||
}
|
||
},
|
||
"577e1e3cc4db4942b0883577b3b52755": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"_dom_classes": [],
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "FloatProgressModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/controls",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "ProgressView",
|
||
"bar_style": "success",
|
||
"description": "",
|
||
"description_allow_html": false,
|
||
"layout": "IPY_MODEL_2d910cfd2d2a4fc49fc30fbbdc5576a7",
|
||
"max": 1,
|
||
"min": 0,
|
||
"orientation": "horizontal",
|
||
"style": "IPY_MODEL_74a6ba0c3cbc4051be0a83e152fe1e62",
|
||
"tabbable": null,
|
||
"tooltip": null,
|
||
"value": 1
|
||
}
|
||
},
|
||
"6086462a12d54bafa59d3c4566f06cb2": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/base",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "LayoutModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "LayoutView",
|
||
"align_content": null,
|
||
"align_items": null,
|
||
"align_self": null,
|
||
"border_bottom": null,
|
||
"border_left": null,
|
||
"border_right": null,
|
||
"border_top": null,
|
||
"bottom": null,
|
||
"display": null,
|
||
"flex": null,
|
||
"flex_flow": null,
|
||
"grid_area": null,
|
||
"grid_auto_columns": null,
|
||
"grid_auto_flow": null,
|
||
"grid_auto_rows": null,
|
||
"grid_column": null,
|
||
"grid_gap": null,
|
||
"grid_row": null,
|
||
"grid_template_areas": null,
|
||
"grid_template_columns": null,
|
||
"grid_template_rows": null,
|
||
"height": null,
|
||
"justify_content": null,
|
||
"justify_items": null,
|
||
"left": null,
|
||
"margin": null,
|
||
"max_height": null,
|
||
"max_width": null,
|
||
"min_height": null,
|
||
"min_width": null,
|
||
"object_fit": null,
|
||
"object_position": null,
|
||
"order": null,
|
||
"overflow": null,
|
||
"padding": null,
|
||
"right": null,
|
||
"top": null,
|
||
"visibility": null,
|
||
"width": null
|
||
}
|
||
},
|
||
"74a6ba0c3cbc4051be0a83e152fe1e62": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "ProgressStyleModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "StyleView",
|
||
"bar_color": null,
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"7d3f3d9e15894d05a4d188ff4f466554": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "HTMLStyleModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "HTMLStyleModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "StyleView",
|
||
"background": null,
|
||
"description_width": "",
|
||
"font_size": null,
|
||
"text_color": null
|
||
}
|
||
},
|
||
"b40bdfb1ac1d4cffb7cefcb870c64d45": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"_dom_classes": [],
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "HTMLModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/controls",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "HTMLView",
|
||
"description": "",
|
||
"description_allow_html": false,
|
||
"layout": "IPY_MODEL_f1355871cc6f4dd4b50d9df5af20e5c8",
|
||
"placeholder": "",
|
||
"style": "IPY_MODEL_ca245376fd9f4354af6b2befe4af4466",
|
||
"tabbable": null,
|
||
"tooltip": null,
|
||
"value": " 1/1 [00:00<00:00, 44.69it/s]"
|
||
}
|
||
},
|
||
"ca245376fd9f4354af6b2befe4af4466": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "HTMLStyleModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "HTMLStyleModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "StyleView",
|
||
"background": null,
|
||
"description_width": "",
|
||
"font_size": null,
|
||
"text_color": null
|
||
}
|
||
},
|
||
"dc83c7bff2f241309537a8119dfc7555": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/base",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "LayoutModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "LayoutView",
|
||
"align_content": null,
|
||
"align_items": null,
|
||
"align_self": null,
|
||
"border_bottom": null,
|
||
"border_left": null,
|
||
"border_right": null,
|
||
"border_top": null,
|
||
"bottom": null,
|
||
"display": null,
|
||
"flex": null,
|
||
"flex_flow": null,
|
||
"grid_area": null,
|
||
"grid_auto_columns": null,
|
||
"grid_auto_flow": null,
|
||
"grid_auto_rows": null,
|
||
"grid_column": null,
|
||
"grid_gap": null,
|
||
"grid_row": null,
|
||
"grid_template_areas": null,
|
||
"grid_template_columns": null,
|
||
"grid_template_rows": null,
|
||
"height": null,
|
||
"justify_content": null,
|
||
"justify_items": null,
|
||
"left": null,
|
||
"margin": null,
|
||
"max_height": null,
|
||
"max_width": null,
|
||
"min_height": null,
|
||
"min_width": null,
|
||
"object_fit": null,
|
||
"object_position": null,
|
||
"order": null,
|
||
"overflow": null,
|
||
"padding": null,
|
||
"right": null,
|
||
"top": null,
|
||
"visibility": null,
|
||
"width": null
|
||
}
|
||
},
|
||
"e4ae2b6f5a974fd4bafb6abb9d12ff26": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"_dom_classes": [],
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "HTMLModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/controls",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "HTMLView",
|
||
"description": "",
|
||
"description_allow_html": false,
|
||
"layout": "IPY_MODEL_6086462a12d54bafa59d3c4566f06cb2",
|
||
"placeholder": "",
|
||
"style": "IPY_MODEL_7d3f3d9e15894d05a4d188ff4f466554",
|
||
"tabbable": null,
|
||
"tooltip": null,
|
||
"value": "100%"
|
||
}
|
||
},
|
||
"f1355871cc6f4dd4b50d9df5af20e5c8": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "2.0.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/base",
|
||
"_model_module_version": "2.0.0",
|
||
"_model_name": "LayoutModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "2.0.0",
|
||
"_view_name": "LayoutView",
|
||
"align_content": null,
|
||
"align_items": null,
|
||
"align_self": null,
|
||
"border_bottom": null,
|
||
"border_left": null,
|
||
"border_right": null,
|
||
"border_top": null,
|
||
"bottom": null,
|
||
"display": null,
|
||
"flex": null,
|
||
"flex_flow": null,
|
||
"grid_area": null,
|
||
"grid_auto_columns": null,
|
||
"grid_auto_flow": null,
|
||
"grid_auto_rows": null,
|
||
"grid_column": null,
|
||
"grid_gap": null,
|
||
"grid_row": null,
|
||
"grid_template_areas": null,
|
||
"grid_template_columns": null,
|
||
"grid_template_rows": null,
|
||
"height": null,
|
||
"justify_content": null,
|
||
"justify_items": null,
|
||
"left": null,
|
||
"margin": null,
|
||
"max_height": null,
|
||
"max_width": null,
|
||
"min_height": null,
|
||
"min_width": null,
|
||
"object_fit": null,
|
||
"object_position": null,
|
||
"order": null,
|
||
"overflow": null,
|
||
"padding": null,
|
||
"right": null,
|
||
"top": null,
|
||
"visibility": null,
|
||
"width": null
|
||
}
|
||
}
|
||
},
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
}
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|