mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-26 02:11:24 +00:00

* add agenteval-notebook for math problems and the blog post about it * update gitignore * updates to notebook * adding folder for the logs * adding math problems logs * adding folder for alfworld logs * added limitiation and future work to blog post * minor edits blog post * adding changes * reorg * modify the main notebook * modification of the main notebook * remove wrong notebook * uploading new notebook * update agenteval notebook * change the sample * Update agenteval_cq_math.ipynb * adding final changes to notebook * updated framework picture * Update index.mdx * Update index.md * Add files via upload * updates to notebool * revise the blog * revise the blog * update the agent img * revise the blog * revise the blog * Excluded model logs from the main branch, you can find them in agenteval branch * Fixed pre-commit formatting. * Update website/blog/2023-11-11-AgentEval/index.mdx Co-authored-by: Chi Wang <wang.chi@microsoft.com> * update gitignore * update index.mdx * update authors.yml by adding Negar and Julia * remove md file * remove md file * update gitignore * update authors file * pre-commit checks * pre-commit checks on authors.yml * pre-commit checks on authors.yml * update index.mdx * update authors.yml by adding Negar and Julia * updated the blog-post version 1 * updated the blog-post: TL;DR is ready * updated the blog-post: first part of introduction is ready * updated figures: typos on fig 1, changed terminology on the fig 2 * upadated the Framework part * fixed redering issues * upload zip file instead of single samples * update prealgebra.zip * update * upload * update z * update naming * update zip * update the agenteval notebook * update the notebook - removing unmercenary logs * updated fig 1 and references to it * updated fig 1 * incorporated PR comments * merged agenteval branch * final changes to the blog * updated taxonomy * update notebook * minor changes to the blog * Fixed formatting * Update the link in agenteval_cq_math.ipynb * update the blog and link in notebook * Update index.mdx * change folder name * Changes to be committed: modified: OAI_CONFIG_LIST_sample.txt * add sample OAI file * fix the url link to colab and typos * fix the url link to colab and typos * add authors * update profile pic * "update authors" * fixing the problem in test_groupchat.py * update the title lower case * reverting changes in setup.py * rerun pre-commit --------- Co-authored-by: Negar Arabzadeh <ngr.arabzadeh@gmail.com> Co-authored-by: Julia Kiseleva <jukisele@microsoft.com> Co-authored-by: afourney <adamfo@microsoft.com> Co-authored-by: Chi Wang <wang.chi@microsoft.com> Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>
790 lines
145 KiB
Plaintext
790 lines
145 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "-pftZ-ZF1_BA"
|
|
},
|
|
"source": [
|
|
"<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agenteval_cq_math.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "NPUGFpKP1_BH"
|
|
},
|
|
"source": [
|
|
"# Demonstrating the `AgentEval` framework using the task of solving math problems as an example\n",
|
|
"\n",
|
|
"This notebook aims to demonstrate how to `AgentEval` implemented through [AutoGen](https://github.com/microsoft/autogen) works, where we use a math problem-solving task as an example. \n",
|
|
"`AgentEval` consists of two key components:\n",
|
|
"\n",
|
|
"- `CriticAgent`: This is an LLM-based agent that generates a list criteria $(c_1, \\dots, c_n)$ to help to evaluate a utility given task.\n",
|
|
"\n",
|
|
"- `QuantifierAgent`: This agent quantifies the performance of any sample task based on the criteria designed by the `CriticAgent` in the following way: $(c_1=a_1, \\dots, c_n=a_n)$\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"For more detailed explanations, please refer to the accompanying [blog post](https://https://microsoft.github.io/autogen/blog/2023/11/11/AgentEval)\n",
|
|
"\n",
|
|
"## Requirements\n",
|
|
"\n",
|
|
"AutoGen requires `Python>=3.8`. To run this notebook example, please install pyautogen, Docker, and OpenAI:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"execution": {
|
|
"iopub.execute_input": "2023-02-13T23:40:52.317406Z",
|
|
"iopub.status.busy": "2023-02-13T23:40:52.316561Z",
|
|
"iopub.status.idle": "2023-02-13T23:40:52.321193Z",
|
|
"shell.execute_reply": "2023-02-13T23:40:52.320628Z"
|
|
},
|
|
"id": "68lTZZyJ1_BI",
|
|
"outputId": "15a55fab-e13a-4654-b8cb-ae117478d6d8"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"%pip install pyautogen~=0.2.0b5 docker\n",
|
|
"%pip install scipy\n",
|
|
"%pip install matplotlib"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "HxgqKJrd1_BJ"
|
|
},
|
|
"source": [
|
|
"## Set your API Endpoint\n",
|
|
"\n",
|
|
"* The [`config_list_openai_aoai`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_openai_aoai) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files:\n",
|
|
" - OpenAI API key: os.environ[\"OPENAI_API_KEY\"] or `openai_api_key_file=\"key_openai.txt\"`.\n",
|
|
" - Azure OpenAI API key: os.environ[\"AZURE_OPENAI_API_KEY\"] or `aoai_api_key_file=\"key_aoai.txt\"`. Multiple keys can be stored, one per line.\n",
|
|
" - Azure OpenAI API base: os.environ[\"AZURE_OPENAI_API_BASE\"] or `aoai_api_base_file=\"base_aoai.txt\"`. Multiple bases can be stored, one per line.\n",
|
|
"* The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. It first looks for an environment variable with a specified name. The value of the environment variable needs to be a valid json string. If that variable is not found, it looks for a json file with the same name. It filters the configs by filter_dict.\n",
|
|
"\n",
|
|
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "YRycFEDJ1_BJ"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import autogen\n",
|
|
"\n",
|
|
"config_list = autogen.config_list_from_json(\n",
|
|
" \"OAI_CONFIG_LIST\",\n",
|
|
" filter_dict={\n",
|
|
" \"model\": [\"gpt-4\"],\n",
|
|
" },\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "fBZ-XFXy1_BJ"
|
|
},
|
|
"source": [
|
|
"\n",
|
|
"## Construct `CriticAgent`\n",
|
|
"\n",
|
|
"We construct the planning agent named `critic` and a user proxy agent for the critic named `critic_user`. We specify `human_input_mode` as \"NEVER\" in the user proxy agent, ensuring that it will never ask for human feedback. Additionally, we define the `ask_critic` function to send a message to the critic and retrieve the criteria from the critic.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"id": "9XAeyjd11_BK"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"\n",
|
|
"critic = autogen.AssistantAgent(\n",
|
|
" name = \"critic\",\n",
|
|
" llm_config = {\"config_list\": config_list},\n",
|
|
" system_message = \"\"\"You are a helpful assistant. You suggest criteria for evaluating different tasks. They should be dinstinguishable, quantifieable and not redundant.\n",
|
|
" Convert the evaluation criteria into a dictionary where the keys are the criteria.\n",
|
|
" The value of each key is a dictionary as follows {\"description\": criteria description , \"accepted_values\": possible accepted inputs for this key}\n",
|
|
" Make sure the keys are criteria for assessing the given task. \"accepted_values\" include the acceptable inputs for each key that are fine-grained and preferrably mlti-graded levels. \"description\" includes the criterion description.\n",
|
|
" Return the dictionary.\"\"\"\n",
|
|
")\n",
|
|
"\n",
|
|
"critic_user = autogen.UserProxyAgent(\n",
|
|
" name = \"critic_user\",\n",
|
|
" max_consecutive_auto_reply = 0, # terminate without auto-reply\n",
|
|
" human_input_mode = \"NEVER\",\n",
|
|
")\n",
|
|
"\n",
|
|
"def ask_critic(message):\n",
|
|
" \"\"\"\n",
|
|
" Initiate a chat with the critic user and return the last message received from the planner.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" - message (str): The message to be sent to the critic user.\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" - str: The content of the last message received.\n",
|
|
" \"\"\"\n",
|
|
" critic_user.initiate_chat(critic, message=message)\n",
|
|
" # return the last received from the planner\n",
|
|
" return critic_user.messagelast_message()[\"content\"]\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "6vPTtNkhk2V1"
|
|
},
|
|
"source": [
|
|
"# Run the Critic\n",
|
|
"\n",
|
|
"To run the critic, we need a couple of math problem examples. One of them failed to solve the problem successfully, given in `agenteval-in-out/response_failed.txt`, and the other one was solved successfully, i.e., `agenteval-in-out/response_successful.txt`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {
|
|
"id": "5H1WRs_wkiK0"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def read_without_groundtruth(file_name):\n",
|
|
" \"\"\"\n",
|
|
" Read the mathproblem logs - bypassing any information about the ground truths.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" - file_name (str): The single log file that wants to get evaluated.\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" - str: The log file without any information about the ground truth answer of the problem.\n",
|
|
" \"\"\"\n",
|
|
" f = open( file_name,\"r\").readlines()\n",
|
|
" output_dictionary = \"\"\n",
|
|
" for line in f:\n",
|
|
" if \"is_correct\" not in line and \"correct_ans\" not in line and \"check_result\" not in line:\n",
|
|
" output_dictionary += line\n",
|
|
" elif \"is_correct\" in line:\n",
|
|
" correctness = line.replace(\",\",\"\").split(\":\")[-1].rstrip().strip()\n",
|
|
" return [output_dictionary,correctness]\n",
|
|
"\n",
|
|
"# Reading one successful and one failed example of the task\n",
|
|
"response_successful = read_without_groundtruth(\"../test/test_files/agenteval-in-out/samples/sample_math_response_successful.txt\")[0]\n",
|
|
"response_failed = read_without_groundtruth(\"../test/test_files/agenteval-in-out/samples/sample_math_response_failed.txt\")[0]\n",
|
|
"\n",
|
|
"task = {\"name\": \"Math problem solving\",\n",
|
|
" \"description\": \"Given any question, the system needs to solve the problem as consisely and acccurately as possible\",\n",
|
|
" \"successful_response\" : response_successful,\n",
|
|
" \"failed_response\" : response_failed}\n",
|
|
"\n",
|
|
"sys_msg = f\"\"\"Task: {task[\"name\"]}.\n",
|
|
"Task description: {task[\"description\"]}\n",
|
|
"Task successfull example: {task[\"successful_response\"]}\n",
|
|
"Task failed example: {task[\"failed_response\"]}\n",
|
|
"\"\"\"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "Vu70o024lenI"
|
|
},
|
|
"source": [
|
|
"# The Criteria\n",
|
|
"Now, we print the designed criteria for assessing math problems. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "k9DsDB5hqvtG",
|
|
"outputId": "0edd7a0c-b031-4f67-efc6-1a1e77066921"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[33mcritic_user\u001b[0m (to critic):\n",
|
|
"\n",
|
|
"Task: Math problem solving.\n",
|
|
"Task description: Given any question, the system needs to solve the problem as consisely and acccurately as possible\n",
|
|
"Task successfull example: {\n",
|
|
" \"problem\": \"What is the sum of all the distinct positive two-digit factors of 144?\",\n",
|
|
" \"level\": \"Level 5\",\n",
|
|
" \"type\": \"Number Theory\",\n",
|
|
" \"solution\": \"Prime factorize $144=2^4\\\\cdot3^2$. The sum of the positive two-digit factors of 144 is $2^4+2\\\\cdot3^2+2^2\\\\cdot3+2^2\\\\cdot3^2+2^3\\\\cdot3+2^3\\\\cdot3^2+2^4\\\\cdot3=\\\\boxed{226}.$\",\n",
|
|
" \"problem_id\": \"0\",\n",
|
|
" \"response_with_ans\": \"To find the sum of all the distinct positive two-digit factors of 144, we need to first find all these factors. We can do this by iterating through the numbers from 10 to 99 and checking if they are factors of 144. Then, we can sum these factors and print their sum.\\n\\nHere's a Python script to accomplish this:\\n\\n```python\\ntwo_digit_factors = []\\n\\nfor i in range(10, 100):\\n if 144 % i == 0:\\n two_digit_factors.append(i)\\n\\nsum_of_factors = sum(two_digit_factors)\\nprint(\\\"The sum of all the distinct positive two-digit factors of 144 is:\\\", sum_of_factors)\\n```\\n\\nPlease run this script to find the desired sum.\",\n",
|
|
" \"round\": 0,\n",
|
|
" \"messages\": [\n",
|
|
" {\n",
|
|
" \"content\": \"What is the sum of all the distinct positive two-digit factors of 144?\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"To find the sum of all the distinct positive two-digit factors of 144, we need to first find all these factors. We can do this by iterating through the numbers from 10 to 99 and checking if they are factors of 144. Then, we can sum these factors and print their sum.\\n\\nHere's a Python script to accomplish this:\\n\\n```python\\ntwo_digit_factors = []\\n\\nfor i in range(10, 100):\\n if 144 % i == 0:\\n two_digit_factors.append(i)\\n\\nsum_of_factors = sum(two_digit_factors)\\nprint(\\\"The sum of all the distinct positive two-digit factors of 144 is:\\\", sum_of_factors)\\n```\\n\\nPlease run this script to find the desired sum.\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"time\": 11.140539407730103,\n",
|
|
" \"trial\": -1\n",
|
|
"}\n",
|
|
"Task failed example: {\n",
|
|
" \"problem\": \"Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\",\n",
|
|
" \"level\": \"Level 5\",\n",
|
|
" \"type\": \"Algebra\",\n",
|
|
" \"solution\": \"We have \\\\begin{align*} (2x+10)(x+3)&<(3x+9)(x+8) \\\\quad \\\\Rightarrow\\n\\\\\\\\ 2(x+5)(x+3)&<3(x+3)(x+8) \\\\quad \\\\Rightarrow\\n\\\\\\\\ 2(x+5)(x+3)-3(x+3)(x+8)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (2x+10-(3x+24))(x+3)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (-x-14)(x+3)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (x+14)(x+3)&>0.\\n\\\\end{align*} This inequality is satisfied if and only if $(x+14)$ and $(x+3)$ are either both positive or both negative. Both factors are positive for $x>-3$ and both factors are negative for $x<-14$. When $-14<x<-3$, one factor is positive and the other negative, so their product is negative. Therefore, the range of $x$ that satisfies the inequality is $ \\\\boxed{(-\\\\infty, -14)\\\\cup(-3,\\\\infty)} $.\",\n",
|
|
" \"problem_id\": \"0\",\n",
|
|
" \"response_with_ans\": \"I apologize for the confusion in my previous message. Let's find the factorized form of the quadratic using Python code.\\n\\n```python\\nfrom sympy import symbols, factor\\r\\nx = symbols('x')\\r\\nfactorized = factor(x**2 + 17*x + 42)\\r\\nfactorized\\r\\n```\\n\\nPlease run the Python code above to find the factorized form of the quadratic, and we can proceed to determine the intervals where the inequality holds true.\",\n",
|
|
" \"round\": 1,\n",
|
|
" \"messages\": [\n",
|
|
" {\n",
|
|
" \"content\": \"Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"First, let's simplify and isolate the inequality to solve for $x$. For this, we need to expand the expressions on both sides and then move everything to one side.\\n\\nStep 1: Expand the expressions on both sides\\n$(2x+10)(x+3) = 2x^2 + 6x + 10x + 30 = 2x^2 + 16x + 30$\\n$(3x+9)(x+8) = 3x^2 + 24x + 9x + 72 = 3x^2 + 33x + 72$\\n\\nStep 2: Move everything to one side\\n$0 < 3x^2 + 33x + 72 - (2x^2 + 16x + 30) = x^2 + 17x + 42$\\n\\nNow we need to find the factorized form of the quadratic inequality $x^2 + 17x + 42 > 0$ and then find intervals where the inequality holds true.\\n\\nLet's first find the factorized form of the quadratic:\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"I apologize for the confusion in my previous message. Let's find the factorized form of the quadratic using Python code.\\n\\n```python\\nfrom sympy import symbols, factor\\r\\nx = symbols('x')\\r\\nfactorized = factor(x**2 + 17*x + 42)\\r\\nfactorized\\r\\n```\\n\\nPlease run the Python code above to find the factorized form of the quadratic, and we can proceed to determine the intervals where the inequality holds true.\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"time\": 24.91333508491516,\n",
|
|
" \"trial\": -1\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[33mcritic\u001b[0m (to critic_user):\n",
|
|
"\n",
|
|
"{\n",
|
|
" \"accuracy\": {\n",
|
|
" \"description\": \"Measures the correctness of the problem solution\",\n",
|
|
" \"accepted_values\": [\"correct\", \"incorrect\"]\n",
|
|
" },\n",
|
|
" \"conciseness\": {\n",
|
|
" \"description\": \"Determines if the solution is provided in the most concise way possible\",\n",
|
|
" \"accepted_values\": [\"not concise\", \"fairly concise\", \"very concise\"]\n",
|
|
" },\n",
|
|
" \"problem_solving_time\": {\n",
|
|
" \"description\": \"Measures the time taken by the system to solve the problem\",\n",
|
|
" \"accepted_values\": [\"0-1 minutes\", \"1-5 minutes\", \"5-10 minutes\", \"10+ minutes\"]\n",
|
|
" },\n",
|
|
" \"clarity\": {\n",
|
|
" \"description\": \"Assesses the clarity of the solution provided by the system\",\n",
|
|
" \"accepted_values\": [\"not clear\", \"fairly clear\", \"very clear\"]\n",
|
|
" },\n",
|
|
" \"difficulty_level\": {\n",
|
|
" \"description\": \"The level of difficulty of the problem\",\n",
|
|
" \"accepted_values\": [\"level 1\", \"level 2\", \"level 3\", \"level 4\", \"level 5\"]\n",
|
|
" },\n",
|
|
" \"mathematics_discipline\": {\n",
|
|
" \"description\": \"The branch of mathematics the problem belongs to e.g algebra, number theory\",\n",
|
|
" \"accepted_values\": [\"algebra\", \"number theory\", \"calculus\", \"geometry\", \"statistics\", \"combinatorics\"]\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"current_task_name = '_'.join(task[\"name\"].split()).lower()\n",
|
|
"gen_criteria = critic_user.initiate_chat(critic, message=sys_msg)\n",
|
|
"criteria = critic_user.last_message()\n",
|
|
"cr_file = open(f\"../test/test_files/agenteval-in-out/{current_task_name}_criteria.json\",\"w\")\n",
|
|
"cr_file.write(criteria[\"content\"])\n",
|
|
"cr_file.close()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "PETPZluOEGCR"
|
|
},
|
|
"source": [
|
|
"*Note :* You can also define and use your own criteria by editing `criteria.txt`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "SmpUZv_ylo9U"
|
|
},
|
|
"source": [
|
|
"# The `QuantifierAgent`\n",
|
|
"\n",
|
|
"Once we have the criteria, we need to quantify a new sample based on the designed criteria and its accepted values. This will be done through `QuantifierAgent` agent as follows. \n",
|
|
"We note that can skip the designed creteria by the agent and use your own defined criteria in `criteria_file`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {
|
|
"id": "4uUkZJh_subA"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"\n",
|
|
"criteria_file = f\"../test/test_files/agenteval-in-out/{current_task_name}_criteria.json\"\n",
|
|
"quantifier = autogen.AssistantAgent(\n",
|
|
" name = \"quantifier\",\n",
|
|
" llm_config = {\"config_list\": config_list},\n",
|
|
" system_message = \"\"\"You are a helpful assistant. You quantify the output of different tasks based on the given criteria.\n",
|
|
" The criterion is given in a dictionary format where each key is a dintinct criteria.\n",
|
|
" The value of each key is a dictionary as follows {\"description\": criteria description , \"accepted_values\": possible accepted inputs for this key}\n",
|
|
" You are going to quantify each of the crieria for a given task based on the task decription.\n",
|
|
" Return a dictionary where the keys are the criteria and the values are the assessed performance based on accepted values for each criteria.\n",
|
|
" Return only the dictionary.\"\"\"\n",
|
|
")\n",
|
|
"\n",
|
|
"quantifier_user = autogen.UserProxyAgent(\n",
|
|
" name = \"quantifier_user\",\n",
|
|
" max_consecutive_auto_reply = 0, # terminate without auto-reply\n",
|
|
" human_input_mode = \"NEVER\",\n",
|
|
")\n",
|
|
"\n",
|
|
"dictionary_for_eval = open(criteria_file,\"r\").read()\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "64rRJfB2l6lO"
|
|
},
|
|
"source": [
|
|
"## Running the quantifier on a single test case"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {
|
|
"id": "zQ0H3sy8l-Ai"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"\n",
|
|
"def get_quantifier(file,criteria_file):\n",
|
|
" \"\"\"\n",
|
|
" Running quantifier agent on individual log.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" - file (str): The log path.\n",
|
|
" - file (str): The criteria jason file path\n",
|
|
" Returns:\n",
|
|
" - dict: A dictionary including the actual success of the problem as well as estimated performance by the agent eval.\n",
|
|
" {\"actual_success\":actual_label, \"estimated_performance\" : a dictionary of all the criteria and their quantified estimated performance.} }\n",
|
|
" \"\"\"\n",
|
|
" dictionary_for_eval = open(criteria_file,\"r\").read()\n",
|
|
"\n",
|
|
" test_case , actual_label = read_without_groundtruth(file)\n",
|
|
" print(\"actual label for this case: \", actual_label)\n",
|
|
" cq_results = quantifier_user.initiate_chat(quantifier, message = sys_msg + \\\n",
|
|
" \"Evaluation dictionary: \" + str(dictionary_for_eval) +\\\n",
|
|
" \"actual test case to evaluate: \" + test_case)\n",
|
|
" quantified_results = quantifier_user.last_message()\n",
|
|
" return {\"actual_success\": actual_label, \"estimated_performance\": quantified_results[\"content\"]}\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Here, we run the quantifier on a single math problem test case, `sample_test_case.json`, for demonstration."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "Pf623aNbHZTG",
|
|
"outputId": "0031871b-a438-43f5-d2b2-c99fa1ad0dbd"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"actual label for this case: true\n",
|
|
"\u001b[33mquantifier_user\u001b[0m (to quantifier):\n",
|
|
"\n",
|
|
"Task: Math problem solving.\n",
|
|
"Task description: Given any question, the system needs to solve the problem as consisely and acccurately as possible\n",
|
|
"Task successfull example: {\n",
|
|
" \"problem\": \"What is the sum of all the distinct positive two-digit factors of 144?\",\n",
|
|
" \"level\": \"Level 5\",\n",
|
|
" \"type\": \"Number Theory\",\n",
|
|
" \"solution\": \"Prime factorize $144=2^4\\\\cdot3^2$. The sum of the positive two-digit factors of 144 is $2^4+2\\\\cdot3^2+2^2\\\\cdot3+2^2\\\\cdot3^2+2^3\\\\cdot3+2^3\\\\cdot3^2+2^4\\\\cdot3=\\\\boxed{226}.$\",\n",
|
|
" \"problem_id\": \"0\",\n",
|
|
" \"response_with_ans\": \"To find the sum of all the distinct positive two-digit factors of 144, we need to first find all these factors. We can do this by iterating through the numbers from 10 to 99 and checking if they are factors of 144. Then, we can sum these factors and print their sum.\\n\\nHere's a Python script to accomplish this:\\n\\n```python\\ntwo_digit_factors = []\\n\\nfor i in range(10, 100):\\n if 144 % i == 0:\\n two_digit_factors.append(i)\\n\\nsum_of_factors = sum(two_digit_factors)\\nprint(\\\"The sum of all the distinct positive two-digit factors of 144 is:\\\", sum_of_factors)\\n```\\n\\nPlease run this script to find the desired sum.\",\n",
|
|
" \"round\": 0,\n",
|
|
" \"messages\": [\n",
|
|
" {\n",
|
|
" \"content\": \"What is the sum of all the distinct positive two-digit factors of 144?\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"To find the sum of all the distinct positive two-digit factors of 144, we need to first find all these factors. We can do this by iterating through the numbers from 10 to 99 and checking if they are factors of 144. Then, we can sum these factors and print their sum.\\n\\nHere's a Python script to accomplish this:\\n\\n```python\\ntwo_digit_factors = []\\n\\nfor i in range(10, 100):\\n if 144 % i == 0:\\n two_digit_factors.append(i)\\n\\nsum_of_factors = sum(two_digit_factors)\\nprint(\\\"The sum of all the distinct positive two-digit factors of 144 is:\\\", sum_of_factors)\\n```\\n\\nPlease run this script to find the desired sum.\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"time\": 11.140539407730103,\n",
|
|
" \"trial\": -1\n",
|
|
"}\n",
|
|
"Task failed example: {\n",
|
|
" \"problem\": \"Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\",\n",
|
|
" \"level\": \"Level 5\",\n",
|
|
" \"type\": \"Algebra\",\n",
|
|
" \"solution\": \"We have \\\\begin{align*} (2x+10)(x+3)&<(3x+9)(x+8) \\\\quad \\\\Rightarrow\\n\\\\\\\\ 2(x+5)(x+3)&<3(x+3)(x+8) \\\\quad \\\\Rightarrow\\n\\\\\\\\ 2(x+5)(x+3)-3(x+3)(x+8)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (2x+10-(3x+24))(x+3)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (-x-14)(x+3)&<0 \\\\quad \\\\Rightarrow\\n\\\\\\\\ (x+14)(x+3)&>0.\\n\\\\end{align*} This inequality is satisfied if and only if $(x+14)$ and $(x+3)$ are either both positive or both negative. Both factors are positive for $x>-3$ and both factors are negative for $x<-14$. When $-14<x<-3$, one factor is positive and the other negative, so their product is negative. Therefore, the range of $x$ that satisfies the inequality is $ \\\\boxed{(-\\\\infty, -14)\\\\cup(-3,\\\\infty)} $.\",\n",
|
|
" \"problem_id\": \"0\",\n",
|
|
" \"response_with_ans\": \"I apologize for the confusion in my previous message. Let's find the factorized form of the quadratic using Python code.\\n\\n```python\\nfrom sympy import symbols, factor\\r\\nx = symbols('x')\\r\\nfactorized = factor(x**2 + 17*x + 42)\\r\\nfactorized\\r\\n```\\n\\nPlease run the Python code above to find the factorized form of the quadratic, and we can proceed to determine the intervals where the inequality holds true.\",\n",
|
|
" \"round\": 1,\n",
|
|
" \"messages\": [\n",
|
|
" {\n",
|
|
" \"content\": \"Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"First, let's simplify and isolate the inequality to solve for $x$. For this, we need to expand the expressions on both sides and then move everything to one side.\\n\\nStep 1: Expand the expressions on both sides\\n$(2x+10)(x+3) = 2x^2 + 6x + 10x + 30 = 2x^2 + 16x + 30$\\n$(3x+9)(x+8) = 3x^2 + 24x + 9x + 72 = 3x^2 + 33x + 72$\\n\\nStep 2: Move everything to one side\\n$0 < 3x^2 + 33x + 72 - (2x^2 + 16x + 30) = x^2 + 17x + 42$\\n\\nNow we need to find the factorized form of the quadratic inequality $x^2 + 17x + 42 > 0$ and then find intervals where the inequality holds true.\\n\\nLet's first find the factorized form of the quadratic:\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"I apologize for the confusion in my previous message. Let's find the factorized form of the quadratic using Python code.\\n\\n```python\\nfrom sympy import symbols, factor\\r\\nx = symbols('x')\\r\\nfactorized = factor(x**2 + 17*x + 42)\\r\\nfactorized\\r\\n```\\n\\nPlease run the Python code above to find the factorized form of the quadratic, and we can proceed to determine the intervals where the inequality holds true.\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"time\": 24.91333508491516,\n",
|
|
" \"trial\": -1\n",
|
|
"}\n",
|
|
"Evaluation dictionary: {\n",
|
|
" \"accuracy\": {\n",
|
|
" \"description\": \"Measures the correctness of the problem solution\",\n",
|
|
" \"accepted_values\": [\"correct\", \"incorrect\"]\n",
|
|
" },\n",
|
|
" \"conciseness\": {\n",
|
|
" \"description\": \"Determines if the solution is provided in the most concise way possible\",\n",
|
|
" \"accepted_values\": [\"not concise\", \"fairly concise\", \"very concise\"]\n",
|
|
" },\n",
|
|
" \"problem_solving_time\": {\n",
|
|
" \"description\": \"Measures the time taken by the system to solve the problem\",\n",
|
|
" \"accepted_values\": [\"0-1 minutes\", \"1-5 minutes\", \"5-10 minutes\", \"10+ minutes\"]\n",
|
|
" },\n",
|
|
" \"clarity\": {\n",
|
|
" \"description\": \"Assesses the clarity of the solution provided by the system\",\n",
|
|
" \"accepted_values\": [\"not clear\", \"fairly clear\", \"very clear\"]\n",
|
|
" },\n",
|
|
" \"difficulty_level\": {\n",
|
|
" \"description\": \"The level of difficulty of the problem\",\n",
|
|
" \"accepted_values\": [\"level 1\", \"level 2\", \"level 3\", \"level 4\", \"level 5\"]\n",
|
|
" },\n",
|
|
" \"mathematics_discipline\": {\n",
|
|
" \"description\": \"The branch of mathematics the problem belongs to e.g algebra, number theory\",\n",
|
|
" \"accepted_values\": [\"algebra\", \"number theory\", \"calculus\", \"geometry\", \"statistics\", \"combinatorics\"]\n",
|
|
" }\n",
|
|
"}actual test case to evaluate: {\n",
|
|
" \"problem\": \"Find $24^{-1} \\\\pmod{11^2}$. That is, find the residue $b$ for which $24b \\\\equiv 1\\\\pmod{11^2}$.\\n\\nExpress your answer as an integer from $0$ to $11^2-1$, inclusive.\",\n",
|
|
" \"level\": \"Level 5\",\n",
|
|
" \"type\": \"Number Theory\",\n",
|
|
" \"solution\": \"Since $5 \\\\times 24 = 120 = 121 - 1$, it follows that $-5 \\\\times 24 \\\\equiv 1 \\\\pmod{121}$. Adding 121 to $-5$ to make it positive, we find $(-5 + 121) \\\\times 24 \\\\equiv 116 \\\\times 24 \\\\equiv 1 \\\\pmod{121}$, so it follows that the modular inverse of $24$ is $\\\\boxed{116}$ when taken modulo $121$.\",\n",
|
|
" \"problem_id\": \"5\",\n",
|
|
" \"response_with_ans\": \"To find the modular inverse of 24 modulo 11^2, we can use the Extended Euclidean Algorithm. Here is a Python function to compute the modular inverse using this algorithm:\\n\\n```python\\ndef mod_inverse(a, m):\\n g, x, _ = extended_gcd(a, m)\\n if g != 1:\\n raise Exception(f\\\"{a} and {m} are not coprime.\\\")\\n return x % m\\n\\ndef extended_gcd(a, b):\\n if a == 0:\\n return b, 0, 1\\n else:\\n g, x, y = extended_gcd(b % a, a)\\n return g, y - (b // a) * x, x\\n```\\n\\nLet's use the above function to find the modular inverse of 24 modulo 11^2:\\n\\n```python\\na = 24\\nm = 11**2\\nmod_inverse(a, m)\\n```\\n\\nI will execute the above code to find the modular inverse of 24 modulo 11^2.\",\n",
|
|
" \"round\": 0,\n",
|
|
" \"messages\": [\n",
|
|
" {\n",
|
|
" \"content\": \"Find $24^{-1} \\\\pmod{11^2}$. That is, find the residue $b$ for which $24b \\\\equiv 1\\\\pmod{11^2}$.\\n\\nExpress your answer as an integer from $0$ to $11^2-1$, inclusive.\",\n",
|
|
" \"role\": \"user\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"content\": \"To find the modular inverse of 24 modulo 11^2, we can use the Extended Euclidean Algorithm. Here is a Python function to compute the modular inverse using this algorithm:\\n\\n```python\\ndef mod_inverse(a, m):\\n g, x, _ = extended_gcd(a, m)\\n if g != 1:\\n raise Exception(f\\\"{a} and {m} are not coprime.\\\")\\n return x % m\\n\\ndef extended_gcd(a, b):\\n if a == 0:\\n return b, 0, 1\\n else:\\n g, x, y = extended_gcd(b % a, a)\\n return g, y - (b // a) * x, x\\n```\\n\\nLet's use the above function to find the modular inverse of 24 modulo 11^2:\\n\\n```python\\na = 24\\nm = 11**2\\nmod_inverse(a, m)\\n```\\n\\nI will execute the above code to find the modular inverse of 24 modulo 11^2.\",\n",
|
|
" \"role\": \"assistant\"\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"time\": 13.481226921081543,\n",
|
|
" \"trial\": -1\n",
|
|
"}\n",
|
|
"\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[33mquantifier\u001b[0m (to quantifier_user):\n",
|
|
"\n",
|
|
"{\n",
|
|
" \"accuracy\": \"correct\",\n",
|
|
" \"conciseness\": \"very concise\",\n",
|
|
" \"problem_solving_time\": \"10+ minutes\",\n",
|
|
" \"clarity\": \"very clear\",\n",
|
|
" \"difficulty_level\": \"level 5\",\n",
|
|
" \"mathematics_discipline\": \"number theory\"\n",
|
|
"}\n",
|
|
"\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"actual correctness: true\n",
|
|
"predicted coprrectness:\n",
|
|
" {\n",
|
|
" \"accuracy\": \"correct\",\n",
|
|
" \"conciseness\": \"very concise\",\n",
|
|
" \"problem_solving_time\": \"10+ minutes\",\n",
|
|
" \"clarity\": \"very clear\",\n",
|
|
" \"difficulty_level\": \"level 5\",\n",
|
|
" \"mathematics_discipline\": \"number theory\"\n",
|
|
"}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"test_case = \"../test/test_files/agenteval-in-out/samples/sample_test_case.json\"\n",
|
|
"quantifier_output = get_quantifier(test_case,criteria_file)\n",
|
|
"print(\"actual correctness:\" , quantifier_output[\"actual_success\"])\n",
|
|
"print(\"predicted coprrectness:\\n\" , quantifier_output[\"estimated_performance\"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "2VtdM44WEGCS"
|
|
},
|
|
"source": [
|
|
"# Run `AgentEval` on the logs\n",
|
|
"\n",
|
|
"In the example below, log_path points to the sample logs folder to run the quantifier. The current sample belongs to the prealgebra category which will be downloaded from [here](https://github.com/julianakiseleva/autogen/tree/agenteval/test/test_files/agenteval-in-out/samples).\n",
|
|
"In case you want to replicate the results described in the blog post, you can download all the logs for math problems using the following [link](https://github.com/julianakiseleva/autogen/tree/agenteval/model-logs/math-problems/agentchat). "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"!wget https://github.com/julianakiseleva/autogen/blob/agenteval/test/test_files/agenteval-in-out/samples/prealgebra.zip \n",
|
|
"!unzip z.zip -d ../test/test_files/agenteval-in-out/agentchat_results\n",
|
|
"!rm prealgebra.zip "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "dZdIbHPFEGCS",
|
|
"outputId": "83c0a51b-f184-494b-81a0-d4b4a3667319"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# You can set your own log path - we also limited the number of samples to avoid additional costs.\n",
|
|
"# By removing the condition about limitations on the number of samples per category, you can run it on all 120 problems\n",
|
|
"\n",
|
|
"log_path = \"../test/test_files/agenteval-in-out/agentchat_results/\"\n",
|
|
"criteria_file = \"../test/test_files/agenteval-in-out/samples/sample_math_criteria.json\"\n",
|
|
"outcome = {}\n",
|
|
"\n",
|
|
"for prefix in os.listdir(log_path):\n",
|
|
" for file_name in os.listdir(log_path+\"/\"+prefix):\n",
|
|
" gameid = prefix+\"_\"+file_name\n",
|
|
" if file_name.split('.')[-1]=='json':\n",
|
|
" outcome[gameid] = get_quantifier(log_path+\"/\"+prefix+\"/\"+file_name,criteria_file)\n",
|
|
"\n",
|
|
"# store the evaluated problems\n",
|
|
"with open(\"../test/test_files/agenteval-in-out/evaluated_problems.json\",\"w\") as file:\n",
|
|
" json.dump(outcome,file,indent=2) # use `json.loads` to do the reverse"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "qbrRRiP_EGCT"
|
|
},
|
|
"source": [
|
|
"## Plotting the estimated performance"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Here you can find an example of how to visualize the obtained result in the histogram form (similar to the one in the blog post)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "LKu2xZJcEGCT",
|
|
"outputId": "7780bc7c-382f-4ad3-b8c6-ac6051302303"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import scipy.stats as stats\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"# computing average and 95% interval for failed and successful cases on all criteria\n",
|
|
"try:\n",
|
|
" # convert the criteria to dict type if it is already not\n",
|
|
" dictionary_for_eval = eval(open(criteria_file,'r').read())\n",
|
|
"except:\n",
|
|
" pass\n",
|
|
"\n",
|
|
"criteria = list(dictionary_for_eval.keys())\n",
|
|
"nl2int = {}\n",
|
|
"for criterion in dictionary_for_eval:\n",
|
|
" score = 0\n",
|
|
" for v in dictionary_for_eval[criterion][\"accepted_values\"]:\n",
|
|
" nl2int[v] = score\n",
|
|
" score += 1\n",
|
|
"print(nl2int)\n",
|
|
"\n",
|
|
"average_s = {}\n",
|
|
"average_f = {}\n",
|
|
"\n",
|
|
"conf_interval_s = {}\n",
|
|
"conf_interval_f = {}\n",
|
|
"\n",
|
|
"for criterion in criteria:\n",
|
|
" task={\"s\": [] , \"f\" : []}\n",
|
|
"\n",
|
|
" for game in outcome:\n",
|
|
" try:\n",
|
|
" tmp_dic = eval(outcome[game][\"estimated_performance\"])\n",
|
|
" if outcome[game][\"actual_success\"] == \"false\":\n",
|
|
" task[\"f\"].append(nl2int[tmp_dic[criterion]])\n",
|
|
" else:\n",
|
|
" task[\"s\"].append(nl2int[tmp_dic[criterion]])\n",
|
|
" except:\n",
|
|
" pass\n",
|
|
"\n",
|
|
" \n",
|
|
" average_f[criterion] = np.mean(task['f'])\n",
|
|
" average_s[criterion] = np.mean(task['s'])\n",
|
|
"\n",
|
|
" conf_interval_s[criterion] = stats.norm.interval(0.95, loc=np.mean(task['s']), scale=stats.sem(task['s']))\n",
|
|
" conf_interval_f[criterion] = stats.norm.interval(0.95, loc=np.mean(task['f']), scale=stats.sem(task['f']))\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The final plot would be saved in `../test/test_files/agenteval-in-out/estimated_performance.png`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 695
|
|
},
|
|
"id": "zqa86vwgEGCT",
|
|
"outputId": "248cd0bc-0927-4d9f-b911-088bd76acf5d"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABI8AAAMVCAYAAAD+r9SpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gUVd/G8XtJJwkhEEpCSaihV2lSQpEmRVC6tAcUBMWCiChIURBB4MFGEbDQiyBKL1IEqQLSQWlKCb1DCAHO+wdP9mXZTEiWFJDv57pyXdnZMzO/nezMzt45M8dmjDECAAAAAAAA4pAmtQsAAAAAAADAo4vwCAAAAAAAAJYIjwAAAAAAAGCJ8AgAAAAAAACWCI8AAAAAAABgifAIAAAAAAAAlgiPAAAAAAAAYInwCAAAAAAAAJYIjwAAAAAAAGCJ8AhIAZ9//rlsNpuKFCmS2qU8Ms6cOSNPT0+1aNHCss3ly5eVNm1aNWzYMMHL/e6772Sz2XTkyJEkqDL13Lx5U6+88oqCg4Pl5uamEiVKWLadNm2aqlSpoixZssjLy0shISFq0KCB1q1b91A1hIWFqX379vbHq1atks1m06pVqxzaffHFF8qbN688PT1ls9l08eJFSVKfPn2UM2dOubu7K3369A9VS3Las2eP+vfvn+D3TP/+/WWz2XT27NnkLcxFsfXdq2rVqqpatWrqFIQEiWv/Wrhwofr37x9ne5vNptdee83l9UVGRqp9+/bKnDmzvL29VaxYMU2YMMGpXewxNa6fkydPOrQdPXq0wsLCFBgYqNatW9uPBbFu3bqlEiVKqG/fvomqNTo6Wl9++aUqVaqkwMBAeXp6Klu2bGrWrJlWr16d6NeeWHEdyxK6Tx05ckQ2m03fffddstaY3GJfx7Bhw1yaf9SoUY/VNrj/8+/fJr7PvapVqz4256uJqdVms1keTwEkjHtqFwA8Cb755htJ0u7du7Vx40aVK1culStKfZkyZVLDhg01d+5cXbhwQYGBgU5tpk+frqioKHXs2DEVKkxdo0eP1tixY/XFF1+odOnS8vPzs2x77tw5VaxYUW+88YaCgoIUGRmpESNGqEqVKvrll18UERGRJDWVKlVK69evV6FChezT/vjjD73++ut66aWX1K5dO7m7u8vf318//fSTBg0apN69e6tu3bry8vJKkhqSw549ezRgwABVrVpVYWFhqV1Oshg1alRql4AHiGv/Wrhwob766qsk/8Jz6dIlVapUSTdv3tTQoUMVHBysadOm6aWXXtKlS5fUvXt3p3m+/fZbFShQwGFaxowZ7b//+uuv6tatm4YPH668efPqrbfeUo8ePTR+/Hh7mxEjRuj69evq3bt3gms9e/as6tSpox07dqhDhw565513lCFDBh0/flw//fSTatSooS1btqh48eIubIkHszqWsU8lzqhRoxQUFPSvDmQeJ0/C5x6ApEd4BCSz33//Xdu3b1e9evW0YMECTZgwIcXDI2OMbty4IR8fnxRd74N07NhRs2fP1pQpU+L8D/o333yjLFmyqF69eqlQXeratWuXfHx8EtSzIK42devWVaZMmTRhwoQkC4/SpUun8uXLO0zbvXu3JOnll19W2bJl7dN37dolSXr99deVOXPmJFn/9evXlTZt2iRZ1pPm3kACj6a49q/kMnr0aB06dEi///67SpcuLUmqXbu2IiMj1bdvX3Xo0MGpt2CRIkX01FNPWS5zwYIFqlGjht544w1JcgqhDh8+rAEDBmj+/PmJCpPbtm2r7du3a8mSJapevbrDcy1atFD37t3j/OdDUrE6lrFPpb5H9dwGrouKipK3t7dT71kAjwYuWwOSWexlAJ988omefvppTZ8+XdevX5ckxcTEKHPmzGrTpo3TfBcvXpSPj4/Dyffly5fVo0cP5cqVy95t/80339S1a9cc5o29nGHMmDEqWLCgvLy89P3330uSBgwYoHLlyilDhgxKly6dSpUqpQkTJsgY47CM6Ohovf3228qaNavSpk2rKlWqaMuWLXF25T558qQ6d+6s7Nmzy9PTU7ly5dKAAQN069ateLdN7dq1lT17dn377bdOz+3du1cbN25U27Zt5e7urmXLlum5555T9uzZ5e3trbx586pz584JunTIqvt5XJcdJHQbz5o1S+XKlVNAQIDSpk2r3Llzq0OHDg+s5caNG3rvvfcclv/qq686XN5hs9k0fvx4RUVF2S8PSWx3f39/f3l7e8vd/cH/I4iJiVHPnj3tf+tKlSpp06ZNTu3uv6ymatWqat26tSSpXLlystlsat++vcLCwtSnTx9JUpYsWZy6is+YMUMVKlSQr6+v/Pz8VLt2bW3bts1hXe3bt5efn5927typWrVqyd/fXzVq1JB095K+gQMHqkCBAvLy8lKmTJn0n//8R2fOnHFYRlhYmOrXr6/FixerVKlS8vHxUYECBew9AaW7l+Q0bdpUklStWrVEbe+jR4/q+eefV7p06RQQEKDWrVs71TBjxgzVqlVLwcHB8vHxUcGCBdWrVy+n99OhQ4fUokULhYSEyMvLS1myZFGNGjX0xx9/OC3vQdsuLve/1++9BGXEiBHKlSuX/Pz8VKFCBW3YsMFp/t9//10NGzZUhgwZ5O3trZIlS2rmzJkOba5fv27fd7y9vZUhQwY99dRTmjZt2gPrO378uDp16qQcOXLI09NTISEhatKkiU6dOiXp7n7z9ttvq0SJEgoICFCGDBlUoUIF/fTTT07LSsi+mZz7edOmTVW4cGGHaQ0aNJDNZtOsWbPs07Zu3SqbzaZ58+ZJct6/2rdvr6+++kqSHC4Vu/8yk0mTJqlgwYJKmzatihcvrvnz58dbnyT99ttvypIliz04ilW/fn1du3ZNixcvfuAy7nfjxg35+vraH/v5+enGjRv2x126dFHz5s1VrVq1BC9zy5YtWrRokTp27OgUHMUqU6aMcubMaX+8a9cuPffccwoMDJS3t7dKlChh//yLFbutp02bpt69eyskJETp0qXTM888o/3799vbxXcsi+vz48SJE2rWrJn8/f0VEBCg5s2bO13aFysh+1TsJYMrV65Uly5dFBQUpIwZM+r555/XiRMnnJY5depUVahQQX5+fvLz81OJEiWcLkVcvny5atSooXTp0ilt2rSqWLGifvnllzhrfJCE1hcWFqbdu3dr9erV9vfxvb1dHubcZvz48Qk+j0rMceR+d+7c0cCBAxUeHi4fHx+lT59exYoV02effebStrMS+7k1f/58lSxZ0v65Ebtff/fddypYsKB8fX1VtmxZ/f777w7z//7772rRooXCwsLk4+OjsLAwtWzZUn///be9TUI/9zZv3qzKlSvbj32ffPKJ7ty588DXEPt3Gjt2rPLnzy8vLy8VKlRI06dPd2gX+/5ZunSpOnTooEyZMilt2rSKjo7WnTt3NHToUPvnfObMmdW2bVsdO3YsznWuWbNG5cuXl4+Pj7Jly6YPPvhAt2/ffmCtCTl/jf28/PTTTzVkyBD7tq1atar+/PNPxcTEqFevXgoJCVFAQIAaN26s06dPO6xnxYoVqlq1qjJmzCgfHx/lzJlTL7zwgv37APDYMACSzfXr101AQIApU6aMMcaY8ePHG0nmu+++s7d56623jI+Pj7l06ZLDvKNGjTKSzI4dO4wxxly7ds2UKFHCBAUFmREjRpjly5ebzz77zAQEBJjq1aubO3fu2OeVZLJly2aKFStmpk6dalasWGF27dpljDGmffv2ZsKECWbZsmVm2bJl5qOPPjI+Pj5mwIABDutv2bKlSZMmjenVq5dZunSpGTlypMmRI4cJCAgw7dq1s7eLjIw0OXLkMKGhoWbs2LFm+fLl5qOPPjJeXl6mffv2D9xGffr0MZLMH3/84TD9nXfeMZLM3r17jTHGjB492gwePNj8/PPPZvXq1eb77783xYsXN+Hh4ebmzZv2+b799lsjyRw+fNg+LTQ01KHmWBERESYiIsL+OKHbeN26dcZms5kWLVqYhQsXmhUrVphvv/3WtGnTJt7XeufOHVO7dm3j7u5uPvjgA7N06VIzbNgw4+vra0qWLGlu3LhhjDFm/fr15tlnnzU+Pj5m/fr1Zv369eb06dMP3Ja3bt0yN2/eNIcPHzadOnUyfn5+5vfff3/gfO3atTM2m8288847ZunSpWbEiBEmW7ZsJl26dA7bbeXKlUaSWblypTHGmN27d9v/ft9++61Zv369OXDggNm6davp2LGjkWQWL15s1q9fb44ePWqMMWbQoEHGZrOZDh06mPnz55s5c+aYChUqGF9fX7N7926Hmjw8PExYWJgZPHiw+eWXX8ySJUvM7du3TZ06dYyvr68ZMGCAWbZsmRk/frzJli2bKVSokLl+/bp9GaGhoSZ79uymUKFCZuLEiWbJkiWmadOmRpJZvXq1McaY06dPm48//thIMl999VWCtne/fv2MJBMaGmreeecds2TJEjNixAj73/He9+NHH31k/vvf/5oFCxaYVatWmTFjxphcuXKZatWqOSwzPDzc5M2b10yaNMmsXr3azJ4927z99tv2bZ2YbRdb373uf68fPnzYSDJhYWGmTp06Zu7cuWbu3LmmaNGiJjAw0Fy8eNHedsWKFcbT09NUrlzZzJgxwyxevNi0b9/e/neP1blzZ5M2bVozYsQIs3LlSjN//nzzySefmC+++MJyWxpjzLFjx0xwcLDDfjdjxgzToUMH+/5/8eJF0759ezNp0iSzYsUKs3jxYtOjRw+TJk0a8/3339uXlZB9M7n38zFjxhhJ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UZ48eZL8fllASmC0NSCZfPPNNzLG6IcfftAPP/zg9Pz333+vgQMHys3NTS1btlT37t313XffadCgQZo0aZIaNWrk8N+1oKAg+fj4OIRO9woKCnJ4HNdIFdOnT5eHh4fmz58vb29v+/S5c+c6tIs9aTh16pTDl4hbt245fRAHBQWpWLFiGjRoUJx1xZ60x+f5559XYGCgvvnmG0VERGj+/Plq27atfXj6Xbt2afv27fruu+/Url07+3wHDhx44LKlu71NoqOjnaafPXvWYbslZhs/99xzeu655xQdHa0NGzZo8ODBatWqlcLCwlShQoU458+YMaNu3bqlM2fOOARIxhidPHnS3tMhKbi7u6tUqVJON2CNqybp7k0jH/S3flix2++HH36w9xqLT1zv4dgbslrd0PfeXhjJzWqbxW7TFStW6MSJE1q1apXDiHf33hw9VmhoqP3Gtn/++admzpyp/v376+bNmxozZkyit11SiV3ve++9p+effz7ONuHh4ZIkX19fDRgwQAMGDNCpU6fsvZAaNGhg/0IXl0yZMlneBDXW5MmTlStXLs2YMcPhfRHXfv2gfTO593Ppbng0YcIEbdq0SRs3brTfdLl69epatmyZ/v77b/n5+aXY6GpxqVu3rv7++28dOHBAt27dUv78+e3HiypVqjxwfmOMw3/h7xcdHa3OnTvrgw8+UJ48ebRr1y4dOnRIPXr0kI+Pjzp16qT33ntP69evtxxRs3bt2nr//fc1d+5c1alT54E1ZcyYUZGRkU7TY2/efP/nZFLKmDFjnAMN3H/D7MTsUwkV+3ly7Ngxp15X96/3iy++sHzfxfUlPLklxbmNpASdRyXmOHI/d3d3de/eXd27d9fFixe1fPlyvf/++6pdu7aOHj1qORLovHnzHJafkHMiV126dEnz589Xv3791KtXL/v06Ohol4NBV8V1o/jYafcHU/f/TWOfj4yMdApET5w44fSeiA1GE7KueyXF+WtCVa5cWZUrV9bt27f1+++/64svvtCbb76pLFmy2K9OAB4HhEdAMrh9+7a+//575cmTR+PHj3d6fv78+Ro+fLgWLVqk+vXrKzAwUI0aNdLEiRNVoUIFp0u2pLuj4Hz88cfKmDGjcuXK5VJdNptN7u7uDpepREVFadKkSQ7tYr84zJgxQ6VKlbJP/+GHH5xGUKtfv74WLlyoPHnyuDxcsre3t1q1aqUxY8ZoyJAhiomJcXj9sScW9w/vPHbs2AQtPywsTDt27HCY9ueff2r//v0OJyGubGMvLy9FREQoffr0WrJkibZt22b5pbJGjRoaOnSoJk+erLfeess+ffbs2bp27Zp9NLGkcOPGDW3YsEF58+aNt13saEFTpkxxGHlp5syZDxwtL7Fq164td3d3HTx40KmbekLVr19f06dP1+3bt1WuXLkkqcvV3gZW2yx2m7r6vs2fP7/69Omj2bNna+vWrZKSZtu5Ijw8XPny5dP27dv18ccfJ3i+LFmyqH379tq+fbtGjhyp69evW365qlu3riZNmqT9+/dbfmm22Wzy9PR0+JJx8uTJeEdJsto3k3s/l+7u6zabTR988IHSpEljP6Y+88wzeuedd/T333+rSpUq8vDweOB6pbvvzeQYjtxmsylfvnyS7o5i+Nlnn6lEiRIPDI8OHz6s3377Ld6eUx9//LE8PT3Vo0cPSbKP6Hnt2jX5+/srJiZG0dHRTiN93qtUqVKqW7euJkyYoGbNmsU54trvv/+uzJkzK2fOnKpRo4Z+/PFHnThxwuGL38SJE5U2bdpkDeuqVaummTNn6ueff3a4hGbq1KkO7Vzdp+JTq1Ytubm5afTo0Zbvy4oVKyp9+vTas2ePXnvttSRZb2JY9VpJinMbSQk6j3LlOBKX9OnTq0mTJjp+/LjefPNNHTlyRIUKFYqzbdGiRRP/Ylxks9lkjHH6zBk/frzTyGMP08suIX755RedOnXKHkjevn1bM2bMUJ48eR7Y0zR2P588ebLDP9U2b96svXv32nvLx7py5Uqc+929x964JMX5a2K5ubmpXLlyKlCggKZMmaKtW7cSHuGxQngEJINFixbpxIkTGjJkiNNQvpJUpEgRffnll5owYYLq168v6W6X6xkzZui1115T9uzZnU7K33zzTc2ePVtVqlTRW2+9pWLFiunOnTv6559/tHTpUr399tsP/DJdr149jRgxQq1atVKnTp107tw5DRs2zOlEo3DhwmrZsqWGDx8uNzc3Va9eXbt379bw4cMVEBDg8N/mDz/8UMuWLdPTTz+t119/XeHh4bpx44aOHDmihQsXasyYMQ88UZDuXrr21VdfacSIESpQoICefvpp+3MFChRQnjx51KtXLxljlCFDBs2bN0/Lli174HIlqU2bNmrdurW6du2qF154QX///beGDh3qdPlYQrdx3759dezYMdWoUUPZs2fXxYsX9dlnnznczyYuNWvWVO3atfXuu+/q8uXLqlixonbs2KF+/fqpZMmScQ41nBBPP/20GjZsqIIFCyogIEBHjhzR6NGjdfDgQf3444/xzluwYEG1bt1aI0eOlIeHh5555hnt2rVLw4YNc7pk7GGFhYXpww8/VO/evXXo0CHVqVNHgYGBOnXqlDZt2mTvuRKfFi1aaMqUKXr22Wf1xhtvqGzZsvLw8NCxY8e0cuVKPffcc2rcuHGi6ipSpIgk6euvv5a/v7+8vb2VK1euB162N2fOHLm7u6tmzZravXu3PvjgAxUvXtx+ueXTTz+twMBAvfLKK+rXr588PDw0ZcoUbd++3WE5O3bs0GuvvaamTZsqX7588vT01IoVK7Rjxw77f4+TYtu5auzYsapbt65q166t9u3bK1u2bDp//rz27t2rrVu32oefL1eunOrXr69ixYopMDBQe/fu1aRJk1ShQgXL4Ei6ewxZtGiRqlSpovfff19FixbVxYsXtXjxYnXv3l0FChRQ/fr1NWfOHHXt2lVNmjTR0aNH9dFHHyk4ONjhsriE7JvJvZ9LUubMmVWkSBEtXbpU1apVs7/+Z555RufPn9f58+c1YsSIB2772C+eQ4YMUd26deXm5qZixYrZL4t4GN26dbMPHX3o0CF9/vnnOnbsmNN9Pp555hlVqVJFxYoVU7p06bRz504NHTpUNptNH330UZzL3rdvn4YOHaqVK1fa750WHh6u0NBQdenSRa+++qpmzJghd3f3BwY6EydOVJ06dVS3bl116NBBdevWVWBgoCIjIzVv3jxNmzZNW7ZsUc6cOdWvXz/7fUz69u2rDBkyaMqUKVqwYIGGDh2qgICAh95uVtq2bav//ve/atu2rQYNGqR8+fJp4cKFWrJkiVPbhO5TCRUWFqb3339fH330kaKiotSyZUsFBARoz549Onv2rAYMGCA/Pz998cUXateunc6fP68mTZooc+bMOnPmjLZv364zZ85o9OjRSbU5nBQtWlTTp0/XjBkzlDt3bnl7e6to0aJJcm4T60HnUQk9jsSlQYMGKlKkiJ566illypRJf//9t0aOHKnQ0FB7AJva0qVLpypVqujTTz9VUFCQwsLCtHr1ak2YMEHp06d3aOvq515CBQUFqXr16vrggw/k6+urUaNGad++fZo+ffoD5w0PD1enTp30xRdfKE2aNKpbt66OHDmiDz74QDly5HD455t0t3dRly5d9M8//yh//vxauHChxo0bpy5dujjc8/B+SXX++iBjxozRihUrVK9ePeXMmVM3btyw97R72EuXgRSXKrfpBv7lGjVqZDw9PeMd7rtFixbG3d3dPhrF7du3TY4cOYwk07t37zjnuXr1qunTp48JDw83np6eJiAgwBQtWtS89dZbDqNaKI4hSmN98803Jjw83Hh5eZncuXObwYMHmwkTJjiNUHbjxg3TvXt3kzlzZuPt7W3Kly9v1q9fbwICApxGmTpz5ox5/fXXTa5cuYyHh4fJkCGDKV26tOndu7e5evVqQjebKVmyZJyjkRljzJ49e0zNmjWNv7+/CQwMNE2bNjX//POP0+gZcY22dufOHTN06FCTO3du4+3tbZ566imzYsUKp9FyErqN58+fb+rWrWuyZctmPD09TebMmc2zzz5r1qxZ88DXGBUVZd59910TGhpqPDw8THBwsOnSpYvTcK2JGW3t7bffNsWLFzcBAQHG3d3dZM2a1TRu3Nj89ttvCZo/OjravP32205/6/tHm3nY0dZizZ0711SrVs2kS5fOeHl5mdDQUNOkSROHoaLje/0xMTFm2LBhpnjx4sbb29v4+fmZAgUKmM6dO5u//vrL3i40NNTUq1fPaf64/u4jR440uXLlMm5ubk4jI90v9rVt2bLFNGjQwPj5+Rl/f3/TsmVLc+rUKYe269atMxUqVDBp06Y1mTJlMi+99JLZunWrwzpOnTpl2rdvbwoUKGB8fX2Nn5+fKVasmPnvf//rMBJaQrddYkZbu3fkpFj371PGGLN9+3bTrFkzkzlzZuPh4WGyZs1qqlevbh9J0hhjevXqZZ566ikTGBhoP7689dZbCRqe/ejRo6ZDhw4ma9asxsPDw4SEhJhmzZo5bM9PPvnEhIWFGS8vL1OwYEEzbtw4p9ea0H0zufdzY4x56623jCQzaNAgh+n58uVzGD48Vlz7V3R0tHnppZdMpkyZjM1mczi2WR3nrUaXvN9zzz1ngoOD7X/P9u3bmyNHjji1e/PNN02hQoWMv7+/cXd3NyEhIaZ169Zm//79cS73zp07pnLlynHWtmXLFlO+fHnj6+trihYt+sDh4WNFRUWZzz//3FSoUMGkS5fOXsfzzz9vFixY4NB2586dpkGDBiYgIMB4enqa4sWLO+3Psdv63mHDjfn//eLe9gkdbc0YY44dO2ZeeOEF+zHhhRdeMOvWrYvzmJKQfcrq+BrXe8WYuyO8lilTxn5cLFmypNN6V69eberVq2cyZMhgPDw8TLZs2Uy9evWctsX94httLSH1HTlyxNSqVcv4+/vbhz2PlRTnNsYk7DwqIccRY5z3o+HDh5unn37aBAUFGU9PT5MzZ07TsWPHOPeZh2H1uRXXa4/rbxL7HgwMDDT+/v6mTp06ZteuXXEeF6w+9yIiIkzhwoWdamjXrp3D381KbK2jRo0yefLkMR4eHqZAgQJmypQpDu2s3j/G3P1bDhkyxOTPn994eHiYoKAg07p1a3P06FGHdrG1rlq1yjz11FPGy8vLBAcHm/fff99pNMO4PtsScv5q9XlpdRy5/3WtX7/eNG7c2ISGhhovLy+TMWNGExEREe8oecCjymZMPP2FAeAe69atU8WKFTVlyhSnEWQAAADwZLPZbHr11Vf15ZdfpnYpAJIYl60BiNOyZcu0fv16lS5dWj4+Ptq+fbs++eQT5cuXz/ImnwAAAACAfx/CIwBxSpcunZYuXaqRI0fqypUrCgoKUt26dTV48GCHkdoAAAAAAP9uXLYGAAAAAAAAS2ke3AQAAAAAAABPKsIjAAAAAAAAWCI8AgAAAAAAgCXCIwAAAAAAAFgiPAIAAAAAAIClRz486t+/v2w2m8NP1qxZU7ssAAAAAACAJ4J7aheQEIULF9by5cvtj93c3FKxGgAAAAAAgCfHYxEeubu709sIAAAAAAAgFTwW4dFff/2lkJAQeXl5qVy5cvr444+VO3fuONtGR0crOjra/vjOnTs6f/68MmbMKJvNllIlAwAAAAAAPNKMMbpy5YpCQkKUJo31nY1sxhiTgnUl2qJFi3T9+nXlz59fp06d0sCBA7Vv3z7t3r1bGTNmdGrfv39/DRgwIBUqBQAAAAAAePwcPXpU2bNnt3z+kQ+P7nft2jXlyZNHPXv2VPfu3Z2ev7/n0aVLl5QzZ04dPXpU6dKlS8lSAQAAAAAAHlmXL19Wjhw5dPHiRQUEBFi2eywuW7uXr6+vihYtqr/++ivO5728vOTl5eU0PV26dIRHAAAAAAAA93nQbX6sL2h7REVHR2vv3r0KDg5O7VIAAAAAAAD+9R758KhHjx5avXq1Dh8+rI0bN6pJkya6fPmy2rVrl9qlAQAAAAAA/Os98petHTt2TC1bttTZs2eVKVMmlS9fXhs2bFBoaGhqlwYAAAAAAPCv98iHR9OnT0/tEgAAAAAAAJ5Yj/xlawAAAAAAAEg9hEcAAAAAAACw9MhftgYAj7KYmBjdvn07tcsAAAD/cm5ubvLw8EjtMgA8oQiPAMAFly9f1tmzZxUdHZ3apQAAgCeEl5eXgoKClC5dutQuBcAThvAIABLp8uXLOn78uPz8/BQUFCQPDw/ZbLbULgsAAPxLGWMUExOjS5cu6fjx45JEgAQgRREeAUAinT17Vn5+fsqePTuhEQAASBE+Pj7y9/fXsWPHdPbsWcIjACmKG2YDQCLExMQoOjpaAQEBBEcAACBF2Ww2BQQEKDo6WjExMaldDoAnCOERACRC7M2xuWElAABIDbHnIAzYASAlER4BgAvodQQAAFID5yAAUgPhEQAAAAAAACwRHgEAAAAAAMAS4REAAKnotddeU6ZMmXT16tXULuVfa9WqVbLZbOrfv3+KrK9du3YKDQ3VjRs3UmR9SJibN2+qT58+ypMnjzw9PWWz2bRq1apEL+e7776TzWbTd9995zA9LCxMYWFhSVJrYtb7IBxjEq99+/ay2Ww6cuRIsq/r4sWLSp8+vXr27Jns6wKAh+Ge2gUAwL+NzTYstUuIkzE9UrsE3OfPP//U2LFj9fHHH8vPz88+/fr16xo9erS2bNmirVu36s8//5QxRocPH47zy+m5c+c0e/ZszZ8/X7t27dLx48fl7++vMmXK6M0331Tt2rVT8FXhgw8+0JQpU/Tf//5X7733XmqXkyBz9kemdgmWng8PTpLlDBs2TIMGDVLVqlXVsmVLubu7J2vY8yiwOsa0b99e33//fbzzfvjhh/rggw+Su8QnXvr06fXGG29oyJAh6tq167/+PQng8UV4BABAKhkwYIC8vLzUpUsXh+mnT59Wjx53w77Q0FAFBgbq/PnzlsuZNWuWunTpomzZsql69erKli2bjh07ptmzZ2vx4sX69NNP7ctD8subN68aNWqkIUOG6PXXX5evr29qlwRJCxculJ+fn5YuXfpQI2Y2btxY5cuXV3Bw0oRaycnqGNOoUSPLkGLYsGG6du0aoXMKeuONN/TJJ59o4MCBGj9+fGqXAwBxIjwCACAVnD17VrNnz1bTpk0degRIUlBQkJYuXarSpUsrQ4YMqlOnjpYsWWK5rPz582v+/PmqW7eu0qT5/yvS+/Tpo3Llyun9999Xq1atFBISkmyvB45at26t2bNna9q0aXrppZdSuxxIOnHihDJmzPhQwZEkBQQEKCAgIImqSj7xHWMaNWqkRo0aOc2zZcsWDRgwQEWLFlXZsmVTqFJkyJBBdevW1bRp0zR8+PDH4v0F4MnDPY8AAIkye/ZsRUREKHPmzPL29laOHDlUp04dzZ07194mvnvMHDlyRDabTe3bt3d6LrbHTXh4uLy9vZUhQwaVL19ew4cPd2q7Y8cOtW7dWtmzZ5eXl5eCg4NVp04dzZs3z6ntTz/9pBo1aigwMFDe3t4qUqSIhg0bptu3bzu0u3PnjsaPH6+yZcsqQ4YMSps2rcLCwtSoUSP9+uuvid4O8Zk2bZqio6PVtGlTp+f8/PxUs2ZNZciQIUHLql69uurVq+cQHElSeHi4mjdvrpiYGK1bty5By7p06ZL69u2rQoUKyc/PTwEBASpQoID+85//6OjRo/Z2J06cUL9+/VS+fHllzpxZXl5eCgsLU9euXXX69Gmn5cbeQ+TQoUMaNmyY8ufPLx8fHxUqVEjTp0+XJMXExKhv377KlSuXvL29VaxYsThDs6pVq8pms+nGjRvq2bOncuTIIW9vbxUtWlTffPNNgl5nrNOnT+utt95S3rx55eXlpaCgIL3wwgvatWuXU9u//vpL//nPf+z1BQUFqVSpUnr77bed2j777LPy9fXVt99+m6h6kPT69+8vm82mw4cP6++//5bNZpPNZlPVqlUl3X3PDxkyRBEREQoJCZGnp6dCQkLUtm1bHTx40Gl5ib33kDFG33zzjSpWrKh06dIpbdq0euqppyzfq+fPn9crr7yiLFmyKG3atCpTpox+/PHHRL/u+I4xVmJ7vXTs2DHB82zdulVNmjRRzpw55eXlpSxZsqhChQr65JNPHNqtXLlSHTp0UHh4uPz8/OTn56ennnpKX3/9dZzLjf0bHT9+XK1atVJQUJD8/f1Vr149HTp0SJK0f/9+NW7cWBkyZJC/v7+aNm3qdPy59zNn165dqlu3rgICApQuXTo1aNBAe/bsSfBrlaRff/1VDRo0UFBQkLy8vJQvXz716dNH169fd2qbmM+JZs2a6fr165o5c2ai6gGAlELPIwBAgo0ePVpdu3ZVcHCwGjdurIwZMyoyMlKbNm3S3Llz4/xPdkL99ddfqlatmo4fP65KlSqpUaNGunbtmnbt2qVBgwY5fEH/8ccf1bJlS925c0cNGjRQeHi4Tp8+rY0bN2rChAlq0KCBve3777+vwYMHK3v27HrhhReULl06/frrr3rnnXe0ceNGzZo1y972vffe09ChQ5UnTx61atVK/v7+On78uNasWaMVK1aoSpUqSbYdfvnlF0lS+fLlXd5mCRHby8Ld/cEf+cYY1a5dWxs3blTFihVVp04dpUmTRkeOHNGPP/6odu3aKUeOHJLufoEaPny4atSooXLlysnDw0Pbtm3T6NGjtWTJEm3dujXO/553795dGzduVIMGDeTm5qbp06erVatWCgwM1FdffaVdu3bp2Wef1Y0bNzR16lQ1bNhQ+/btU65cuZyW1bRpU+3YsUNNmzZVTEyMZs6cqY4dO+rUqVMJutfQwYMH7V9Oa9WqpUaNGun06dOaPXu2lixZol9++UXlypWTdDcsK1u2rK5du6Z69eqpefPmunr1qv766y998cUXTgGnp6enSpcurXXr1unatWtcupaKYkOikSNHSpLefPNNSbJftrV371717dtX1apVU+PGjeXr66t9+/Zp6tSpWrBggbZu3arQ0FCX1m2MUevWrTV16lTlz59frVq1kqenp5YtW6aOHTtqz549Gjbs/++Td/36dVWtWlU7d+5UhQoVFBERoaNHj6p58+aqVatWotad2GNMVFSUpk2bJi8vL7Vp0yZB8/zxxx96+umn5ebmpueee06hoaG6ePGidu/erXHjxqlXr172tkOGDNGBAwdUvnx5NW7cWBcvXtTixYvVuXNn7d+/P85/Ely4cEGVKlVS1qxZ1a5dO/3555+aP3++9u3bp59//lmVK1dWqVKl1KFDB23ZskU//PCDLl68qGXLljkt69ChQ6pYsaLKli2rrl276q+//tKPP/6otWvXat26dSpYsOADX++YMWPUtWtXBQYGqkGDBsqUKZM2b96sQYMGaeXKlVq5cqU8PT0lJf5zokKFCpKkFStW6OWXX07Q9geAlER4BABIsPHjx8vT01Pbt29XpkyZHJ47d+7cQy27devWOn78uL7++munE+djx47Zfz99+rTatm0rd3d3rVmzRiVLlrRsu2zZMg0ePFh169bV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nfuB80+bNk3VqlVTixYtNHLkSJUuXVre3t76559/tH79ep05c0Y3btyQJE2ZMkWjRo1S1apVlTdvXqVLl0579uzRwoULFRQUpA4dOjgs++DBgzp8+LC6dOmSLK8dSadbt27q1q2bSpYsqSZNmujWrVtatmyZjDEqXry45Wh/CdG5c2dt2LBB33//vX777Tc988wzCgkJ0alTp7Rv3z5t3LhRU6dOtV+C27NnT82ZM0fjxo3T7t27VaVKFR09elQzZ85UvXr14r0/1/0edIyR7oY8CxYsUJYsWdSgQYNEv77hw4dr2bJlqlatmnLnzi1vb29t3bpVv/zyi/LmzavGjRtLkho0aKCwsDANHTpUu3btUpEiRbR//37Nnz9fjRo10uzZsxO97sSqXLmyPv/8c23YsEFlypTRn3/+qR9//FEBAQH2kTnjU6RIEY0aNUpdunRReHi4nn32WeXJk0eXL1/WoUOHtHr1arVv315jxoyRlPjPidgeno0aNUry1w4AScL8y126dMlIMpcuXUrtUgD8C0RFRZk9e/aYqKio1C4lVYwaNco0bNjQhIaGGm9vb5MxY0ZTrlw5M3bsWBMTE+PQ9tatW6Zv374mR44cxtPT0+TPn9989tln5tChQ0aSadeundPyT548ad544w2TO3du4+npaTJkyGDKlStnRowY4dR227ZtplmzZiZLlizGw8PDBAcHm7p165r58+c7tV22bJlp0KCByZQpk/Hw8DBZs2Y1FSpUMB999JH5559/jDHG3Lx50wwZMsTUqlXLZM+e3Xh6eposWbKYiIgIM336dJe3Q3wKFChgihYtGudzoaGhRpLlz8qVK+1t+/XrF29bSaZfv34PrOfo0aOmV69epnz58iZz5szG09PT5MyZ0zRp0sRs3LjRoe3NmzfNoEGDTL58+YyXl5fJmTOn6d69u7ly5YoJDQ01oaGhDu3btWtnJJnDhw87rTciIsJYnZLEtazY9tevXzc9evQw2bJlM56enqZw4cJm/PjxTstYuXKl5TY4f/686dOnjylSpIjx8fExfn5+Jl++fKZVq1Zmzpw59nYbNmwwnTt3NkWKFDHp06c3Pj4+Jl++fOb111+3v4fu1b9/fyPJ/PHHH3G+LqS8uN5Lxhhz584dM2bMGFO4cGHj7e1tsmbNajp27GhOnToV53vz22+/NZLMt99+m6Dl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6fbt27z44osEBASwYMECzp8/T5kyZahduzbGGNatW8err75K5cqVOXLkyF++rqurK1WqVKFixYr3PDdjxgzGjh3rkPDokUceoUqVKpQtWzbbX1tERERyNxdHN0BERETkQUtNTaV58+Zs376dRx99lIiICDp16kT+/Pntx/zwww/MmjWLRYsWcfr0aWrVqvWXrl26dGmOHz/+TzX9b/Pz88uR7RIREZGHn8IjERERyXXGjh3L9u3bKVGiBDt37rxvfaLq1aszb948unfvjpOTJmOLiIiIZEXflERERCRXuXnzJrNmzQIylpH9WWHrgIAA/P39ARgzZgwWi4UxY8bwyy+/0L9/f8qXL4+rqyuvvPIKcP+C2UuWLMFisXD+/HkAKlSogMVisf/ZvHlzpte8ceMGI0eOpGbNmhQoUABPT0/q1avHggULsFqt97TxlVdewWKxsGTJEs6ePcsrr7xC6dKlcXFxYcyYMcAfF8zetWsXw4YNo27duhQvXhw3NzfKlClDSEgIR48e/fP/qSIiIpKnaeaRiIiI5Crr1q0jISGBYsWK8cILL/yta/zyyy/UrVuXixcvUqNGDby8vHB2ds7y+BIlSvDss8+yb98+kpOTqVu3Lm5ubvbnvby87D8fPXqUFi1acPHiRfLly0elSpVITk5mz5497N69mw0bNrBq1SosFss9r3PixAn+9a9/kZSURI0aNShYsOB9j/u97t27c/r0aYoUKULJkiUpVaoU586d4+OPP+bTTz/lq6++0i5tIiIikiWFRyIiIpKr7NixA4Bnn30WF5e/91Xngw8+wM/Pj+3bt+Pj4wPAnTt3sjy+VatWtGrVivLly3P+/HmioqLuO+MpMTGRdu3acfHiRQYMGMC4ceMoWLAgkFGDqXPnzqxevZq5c+fSr1+/e85/7733CAoKYvHixXh7e/9pu2xGjx5NQEAAvr6+9sfS0tL46KOPeO211+jduzenTp3S8j0RERG5L31DEBERkVzl4sWLQMbSsb/LxcWF1atX24MjAHd39/+5bR9++CGnT5+mQ4cOzJw50x4cQUYNpuXLl2OxWJg2bdp9zy9WrBjLly+3B0d/tV09evTIFBxBRh979+7NSy+9xJkzZ9i1a9ff7JWIiIjkdpp5JCIiIrlKQkICAAUKFPjb12jWrBmlSpV6UE2yW7NmDQB9+vS57/O1a9emfPnynDlzhp9//jlTeAXQsWPHv92v48ePExkZyZEjR7hx4wZpaWkA/PTTTwDExMTYaz+JiIiI3E3hkYiIiOQqnp6eQMYSsb+rWrVqD6o5mRw5cgTIWEY2YcKE+x5z7do1IGMG1e/Do7/brokTJzJq1Kj7FuO2uXHjxt+6toiIiOR+Co9EREQkVyldujQAZ8+e/dvX+F9mLf2RmzdvArB///4/PTYpKemex/5Ou7Zu3cqIESNwdnZm4sSJtG3blnLlyvHII49gsVgYNWoU48ePJzU19b++toiIiOQNqnkkIiIiuYpt6dWOHTvsS7NyCg8PDwBOnTqFMeYP/zyo3c8++eQTAMLCwhg+fDjVq1enQIEC9l3aLly48EBeR0RERHIvhUciIiKSqwQGBuLh4cHVq1dZvXp1tr62LZDJSvXq1QGIjY3NjuYAcO7cOYAs6xnFxMRkW1tERETk4aTwSERERHKVQoUK8cYbbwAwaNAge3iSle3bt7Njx44H8tr58+cH7r/kDCA4OBiAWbNmYYx5IK/5V9t05cqVe57bsGGDwiMRERH5UwqPREREJNcZM2YM9evX58qVK9SvX59ly5Zx586dTMecPHmSfv360ahRI65evfpAXtfX1xeALVu23Pf5vn374uvry3fffUe3bt2Ii4vL9Pxvv/3GqlWrGDx48ANpD0BAQAAAkyZNylQHau/evfTq1Qt3d/cH9loiIiKSOyk8EhERkVwnX758bNiwgY4dO3L58mV69OiBt7c3tWrVws/PDx8fH6pUqcLcuXN59NFHqVSp0gN53RdffBGA//f//h+1atWiUaNGNGrUiEOHDgEZNY/WrVtHhQoViIyMxMfHh+rVq1OvXj2qVKlCoUKFePHFFx/YTCiA0NBQfH19OX36NFWrVqV27dpUrVoVPz8/vLy8eP311x/Ya4mIiEjupPBIREREciUPDw9Wr17N1q1b6d27N2XKlOHcuXPExMRgjCEoKIhFixZx8uRJatas+UBeMyQkhJkzZ1K7dm1Onz7Nli1b2LJlC7/++qv9mKpVqxITE8OkSZN4+umnuXjxIocOHSIlJYWGDRsyZcoUVqxY8UDaA1CwYEG2bdtGjx49KFiwICdOnCAlJYXBgwezc+dOPD09H9hriYiISO5kMdm14F5ERERERERERB46mnkkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZUngkIiIiIiIiIiJZ+v8AQjK9N7po96QAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 1200x800 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Create a bar plot with error bars for the average values of \"s\" and \"f\" for each criterion\n",
|
|
"\n",
|
|
"plt.figure(figsize=(12, 8))\n",
|
|
"bar_width = 0.1\n",
|
|
"index = np.arange(len(criteria))\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.bar(index , list(average_s.values()), bar_width, label=f\"success ({len(task['s'])} samples)\", color=\"darkblue\", yerr=[(avg - conf_interval_s[key][0]) for key, avg in average_s.items()], capsize=5)\n",
|
|
"plt.bar(index + bar_width, list(average_f.values()), bar_width, label=f\"failed ({len(task['f'])} samples)\", color=\"lightblue\", yerr=[(avg - conf_interval_f[key][0]) for key, avg in average_f.items()], capsize=5)\n",
|
|
"\n",
|
|
"plt.xlabel(\"Criteria\", fontsize=16)\n",
|
|
"plt.ylabel(\"Average Value\", fontsize=16)\n",
|
|
"plt.title(\"Average Values of 3 different baselines cases with 95% Confidence Intervals - math problems \", fontsize=12, pad=10) # Adjust titlepad to move the title further above\n",
|
|
"plt.xticks(index + bar_width / 2, criteria, rotation=45, fontsize=14)\n",
|
|
"plt.legend(loc=\"upper center\", fontsize=14, bbox_to_anchor=(0.5, 1), ncol=3) # Adjust legend placement and ncol\n",
|
|
"plt.tight_layout() # Adjust subplot parameters to fit the labels\n",
|
|
"plt.ylim(0,5)\n",
|
|
"plt.savefig(\"../test/test_files/agenteval-in-out/estimated_performance.png\")\n",
|
|
"plt.show()\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"provenance": []
|
|
},
|
|
"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.9"
|
|
},
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|