{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "-pftZ-ZF1_BA"
},
"source": [
""
]
},
{
"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 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 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//9t0aOHKnQ0FB7AJva0qVLpypVqujTTz9VUFCQwsLCtHr1ak2YMEHp06d3aOvq515CBQUFqXr1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lELPIwBAgo0ePVpdu3ZVcHCwGjdurIwZMyoyMlKbNm3S3Llz4/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": [
""
]
},
"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
}