mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-07-19 22:43:37 -04:00
989 lines
161 KiB
Plaintext
989 lines
161 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"attachments": {
|
|
"fb3f0be0-4884-4ad2-b9b3-cf92cfc51273.png": {
|
|
"image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj4xMDM2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CmRPDiAAAEAASURBVHgB7J0JnI3VG8cfZgaDsQxjH8a+889OCNGisrUQ2UoqlRIilb0oCaWEIpStUiokZUt2su/rWAYzjJmxzZjhf37nzrnu3DvLnZk7++/5fO7c9573vGf53jvvvec5z5LtrhKhkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIANgew2xzwkARIgARIgARIgARIgARIgARIgARIgAU2ACgN+EEiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABFKNwMGDB+Xzzz+X0NDQVOuTHSWNABUGSePGq0iABEiABEiABEggSQQiIu/IkYBrEnozMknXx3XRhz8dlt6f75DTgTfiqpKs8jt3RW5F3InzcVvNK7PKHv8QeWzUvzJm8aF0O8WQG5H6c2X/PqzcdVF/LpZuC0jVsS/ZfF73+/eeS6naLzvLGAR69+4tn3zyiWzYsCFjDDgLj9I9C8+dUycBEiABEiABEiCBVCOw8XCQjFl4WK5c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"
|
|
}
|
|
},
|
|
"cell_type": "markdown",
|
|
"id": "16dc0e41-80bd-4453-b421-dcf315741bf4",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Code generation with flow\n",
|
|
"\n",
|
|
"AlphaCodium presented an approach for code generation [that uses a`flow` paradigm to construct an answer to a coding question iteratively.](https://x.com/karpathy/status/1748043513156272416?s=20). \n",
|
|
"\n",
|
|
"[AlphaCodium](https://github.com/Codium-ai/AlphaCodium) iteravely tests and improves an answer on public and AI-generated tests for a particular question. \n",
|
|
"\n",
|
|
"We will implement some of these ideas from scratch using [LangGraph](https://python.langchain.com/docs/langgraph):\n",
|
|
"\n",
|
|
"1. We start with a set of documentation specified by a user\n",
|
|
"2. We use a long context LLM to ingest it, and answer a question based upon it \n",
|
|
"3. We perform two unit tests: Check imports and code execution\n",
|
|
"\n",
|
|
""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "e3900420",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
" ! pip install -U langchain_community langchain-openai langchain-anthropic langchain langgraph"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "38330223-d8c8-4156-82b6-93e63343bc01",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Documentation\n",
|
|
"\n",
|
|
"Load [LangChain Expression Language](https://python.langchain.com/docs/expression_language/) (LCEL) docs."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "c2eb35d1-4990-47dc-a5c4-208bae588a82",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from bs4 import BeautifulSoup as Soup\n",
|
|
"from langchain_community.document_loaders.recursive_url_loader import RecursiveUrlLoader\n",
|
|
"\n",
|
|
"# LCEL docs\n",
|
|
"url = \"https://python.langchain.com/docs/expression_language/\"\n",
|
|
"loader = RecursiveUrlLoader(\n",
|
|
" url=url, max_depth=20, extractor=lambda x: Soup(x, \"html.parser\").text\n",
|
|
")\n",
|
|
"docs = loader.load()\n",
|
|
"\n",
|
|
"# LCEL w/ PydanticOutputParser (outside the primary LCEL docs)\n",
|
|
"url = \"https://python.langchain.com/docs/modules/model_io/output_parsers/quick_start\"\n",
|
|
"loader = RecursiveUrlLoader(\n",
|
|
" url=url, max_depth=1, extractor=lambda x: Soup(x, \"html.parser\").text\n",
|
|
")\n",
|
|
"docs_pydantic = loader.load()\n",
|
|
"\n",
|
|
"# LCEL w/ Self Query (outside the primary LCEL docs)\n",
|
|
"url = \"https://python.langchain.com/docs/modules/data_connection/retrievers/self_query/\"\n",
|
|
"loader = RecursiveUrlLoader(\n",
|
|
" url=url, max_depth=1, extractor=lambda x: Soup(x, \"html.parser\").text\n",
|
|
")\n",
|
|
"docs_sq = loader.load()\n",
|
|
"\n",
|
|
"# Add\n",
|
|
"docs.extend([*docs_pydantic, *docs_sq])\n",
|
|
"\n",
|
|
"# Sort the list based on the URLs in 'metadata' -> 'source'\n",
|
|
"d_sorted = sorted(docs, key=lambda x: x.metadata[\"source\"])\n",
|
|
"d_reversed = list(reversed(d_sorted))\n",
|
|
"\n",
|
|
"# Concatenate the 'page_content' of each sorted dictionary\n",
|
|
"concatenated_content = \"\\n\\n\\n --- \\n\\n\\n\".join(\n",
|
|
" [doc.page_content for doc in d_reversed]\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "662d4ff4-1709-412f-bfed-5eb2b8d3d3dc",
|
|
"metadata": {},
|
|
"source": [
|
|
"## LLMs\n",
|
|
"\n",
|
|
"We de-couple code solution and code formatting so that any LLM can be used for code solution. \n",
|
|
"\n",
|
|
"The structured output generation is handled in a seperate step.\n",
|
|
"\n",
|
|
"### Code solution"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "3ba3df70-f6b4-4ea5-a210-e10944960bc6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langchain_openai import ChatOpenAI\n",
|
|
"from langchain_anthropic import ChatAnthropic\n",
|
|
"from langchain_core.prompts import ChatPromptTemplate\n",
|
|
"from langchain_core.output_parsers import StrOutputParser\n",
|
|
"\n",
|
|
"# Grader prompt \n",
|
|
"code_gen_prompt = ChatPromptTemplate.from_messages(\n",
|
|
" [(\"system\",\"\"\"You are a coding assistant with expertise in LCEL, LangChain expression language. \\n \n",
|
|
" Here is a full set of LCEL documentation: \\n ------- \\n {context} \\n ------- \\n Answer the user \n",
|
|
" question based on the above provided documentation. Ensure any code you provide can be executed \\n \n",
|
|
" with all required imports and variables defined. Structure your answer with a description of the code solution. \\n\n",
|
|
" Then list the imports. And finally list the functioning code block. Here is the user question:\"\"\"),\n",
|
|
" (\"placeholder\", \"{messages}\")]\n",
|
|
")\n",
|
|
"\n",
|
|
"# code_gen_llm = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\")\n",
|
|
"code_gen_llm = ChatAnthropic(temperature=0, model='claude-3-opus-20240229')\n",
|
|
"\n",
|
|
"code_gen_chain = code_gen_prompt | code_gen_llm | StrOutputParser()\n",
|
|
"question = \"How do I build a RAG chain in LCEL?\"\n",
|
|
"solution = code_gen_chain.invoke({\"context\" : concatenated_content,\n",
|
|
" \"messages\" : [(\"user\",question)], ..., ...})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "eb01dcde-b446-4fae-90af-a303222f90e7",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Formatted code"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "4ad38291-807b-43e2-952b-8d9007617630",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langchain_openai import ChatOpenAI\n",
|
|
"from langchain_core.pydantic_v1 import BaseModel, Field\n",
|
|
"\n",
|
|
"# Prompt\n",
|
|
"prompt = ChatPromptTemplate.from_messages(\n",
|
|
" [(\"system\",\"\"\"You are an expert a code formatting, strating with a code solution \\n\n",
|
|
" Structure the solution in three parts with a prefix that defines the problem, then \\n \n",
|
|
" list the imports, and finally list the functioning code block.\"\"\" ),\n",
|
|
" (\"user\", \"Here is the code solution: {code}\"),]) \n",
|
|
" \n",
|
|
"# Data model\n",
|
|
"class code(BaseModel):\n",
|
|
" \"\"\"Code output\"\"\"\n",
|
|
"\n",
|
|
" prefix: str = Field(description=\"Description of the problem and approach\")\n",
|
|
" imports: str = Field(description=\"Code block import statements\")\n",
|
|
" code: str = Field(description=\"Code block not including import statements\")\n",
|
|
"\n",
|
|
"# Formatter \n",
|
|
"llm = ChatOpenAI(model=\"gpt-4-0125-preview\", temperature=0)\n",
|
|
"llm_formatter = llm.with_structured_output(code)\n",
|
|
"structured_code_formatter = prompt | llm_formatter\n",
|
|
"output = structured_code_formatter.invoke([(\"code\",solution)])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "131f2055-2f64-4d19-a3d1-2d3cb8b42894",
|
|
"metadata": {},
|
|
"source": [
|
|
"## State \n",
|
|
"\n",
|
|
"Our state is a dict that will contain keys (errors, question, code generation) relevant to code generation."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "c185f1a2-e943-4bed-b833-4243c9c64092",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from typing import Dict, TypedDict\n",
|
|
"\n",
|
|
"class GraphState(TypedDict):\n",
|
|
" \"\"\"\n",
|
|
" Represents the state of our graph.\n",
|
|
"\n",
|
|
" Attributes:\n",
|
|
" question : Use question\n",
|
|
" generation : LLM generation\n",
|
|
" prefix : Parsed code prefix\n",
|
|
" imports : Parsed code imports\n",
|
|
" code : Parsed code block\n",
|
|
" error : Errors from unit tests\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" question : str\n",
|
|
" generation : str\n",
|
|
" prefix : str\n",
|
|
" imports: str\n",
|
|
" code : str\n",
|
|
" error : str"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "64454465-26a3-40de-ad85-bcf59a2c3086",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Graph \n",
|
|
"\n",
|
|
"Our graph lays out the logical flow shown in the figure above.\n",
|
|
"\n",
|
|
"Error handling loop is a sub-graph: \n",
|
|
"\n",
|
|
"start\n",
|
|
"- errors \n",
|
|
"\n",
|
|
"* generate node\n",
|
|
"\n",
|
|
"* condititional edge: pass validation\n",
|
|
" - if yes: END\n",
|
|
" - if no: format error\n",
|
|
"\n",
|
|
"* format error"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "b70e8301-63ae-4f7e-ad8f-c9a052fe3566",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "SyntaxError",
|
|
"evalue": "unterminated string literal (detected at line 51) (1848823301.py, line 51)",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;36m Cell \u001b[0;32mIn[22], line 51\u001b[0;36m\u001b[0m\n\u001b[0;31m messages = state[\"messages\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unterminated string literal (detected at line 51)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from operator import itemgetter\n",
|
|
"\n",
|
|
"from langchain.prompts import PromptTemplate\n",
|
|
"from langchain_core.pydantic_v1 import BaseModel, Field\n",
|
|
"from langchain_core.runnables import RunnablePassthrough\n",
|
|
"\n",
|
|
"def generate(state: GraphState):\n",
|
|
" \"\"\"\n",
|
|
" Generate a code solution\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" state (dict): The current graph state\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" state (dict): New key added to state, documents, that contains retrieved documents\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" # State\n",
|
|
" question = state[\"question\"]\n",
|
|
" iterations = state[\"iterations\"]\n",
|
|
"\n",
|
|
" # No unit test errors \n",
|
|
" if \"error\" not in state:\n",
|
|
" print(\"---GENERATE SOLUTION---\")\n",
|
|
" solution = code_gen_chain.invoke({\"context\" : concatenated_content,\n",
|
|
" \"messages\" : [(\"user\",question)] })\n",
|
|
"\n",
|
|
" # We have a unit test error\n",
|
|
" elif \"error\" in state:\n",
|
|
" print(\"---RE-GENERATE SOLUTION w/ ERROR FEEDBACK---\")\n",
|
|
" \n",
|
|
" # Get error and the prior generation that produced it\n",
|
|
" error = state[\"error\"]\n",
|
|
" code_solution = state[\"generation\"]\n",
|
|
"\n",
|
|
" # New message\n",
|
|
" error_message = \"\"\" \\n --- --- --- \\n You previously tried to solve this problem. \\n Here is your solution: \n",
|
|
" \\n --- --- --- \\n {generation} \\n --- --- --- \\n Here is the resulting error from code \n",
|
|
" execution: \\n --- --- --- \\n {error} \\n --- --- --- \\n Please re-try to answer this. \n",
|
|
" Structure your answer with a description of the code solution. \\n Then list the imports. \n",
|
|
" And finally list the functioning code block. Structure your answer with a description of \n",
|
|
" the code solution. \\n Then list the imports. And finally list the functioning code block. \n",
|
|
" \\n Here is the user question: \\n --- --- --- \\n {question}\"\"\"\n",
|
|
"\n",
|
|
"\n",
|
|
" ### Here we need to get all prior messages ### \n",
|
|
" ### Do we need to have these in state? ###\n",
|
|
" ### More elegant way? ###\n",
|
|
"\n",
|
|
" \n",
|
|
" messages = state[\"messages\"]\n",
|
|
" solution = code_gen_chain.invoke({\"context\" : concatenated_content,\n",
|
|
" \"messages\" : [(\"user\",question)], ..., ...})\n",
|
|
" \n",
|
|
" messages = xxx\n",
|
|
" messages += [\n",
|
|
" (\n",
|
|
" \"user\",\n",
|
|
" error_message,\n",
|
|
" )\n",
|
|
" ]\n",
|
|
" solution = code_gen_chain.invoke({\"context\" : concatenated_content,\n",
|
|
" \"messages\" : messages] })\n",
|
|
" \n",
|
|
"\n",
|
|
" # Get structured output\n",
|
|
" code_solution = structured_code_formatter.invoke([(\"code\",solution)])\n",
|
|
" # Increment\n",
|
|
" iterations = iterations + 1\n",
|
|
" return {\n",
|
|
" \"keys\": {\"generation\": code_solution, \"question\": question, \"iterations\": iterations}\n",
|
|
" }\n",
|
|
"\n",
|
|
"def check_code_imports(state: GraphState):\n",
|
|
" \"\"\"\n",
|
|
" Check imports\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" state (dict): The current graph state\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" state (dict): New key added to state, error\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" ## State\n",
|
|
" print(\"---CHECKING CODE IMPORTS---\")\n",
|
|
" question = state[\"question\"]\n",
|
|
" code_solution = state[\"generation\"]\n",
|
|
" imports = code_solution[0].imports\n",
|
|
" iterations = state_dict[\"iterations\"]\n",
|
|
"\n",
|
|
" try:\n",
|
|
" exec(imports)\n",
|
|
" except Exception as e:\n",
|
|
" print(\"---CODE IMPORT CHECK: FAILED---\")\n",
|
|
" error = f\"Execution error: {e}\"\n",
|
|
" if \"error\" in state_dict:\n",
|
|
" error_prev_runs = state[\"error\"]\n",
|
|
" error = error_prev_runs + \"\\n --- Most recent run error --- \\n\" + error\n",
|
|
" else:\n",
|
|
" print(\"---CODE IMPORT CHECK: SUCCESS---\")\n",
|
|
" error = \"None\"\n",
|
|
"\n",
|
|
" return {\n",
|
|
" \"keys\": {\n",
|
|
" \"generation\": code_solution,\n",
|
|
" \"question\": question,\n",
|
|
" \"error\": error,\n",
|
|
" \"iterations\": iterations,\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
"def check_code_execution(state: GraphState):\n",
|
|
" \"\"\"\n",
|
|
" Check code block execution\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" state (dict): The current graph state\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" state (dict): New key added to state, error\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" ## State\n",
|
|
" print(\"---CHECKING CODE EXECUTION---\")\n",
|
|
" question = state[\"question\"]\n",
|
|
" code_solution = state[\"generation\"]\n",
|
|
" prefix = code_solution[0].prefix\n",
|
|
" imports = code_solution[0].imports\n",
|
|
" code = code_solution[0].code\n",
|
|
" code_block = imports + \"\\n\" + code\n",
|
|
" iterations = state_dict[\"iterations\"]\n",
|
|
"\n",
|
|
" try:\n",
|
|
" exec(code_block)\n",
|
|
" except Exception as e:\n",
|
|
" print(\"---CODE BLOCK CHECK: FAILED---\")\n",
|
|
" error = f\"Execution error: {e}\"\n",
|
|
" if \"error\" in state_dict:\n",
|
|
" error_prev_runs = state_dict[\"error\"]\n",
|
|
" error = error_prev_runs + \"\\n --- Most recent run error --- \\n\" + error\n",
|
|
" else:\n",
|
|
" print(\"---CODE BLOCK CHECK: SUCCESS---\")\n",
|
|
" error = \"None\"\n",
|
|
"\n",
|
|
" return {\n",
|
|
" \"keys\": {\n",
|
|
" \"generation\": code_solution,\n",
|
|
" \"question\": question,\n",
|
|
" \"error\": error,\n",
|
|
" \"prefix\": prefix,\n",
|
|
" \"imports\": imports,\n",
|
|
" \"iterations\": iterations,\n",
|
|
" \"code\": code,\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
"### Edges\n",
|
|
"\n",
|
|
"def decide_to_check_code_exec(state: GraphState):\n",
|
|
" \"\"\"\n",
|
|
" Determines whether to test code execution, or re-try answer generation.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" state (dict): The current graph state\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" str: Next node to call\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" print(\"---DECIDE TO TEST CODE EXECUTION---\")\n",
|
|
" state_dict = state[\"keys\"]\n",
|
|
" error = state_dict[\"error\"]\n",
|
|
"\n",
|
|
" if error == \"None\":\n",
|
|
" # All documents have been filtered check_relevance\n",
|
|
" # We will re-generate a new query\n",
|
|
" print(\"---DECISION: TEST CODE EXECUTION---\")\n",
|
|
" return \"check_code_execution\"\n",
|
|
" else:\n",
|
|
" # We have relevant documents, so generate answer\n",
|
|
" print(\"---DECISION: RE-TRY SOLUTION---\")\n",
|
|
" return \"generate\"\n",
|
|
"\n",
|
|
"\n",
|
|
"def decide_to_finish(state: GraphState):\n",
|
|
" \"\"\"\n",
|
|
" Determines whether to finish (re-try code 3 times.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" state (dict): The current graph state\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" str: Next node to call\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" print(\"---DECIDE TO TEST CODE EXECUTION---\")\n",
|
|
" state_dict = state[\"keys\"]\n",
|
|
" error = state_dict[\"error\"]\n",
|
|
" iter = state_dict[\"iterations\"]\n",
|
|
"\n",
|
|
" if error == \"None\" or iter == 3:\n",
|
|
" # All documents have been filtered check_relevance\n",
|
|
" # We will re-generate a new query\n",
|
|
" print(\"---DECISION: TEST CODE EXECUTION---\")\n",
|
|
" return \"end\"\n",
|
|
" else:\n",
|
|
" # We have relevant documents, so generate answer\n",
|
|
" print(\"---DECISION: RE-TRY SOLUTION---\")\n",
|
|
" return \"generate\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "f66b4e00-4731-42c8-bc38-72dd0ff7c92c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langgraph.graph import END, StateGraph\n",
|
|
"\n",
|
|
"workflow = StateGraph(GraphState)\n",
|
|
"\n",
|
|
"# Define the nodes\n",
|
|
"workflow.add_node(\"generate\", generate) # generation solution\n",
|
|
"workflow.add_node(\"check_code_imports\", check_code_imports) # check imports\n",
|
|
"workflow.add_node(\"check_code_execution\", check_code_execution) # check execution\n",
|
|
"\n",
|
|
"# Build graph\n",
|
|
"workflow.set_entry_point(\"generate\")\n",
|
|
"workflow.add_edge(\"generate\", \"check_code_imports\")\n",
|
|
"workflow.add_conditional_edges(\n",
|
|
" \"check_code_imports\",\n",
|
|
" decide_to_check_code_exec,\n",
|
|
" {\n",
|
|
" \"check_code_execution\": \"check_code_execution\",\n",
|
|
" \"generate\": \"generate\",\n",
|
|
" },\n",
|
|
")\n",
|
|
"workflow.add_conditional_edges(\n",
|
|
" \"check_code_execution\",\n",
|
|
" decide_to_finish,\n",
|
|
" {\n",
|
|
" \"end\": END,\n",
|
|
" \"generate\": \"generate\",\n",
|
|
" },\n",
|
|
")\n",
|
|
"\n",
|
|
"# Compile\n",
|
|
"app = workflow.compile()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "744f48a5-9ad3-4342-899f-7dd4266a9a15",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Eval\n",
|
|
"\n",
|
|
"Compare LangGraph to base case."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c8fa6bcb-b245-4422-b79a-582cd8a7d7ea",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def predict_base_case(example: dict):\n",
|
|
" \"\"\" Context stuffing \"\"\"\n",
|
|
" solution = code_gen_chain.invoke({\"context\" : concatenated_content,\n",
|
|
" \"messages\" : [(\"user\",example[\"question\"])] })\n",
|
|
" output = structured_code_formatter.invoke([(\"code\",solution)])\n",
|
|
" return {\"imports\": output.imports, \"code\": output.code}\n",
|
|
"\n",
|
|
"def predict_langgraph(example: dict):\n",
|
|
" \"\"\" LangGraph \"\"\"\n",
|
|
" graph = app.invoke([(\"question\",example[\"question\"])])\n",
|
|
" return {\"imports\": graph[\"imports\"], \"code\": graph[\"code\"]}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "89852874-b538-4c8d-a4c3-1d68302db492",
|
|
"metadata": {},
|
|
"source": [
|
|
"[Here](https://smith.langchain.com/public/326674a6-62bd-462d-88ae-eea49d503f9d/d) is a public dataset of LCEL questions. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ef7cf662-7a6f-4dee-965c-6309d4045feb",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import langsmith\n",
|
|
"\n",
|
|
"client = langsmith.Client()\n",
|
|
"\n",
|
|
"public_dataset = (\n",
|
|
" \"https://smith.langchain.com/public/326674a6-62bd-462d-88ae-eea49d503f9d/d\"\n",
|
|
")\n",
|
|
"# Clone the dataset to your tenant to use it\n",
|
|
"client.clone_public_dataset(public_dataset)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9d171396-022b-47ec-a741-c782aff9fdae",
|
|
"metadata": {},
|
|
"source": [
|
|
"Custom evals."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "455a34ea-52cb-4ae5-9f4a-7e4a08cd0c09",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langsmith.schemas import Example, Run\n",
|
|
"\n",
|
|
"def check_import(run: Run, example: Example) -> dict: \n",
|
|
" imports = run.outputs.get(\"imports\")\n",
|
|
" try:\n",
|
|
" exec(imports)\n",
|
|
" return {\"key\": \"import_check\" , \"score\": 1} \n",
|
|
" except:\n",
|
|
" return {\"key\": \"import_check\" , \"score\": 0} \n",
|
|
"\n",
|
|
"def check_execution(run: Run, example: Example) -> dict: \n",
|
|
" imports = run.outputs.get(\"imports\")\n",
|
|
" code = run.outputs.get(\"code\")\n",
|
|
" try:\n",
|
|
" exec(imports + \"\\n\" + code)\n",
|
|
" return {\"key\": \"code_execution_check\" , \"score\": 1} \n",
|
|
" except:\n",
|
|
" return {\"key\": \"code_execution_check\" , \"score\": 0} "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2dacccf0-d73f-4017-aaf0-9806ffe5bd2c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langsmith.evaluation import evaluate\n",
|
|
"\n",
|
|
"# Evaluator\n",
|
|
"code_evalulator = [check_import,check_execution]\n",
|
|
"dataset_name = \"lcel-teacher-eval\"\n",
|
|
"\n",
|
|
"# Run base case\n",
|
|
"experiment_results = evaluate(\n",
|
|
" predict_base_case,\n",
|
|
" data=dataset_name,\n",
|
|
" evaluators=code_evalulator,\n",
|
|
" experiment_prefix=\"test-without-langgraph\",\n",
|
|
" metadata={\n",
|
|
" \"variant\": \"Claude3\",\n",
|
|
" },\n",
|
|
")\n",
|
|
"\n",
|
|
"# Run with langgraph\n",
|
|
"experiment_results = evaluate(\n",
|
|
" predict_langgraph,\n",
|
|
" data=dataset_name,\n",
|
|
" evaluators=code_evalulator,\n",
|
|
" experiment_prefix=\"test-with-langgraph\",\n",
|
|
" metadata={\n",
|
|
" \"variant\": \"Claude3\",\n",
|
|
" },\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5caa3a37-5fd2-4e4c-b310-577c239f9d61",
|
|
"metadata": {},
|
|
"source": [
|
|
"## TODO: Clean This Later ## \n",
|
|
"\n",
|
|
"Compute standard error across 4 trials."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "14f8484b-9d57-4132-8801-74a4067f97db",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# You will have to update these to match the tests you ran.\n",
|
|
"# The test name can be found at langgraph_results[\"project_name\"]\n",
|
|
"langgraph = [\n",
|
|
" \"80db-context-stuffing-with-langgraph\",\n",
|
|
" \"060c-context-stuffing-with-langgraph\",\n",
|
|
" \"93cd-context-stuffing-with-langgraph\",\n",
|
|
" \"60ef-context-stuffing-with-langgraph\",\n",
|
|
"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "d19deeb6-9fc3-46b0-affb-5baaef4e9bba",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"no_langgraph = [\n",
|
|
" \"b493-context-stuffing-no-langgraph\",\n",
|
|
" \"eb8a-context-stuffing-no-langgraph\",\n",
|
|
" \"b88c-context-stuffing-no-langgraph\",\n",
|
|
" \"0aaa-context-stuffing-no-langgraph\",\n",
|
|
"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"id": "d6340773-ca0b-4320-b841-093bbfb1161a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"\n",
|
|
"def prepare_dataframe(project, trial_number, chain):\n",
|
|
" df = client.get_test_results(project_name=project)\n",
|
|
" df = df.dropna(subset=[\"feedback.check_execution\", \"feedback.check_import\"])\n",
|
|
" df = df[[\"input.question\", \"feedback.check_execution\", \"feedback.check_import\"]]\n",
|
|
" df[\"trial #\"] = trial_number\n",
|
|
" df[\"chain\"] = chain\n",
|
|
" return df\n",
|
|
"\n",
|
|
"\n",
|
|
"# Prepare each dataframe\n",
|
|
"dfs_chain1 = [\n",
|
|
" prepare_dataframe(project, i + 1, \"LangGraph\")\n",
|
|
" for i, project in enumerate(langgraph)\n",
|
|
"]\n",
|
|
"dfs_chain2 = [\n",
|
|
" prepare_dataframe(project, i + 1, \"No LangGraph\")\n",
|
|
" for i, project in enumerate(no_langgraph)\n",
|
|
"]\n",
|
|
"\n",
|
|
"# Combine all dataframes\n",
|
|
"final_df = pd.concat(dfs_chain1 + dfs_chain2, ignore_index=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"id": "30dd9b44-b23f-4709-a993-f1e6873ff3f2",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"chain\n",
|
|
"LangGraph 78\n",
|
|
"No LangGraph 79\n",
|
|
"dtype: int64"
|
|
]
|
|
},
|
|
"execution_count": 42,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"final_df.groupby(\"chain\").size()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"id": "2c4e226c-511b-41fa-b850-2a0a3f67a44d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>Fraction Imports Correct</th>\n",
|
|
" <th>Fraction Execution Correct</th>\n",
|
|
" <th>Imports Correct Std Error</th>\n",
|
|
" <th>Execution Correct Std Error</th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>chain</th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>LangGraph</th>\n",
|
|
" <td>1.000000</td>\n",
|
|
" <td>0.807692</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" <td>0.044625</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>No LangGraph</th>\n",
|
|
" <td>0.987342</td>\n",
|
|
" <td>0.556962</td>\n",
|
|
" <td>0.012578</td>\n",
|
|
" <td>0.055888</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" Fraction Imports Correct Fraction Execution Correct \\\n",
|
|
"chain \n",
|
|
"LangGraph 1.000000 0.807692 \n",
|
|
"No LangGraph 0.987342 0.556962 \n",
|
|
"\n",
|
|
" Imports Correct Std Error Execution Correct Std Error \n",
|
|
"chain \n",
|
|
"LangGraph 0.000000 0.044625 \n",
|
|
"No LangGraph 0.012578 0.055888 "
|
|
]
|
|
},
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"\n",
|
|
"def group_standard_error(group):\n",
|
|
" \"\"\"\n",
|
|
" Calculate the standard error for the 'correct' column in a given group.\n",
|
|
"\n",
|
|
" The function assumes the 'correct' column contains binary values (0 or 1).\n",
|
|
" It computes the standard error based on the formula for the standard error\n",
|
|
" of a proportion, which is sqrt(p * (1 - p) / n), where p is the proportion\n",
|
|
" of successes (1s) and n is the total number of trials.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" group (pd.DataFrame): A DataFrame group with a 'correct' column.\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" pd.Series: A series containing the standard error of the 'correct' column.\n",
|
|
" \"\"\"\n",
|
|
" # 3 trials x 20 questions per trial = 60\n",
|
|
" total_trials = len(group)\n",
|
|
" std_errors = {}\n",
|
|
" for column in [\"feedback.check_import\", \"feedback.check_execution\"]:\n",
|
|
" # Number correct\n",
|
|
" occurrences = group[column].sum()\n",
|
|
" # Total trials\n",
|
|
" fraction = occurrences / total_trials\n",
|
|
" # Standard error\n",
|
|
" std_errors[column] = (fraction * (1 - fraction) / total_trials) ** 0.5\n",
|
|
" return pd.Series(std_errors)\n",
|
|
"\n",
|
|
"\n",
|
|
"# Calculate standard errors\n",
|
|
"std_errors = final_df.groupby([\"chain\"]).apply(group_standard_error)\n",
|
|
"\n",
|
|
"# Calculate the fraction of correct answers\n",
|
|
"grouped_frac_correct = (\n",
|
|
" final_df.groupby(\"chain\")[\n",
|
|
" [\"feedback.check_import\", \"feedback.check_execution\"]\n",
|
|
" ].sum()\n",
|
|
" / final_df.groupby(\"chain\")[\n",
|
|
" [\"feedback.check_import\", \"feedback.check_execution\"]\n",
|
|
" ].count()\n",
|
|
")\n",
|
|
"\n",
|
|
"# Concatenate the fraction correct data with the standard errors\n",
|
|
"correct_frac_and_errors = pd.concat([grouped_frac_correct, std_errors], axis=1)\n",
|
|
"\n",
|
|
"# If you want to rename the columns for clarity\n",
|
|
"correct_frac_and_errors.columns = [\n",
|
|
" \"Fraction Imports Correct\",\n",
|
|
" \"Fraction Execution Correct\",\n",
|
|
" \"Imports Correct Std Error\",\n",
|
|
" \"Execution Correct Std Error\",\n",
|
|
"]\n",
|
|
"correct_frac_and_errors"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 47,
|
|
"id": "b737b809-04dc-49f1-b070-f0609898e9d3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB8YAAAN5CAYAAAB61FHjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1dUlEQVR4nOzdebyWc/4/8PfpdDonJy1opalEkq3mWCYxiVSW0GAsQ8sYYoQKM5ahsjWDki/ZicgwY/uONSKMEUaUZUSRZWgjFa3qXL8//M797XZOdY7O6ejq+Xw8zuPR/bm293Xd93X3+Nyv6/pcOUmSJAEAAAAAAAAAKVWjugsAAAAAAAAAgKokGAcAAAAAAAAg1QTjAAAAAAAAAKSaYBwAAAAAAACAVBOMAwAAAAAAAJBqgnEAAAAAAAAAUk0wDgAAAAAAAECqCcYBAAAAAAAASDXBOAAAAAAAAACpJhgHoMLuvPPOyMnJiY8//jjT1rJlyzj00EM3aB0ff/xx5OTkxNVXX13l2+rbt2/UqVOnyrfzQ/vtt1/svPPOG3y7VI2yzp0NJScnJwYMGLDBt7s2lf29UfKdcOedd1baOgEA2LTo7244+rtrNnTo0MjJyanuMn6SqrPf91P8zFbF+duyZcvo27dvpa4T4KdCMA6wkSjpnJf1d95551V3eRutZcuWxTXXXBN77bVX1KtXLwoKCqJNmzYxYMCA+OCDD6q7vPVSXT9uVJYlS5bE0KFD4/nnny/X/M8///waz5Fjjz22aov9gSuuuCIeeeSRDbrNn5I5c+bEOeecE23bto3NNtssCgsLo6ioKC677LJYsGBBdZcHAMBPjP5u1Uh7f3dNn5mCgoLqLq9cKtrn3VDWdFybNGmyQeu49957Y9SoURt0mz8laT5/AapTzeouAICKueSSS6JVq1ZZbT+1q1U3Fl9++WX06NEjJk+eHIceemgcf/zxUadOnXj//ffjvvvui1tuuSVWrFhR3WVuspYsWRLDhg2LiO+vyi6vM888M/bYY4+stpYtW1ZiZet2xRVXxFFHHRVHHHFEVvuJJ54Yxx57bOTn52/Qejakf//733HwwQfHt99+GyeccEIUFRVFRMTrr78ef/7zn+PFF1+Mp59+ukq23aJFi1i6dGnk5eVVyfoBAKha+ruVZ1Po7+bn58dtt91Wqj03N7caqqm4tfV5//SnP1XrRSEHHnhg9O7dO6utdu3aG7SGe++9N955550YOHBgVvum0O+r7vP3/fffjxo13FMJpJNgHGAjc9BBB8Xuu+9e3WWkQt++fePNN9+MBx54II488sisaZdeemlceOGF1VTZpq24uHi9Onj77rtvHHXUUeWad+XKlVFcXBy1atX60duriNzc3I3mR5ofY8GCBdGrV6/Izc2NN998M9q2bZs1/fLLL49bb721yra/Md0dAgBAafq7lWdT6O/WrFkzTjjhhOouo0rUrFkzatasvp/u27RpU+5jmyRJLFu2bIMF55tCv6+6z980X8wP4LIfgJR58sknY999943CwsLYfPPN45BDDol333231HzTpk2Lo446KrbYYosoKCiI3XffPf7xj3+Umu/dd9+N/fffP2rXrh3bbLNNXHbZZVFcXLzG7T/99NPRvn37KCgoiHbt2sVDDz2UNX3+/PlxzjnnxC677BJ16tSJunXrxkEHHRRTp04tta5ly5bF0KFDo02bNlFQUBBNmzaNX/3qV/Hhhx+ucftJksQpp5wStWrVKrXt1b366qvx+OOPx0knnVSqkxHxfSegrGe5ff7553HEEUdEnTp1omHDhnHOOefEqlWrsuYpLi6OUaNGxU477RQFBQXRuHHj6N+/f3z99del1vfkk09G586dY/PNN4+6devGHnvsEffee+8a6474/hhvttlmcdxxx8XKlSvXOu8PlTwb7/nnn4/dd989ateuHbvssktm6LaHHnoodtlllygoKIiioqJ48803s5YvGZ79o48+iu7du0dhYWE0a9YsLrnkkkiSJGvexYsXx9lnnx3NmzeP/Pz82GGHHeLqq68uNV/Js6/HjRsXO+20U+Tn58dNN90UDRs2jIiIYcOGZYZuGzp0aIX2d3WrP6Nv1KhR0bp168jPz4///Oc/sWLFirj44oujqKgo6tWrF4WFhbHvvvvGxIkTS62nuLg4rr322sxxatiwYfTo0SNef/31zP4sXrw47rrrrkzdJc/mWtMzxm+44YbMvjdr1ixOP/30UkOOlzzL7D//+U906dIlNttss9h6663jyiuvrNBxGDduXOywww6Z9/jFF1/MTJs4cWLk5OTEww8/XGq5e++9N3JycmLSpElrXPfNN98cn3/+eYwcObJUKB4R0bhx4/jTn/5Uqv2ll16KPffcMwoKCmLbbbeNsWPHZk0v7/dGWc+aK/nMlufcBQDgp01/V3+3IpIkiS5dukTDhg1j7ty5mfYVK1bELrvsEq1bt47Fixdn2u+5554oKiqK2rVrxxZbbBHHHntsfPbZZ6XW++qrr8bBBx8cDRo0iMLCwth1113j2muvzUzfb7/9yhz1rG/fvpnRzD7++OO19nnLesb4ypUr49JLL830ZVu2bBkXXHBBLF++PGu+kn7/uvpZP1bJ+sePH5/5XeHmm2+OiIgxY8bE/vvvH40aNYr8/Pxo165d3HjjjWWuZ22fj/322y8ef/zx+OSTTzLHZvVjV9Yzxp977rnM90P9+vXj8MMPj/feey9rnpLjOmPGjOjbt2/Ur18/6tWrF/369YslS5aU+xhMnjw59t5776hdu3a0atUqbrrppsy0b7/9NgoLC+Oss84qtdx///vfyM3NjeHDh69x3VV5/l599dWx9957x5Zbbhm1a9eOoqKieOCBB0qt64fPGC/5LeNf//pXDB48OBo2bBiFhYXRq1evmDdv3hr3BeCnSDAOsJFZuHBhfPnll1l/Je6+++445JBDok6dOvGXv/wlLrroovjPf/4T++yzT1YQ9+6778YvfvGLeO+99+K8886LESNGRGFhYRxxxBFZgdjs2bOjS5cuMWXKlDjvvPNi4MCBMXbs2KwO3+qmT58exxxzTBx00EExfPjwqFmzZhx99NHxzDPPZOb56KOP4pFHHolDDz00Ro4cGeeee268/fbb0blz5/jiiy8y861atSoOPfTQGDZsWBQVFcWIESPirLPOioULF8Y777xT5vZXrVoVffv2jbFjx8bDDz8cv/rVr9Z4HEt+FDnxxBPXfsB/sP7u3bvHlltuGVdffXV07tw5RowYEbfcckvWfP37949zzz03OnXqFNdee23069cvxo0bF927d4/vvvsuM9+dd94ZhxxySMyfPz/OP//8+POf/xzt27ePp556ao01PPbYY3HYYYfF0UcfHffcc8+PuoJ8xowZcfzxx0fPnj1j+PDh8fXXX0fPnj1j3LhxMWjQoDjhhBNi2LBh8eGHH8avf/3rUj8MrVq1Knr06BGNGzeOK6+8MoqKimLIkCExZMiQzDxJksRhhx0W11xzTfTo0SNGjhwZO+ywQ5x77rkxePDgUjU999xzMWjQoDjmmGPi2muvjT322CPTee7Vq1fcfffdcffdd6/1PS3xzTfflDpHVt+HMWPGxHXXXRennHJKjBgxIrbYYotYtGhR3HbbbbHffvvFX/7ylxg6dGjMmzcvunfvHlOmTMla/0knnRQDBw6M5s2bx1/+8pc477zzoqCgIF555ZWI+P48zM/Pj3333TdTd//+/ddY79ChQ+P000+PZs2axYgRI+LII4+Mm2++Obp165b1eYmI+Prrr6NHjx6x2267xYgRI6Jt27bxxz/+MZ588sl1HpeIiBdeeCEGDhwYJ5xwQlxyySXx1VdfRY8ePTLn1H777RfNmzePcePGlVp23Lhx0bp16+jYseMa1/+Pf/wjateuXe479iO+/zweddRRceCBB8aIESOiQYMG0bdv36wfOMv7vbEm5T13AQCoXvq7+rsV7e/+8PPy5ZdfxqJFiyLi+4uW77jjjli2bFmceuqpmWWGDBkS7777bowZMyYKCwsj4vvRrXr37h3bb799jBw5MgYOHBjPPvts/PKXv8y6aPmZZ56JX/7yl/Gf//wnzjrrrBgxYkR06dIlHnvssXId5xINGzascJ/3d7/7XVx88cXx85//PK655pro3LlzDB8+PI499thS85ann7U2y5YtK3VcVw/g33///TjuuOPiwAMPjGuvvTbat28fERE33nhjtGjRIi644IIYMWJENG/ePH7/+9/H6NGjs9a/rs/HhRdeGO3bt4+tttoqc2zW9rzxCRMmRPfu3WPu3LkxdOjQGDx4cLz88svRqVOnUhemR0T8+te/jm+++SaGDx8ev/71r+POO+/MDGu/Ll9//XUcfPDBUVRUFFdeeWVss802cdppp8Udd9wRERF16tSJXr16xf33318qmP7rX/8aSZLEb37zmzWuvyrP32uvvTY6dOgQl1xySVxxxRWZ77HHH3+8XNs544wzYurUqTFkyJA47bTT4tFHH40BAwaUu06An4QEgI3CmDFjkogo8y9JkuSbb75J6tevn5x88slZy82ePTupV69eVvsBBxyQ7LLLLsmyZcsybcXFxcnee++dbL/99pm2gQMHJhGRvPrqq5m2uXPnJvXq1UsiIpk5c2amvUWLFklEJA8++GCmbeHChUnTpk2TDh06ZNqWLVuWrFq1KqvGmTNnJvn5+ckll1ySabvjjjuSiEhGjhxZ6lgUFxdnlouI5Kqrrkq+++675Jhjjklq166djB8/fu0HM0mSXr16JRGRfP311+ucN0mSpE+fPklEZNWYJEnSoUOHpKioKPP6n//8ZxIRybhx47Lme+qpp7LaFyxYkGy++ebJXnvtlSxdurTM/UuSJOncuXOy0047JUmSJA8++GCSl5eXnHzyyaWO4ZpqLiwszGoreZ9efvnlTNv48eOTiEhq166dfPLJJ5n2m2++OYmIZOLEiaWOwxlnnJFV7yGHHJLUqlUrmTdvXpIkSfLII48kEZFcdtllWds/6qijkpycnGTGjBmZtohIatSokbz77rtZ886bNy+JiGTIkCHr3NckSZKJEyeu8RyZOXNm5vNSt27dZO7cuVnLrly5Mlm+fHlW29dff500btw4+e1vf5tpe+6555KISM4888xS21/9fSssLEz69OlTap6S87jk3Jk7d25Sq1atpFu3blnv6fXXX59ERHLHHXdk2jp37pxERDJ27NhM2/Lly5MmTZokRx555DqPT8mxeP311zNtn3zySVJQUJD06tUr03b++ecn+fn5yYIFCzJtc+fOTWrWrLnO96JBgwbJbrvtts5aSpR8Hl988cWsbeXn5ydnn312pq283xsl7/GYMWMybeU9dwEAqD76u/9Hf7f8/d01fWa6d++eNW9J3/aee+5JXnnllSQ3NzcZOHBgZvrHH3+c5ObmJpdffnnWcm+//XZSs2bNTPvKlSuTVq1aJS1atCh1bH+4X507dy6z5hYtWmRer63PO2TIkMznP0mSZMqUKUlEJL/73e+y5jvnnHOSiEiee+65TFt5+1lrsqbjWtLPKln/U089VWrZJUuWlGrr3r17su2222Zel/fzccghh2QdrxJl9fvat2+fNGrUKPnqq68ybVOnTk1q1KiR9O7dO9NWclxX7+cnyffnzJZbbln2AVlNSb98xIgRmbbly5dntr9ixYokSf7vd5Ynn3wya/ldd921zM/GD2upivM3SUq/PytWrEh23nnnZP/9989qb9GiRdZvGiXf0V27ds16jwYNGpTk5uZm/X4A8FPnjnGAjczo0aPjmWeeyfqL+P6q5QULFsRxxx2XdUVvbm5u7LXXXpkhoefPnx/PPfdc5urYkvm++uqr6N69e0yfPj0+//zziIh44okn4he/+EXsueeeme03bNhwjVe2NmvWLHr16pV5Xbdu3ejdu3e8+eabMXv27Ij4fsinGjW+/+9n1apV8dVXX0WdOnVihx12iDfeeCOz7IMPPhhbbbVVnHHGGaW288PhxFasWBFHH310PPbYY/HEE09Et27d1nkcS64g33zzzdc57+pWv8o84vvnWX/00UeZ13//+9+jXr16ceCBB2a9D0VFRVGnTp3M+/DMM8/EN998k7nbeG37F/H9VcXHHHNM9O/fP26++ebMMfwx2rVrl3XX71577RUREfvvv3/87Gc/K9W++v6VWP2K4JKh0FesWBETJkyIiO8/O7m5uXHmmWdmLXf22WdHkiSl7nDu3LlztGvX7kfv0+ouvvjiUudIkyZNMtOPPPLIzJB1JXJzczPPGS8uLo758+fHypUrY/fddy/1uczJycm6O75EWe/bukyYMCFWrFgRAwcOzHpPTz755Khbt26pq7br1KmT9Zy3WrVqxZ577lnme1SWjh07RlFRUeb1z372szj88MNj/PjxmSvZe/fuHcuXL88aTu3++++PlStXrvMZc4sWLarwOdWuXbvYd999M68bNmwYO+ywQ9Y+lfd7Y23Wde4CAFD99Hf1dyvS3y0oKCj1eXnmmWfiz3/+c9Z8p5xySnTv3j3OOOOMOPHEE6N169ZxxRVXZKY/9NBDUVxcHL/+9a+z9qtJkyax/fbbZ/brzTffjJkzZ8bAgQOjfv3669yvyvTEE09ERJQage3ss8+OiCjVdyxPP2ttDj/88FLHtXv37pnprVq1ynpdYvXnjJeMANG5c+f46KOPYuHChRFR8c/HusyaNSumTJkSffv2jS222CLTvuuuu8aBBx6YOXarK+uz/tVXX2XOnbWpWbNm1qhwtWrViv79+8fcuXNj8uTJERHRtWvXaNasWdZobO+880689dZb5epXR1T++RuR/f58/fXXsXDhwth3333L3a8+5ZRTst6jfffdN1atWhWffPJJhWoFqE4VH38VgGq15557xu67716qffr06RHxfbhZlrp160bE98NpJUkSF110UVx00UVlzjt37tzYeuut45NPPsmEo6vbYYcdylxuu+22K9WJadOmTUR8/wyoJk2aZJ7PfMMNN8TMmTOzhpXacsstM//+8MMPY4cddijX0GnDhw+Pb7/9Np588skyn+NVlpLj8c0335Tq0K5JyfOkV9egQYOsZ6lNnz49Fi5cGI0aNSpzHSXPNSt5btzOO++8zu3OnDkzTjjhhDj66KPjuuuuK1eta7N6+B0RUa9evYiIaN68eZntP3xWXI0aNWLbbbfNalv9fY6I+OSTT6JZs2alOnI77rhjZvrqWrVqVdHdWKNddtklunbtusbpa9rWXXfdFSNGjIhp06ZlDQG4+vwffvhhNGvWLKuzvT5KjsMPz6latWrFtttuW+o4bbPNNqXOsQYNGsRbb71Vru1tv/32pdratGkTS5YsiXnz5kWTJk2ibdu2sccee8S4cePipJNOiojvh1H/xS9+Edttt91a11+3bt345ptvylVLiR9+HiNKn1fl/d5Yk/KcuwAAVD/93dL0d9csNzd3rX2/1d1+++3RunXrmD59erz88stZAeH06dMjSZIy+0sREXl5eRFRsf2qbJ988knUqFGjVJ+sSZMmUb9+/VJ9x/L0s9Zmm222+VH96n/9618xZMiQmDRpUqlndi9cuDDq1atX6cdxTf3qiO9/gxg/fnwsXrw4M2x+ROnj06BBg4j4/vePkvNnTZo1a5a1rojs74Jf/OIXUaNGjfjNb34TN954YyxZsiQ222yzGDduXBQUFMTRRx+91vVX1fkb8f3jCi677LKYMmVK1tD45b0gYW3HDWBjIRgHSImSZyjffffdWXfHlijpcJfMd84555R5dW9ErDP8Wh9XXHFFXHTRRfHb3/42Lr300thiiy2iRo0aMXDgwFLPsi6v7t27x1NPPRVXXnll7LfffqWuOC5L27ZtIyLi7bffzrqKem1yc3PXOU9xcXE0atSozGc0R0Spjkp5NG3aNJo2bRpPPPFEvP7662X+UFQRa9qPNbUnSbJe2yuP1X+UqI5t3XPPPdG3b9844ogj4txzz41GjRpFbm5uDB8+PNNp/ynYUO9R796946yzzor//ve/sXz58njllVfi+uuvX+dybdu2jSlTpsSKFSsyd+CvS3n2aX2/N8pz7gIA8NOlv6u/u76ef/75TBD49ttvZ42iVlxcHDk5OfHkk0+WeRzq1KlToW3l5OSU2Uf74fOmf4zyBphV3Xcsq1/94YcfxgEHHBBt27aNkSNHRvPmzaNWrVrxxBNPxDXXXPOjz4GqsCH61r17946rrroqHnnkkTjuuOPi3nvvjUMPPTRzE8KaVNX5+89//jMOO+yw+OUvfxk33HBDNG3aNPLy8mLMmDFx7733rtd2NsTvRgCVRTAOkBKtW7eOiIhGjRqt9arekjt98/Ly1nlldYsWLTJX5q/u/fffL3P+kqvzV++offDBBxER0bJly4iIeOCBB6JLly5x++23Zy27YMGC2GqrrbL259VXX43vvvsuc3X2mvziF7+IU089NQ499NA4+uij4+GHH17nlfc9e/aM4cOHxz333FPujkZ5tG7dOiZMmBCdOnVaa9hb8n6988476/xhpqCgIB577LHYf//9o0ePHvHCCy/ETjvtVGk1V1RxcXF89NFHmSuiI0q/zy1atIgJEybEN998k3XX+LRp0zLT16Wqh6Jb3QMPPBDbbrttPPTQQ1nb/eGQ6a1bt47x48fH/Pnz13rXeHlrLzkO77//ftZd+CtWrIiZM2eW++6H8irrfP7ggw9is802y/oR69hjj43BgwfHX//611i6dGnk5eXFMcccs8719+zZMyZNmhQPPvhgHHfccZVWd3m/NwAASCf9Xf3d9TFr1qw444wzolu3blGrVq3MhRMl/bHWrVtHkiTRqlWrrH7uD62+X2v7fDVo0KDMIct/eFd3Rfq8LVq0iOLi4pg+fXpmJLaIiDlz5sSCBQvK1ceuao8++mgsX748/vGPf2TdWVwyFH2J8n4+fky/+oemTZsWW221Vak7vNfHF198UeoO9B9+F0R8f0d8hw4dYty4cbHNNtvEp59+Wq5REarq/H3wwQejoKAgxo8fH/n5+Zn2MWPGVNo2ADYGnjEOkBLdu3ePunXrxhVXXJE1DHSJefPmRcT3PyTst99+cfPNN8esWbPWOF9ExMEHHxyvvPJKvPbaa1nT13R1+BdffBEPP/xw5vWiRYti7Nix0b59+8xV/bm5uaWuJP373/+eec5biSOPPDK+/PLLMu9SLetK1K5du8Z9990XTz31VJx44onrvBK5Y8eO0aNHj7jtttvikUceKTV9xYoVcc4556x1HWX59a9/HatWrYpLL7201LSVK1fGggULIiKiW7dusfnmm8fw4cNj2bJlWfOVtX/16tWL8ePHR6NGjeLAAw+s9ruYV39fkiSJ66+/PvLy8uKAAw6IiO8/O6tWrSr1/l1zzTWRk5MTBx100Dq3sdlmm0VEZI5ZVSq56nn1Y//qq6/GpEmTsuY78sgjI0mSGDZsWKl1rL5sYWFhueru2rVr1KpVK/7nf/4na/nbb789Fi5cGIccckhFd2WtJk2alPXssM8++yz+93//N7p165Z15fdWW20VBx10UNxzzz0xbty46NGjR7kC6FNPPTWaNm0aZ599duaHgdXNnTs3LrvssgrXXd7vDQAA0kl/V393fZx88slRXFwct99+e9xyyy1Rs2bNOOmkkzK1/OpXv4rc3NwYNmxYqfqSJImvvvoqIiJ+/vOfR6tWrWLUqFGl+nurL9e6deuYNm1a1udt6tSp8a9//StrmYr0eQ8++OCIiBg1alRW+8iRIyMiKr3v+GOU1a9euHBhqeC1vJ+PwsLCzHPJ16Zp06bRvn37uOuuu7KO5TvvvBNPP/105thVlpUrV8bNN9+ceb1ixYq4+eabo2HDhlFUVJQ174knnhhPP/10jBo1Krbccsty/RZSVedvbm5u5OTkZI1c8PHHH5e5DYA0c8c4QErUrVs3brzxxjjxxBPj5z//eRx77LHRsGHD+PTTT+Pxxx+PTp06ZTrdo0ePjn322Sd22WWXOPnkk2PbbbeNOXPmxKRJk+K///1vTJ06NSIi/vCHP8Tdd98dPXr0iLPOOisKCwvjlltuiRYtWpT5TOM2bdrESSedFP/+97+jcePGcccdd8ScOXOyOkGHHnpoXHLJJdGvX7/Ye++94+23345x48aVemZ17969Y+zYsTF48OB47bXXYt99943FixfHhAkT4ve//30cfvjhpbZ/xBFHxJgxY6J3795Rt27drI5KWcaOHRvdunWLX/3qV9GzZ8844IADorCwMKZPnx733XdfzJo1K66++uoKvQ+dO3eO/v37x/Dhw2PKlCnRrVu3yMvLi+nTp8ff//73uPbaa+Ooo46KunXrxjXXXBO/+93vYo899ojjjz8+GjRoEFOnTo0lS5bEXXfdVWrdW221VTzzzDOxzz77RNeuXeOll16KrbfeukL1VYaCgoJ46qmnok+fPrHXXnvFk08+GY8//nhccMEFmbuOe/bsGV26dIkLL7wwPv7449htt93i6aefjv/93/+NgQMHZq4QX5vatWtHu3bt4v777482bdrEFltsETvvvHOVPM/t0EMPjYceeih69eoVhxxySMycOTNuuummaNeuXXz77beZ+bp06RInnnhi/M///E9Mnz49evToEcXFxfHPf/4zunTpEgMGDIiIiKKiopgwYUKMHDkymjVrFq1atSrz+YUNGzaM888/P4YNGxY9evSIww47LN5///244YYbYo899ogTTjihUvdz5513ju7du8eZZ54Z+fn5ccMNN0RElBn09+7dO4466qiIiDJ/+CpLgwYN4uGHH46DDz442rdvHyeccELmh4E33ngj/vrXv2YNWVhe5f3eAAAgnfR39XfLsnLlyrjnnnvKnNarV68oLCyMMWPGxOOPPx533nlnbLPNNhERcd1118UJJ5wQN954Y/z+97+P1q1bx2WXXRbnn39+fPzxx3HEEUfE5ptvHjNnzoyHH344TjnllDjnnHOiRo0aceONN0bPnj2jffv20a9fv2jatGlMmzYt3n333Rg/fnxERPz2t7+NkSNHRvfu3eOkk06KuXPnxk033RQ77bRTLFq0KFNjRfq8u+22W/Tp0yduueWWWLBgQXTu3Dlee+21uOuuu+KII46ILl26lPt9rCold+T37Nkz+vfvH99++23ceuut0ahRo6wLVcr7+SgqKor7778/Bg8eHHvssUfUqVMnevbsWea2r7rqqjjooIOiY8eOcdJJJ8XSpUvjuuuui3r16sXQoUMrdT+bNWsWf/nLX+Ljjz+ONm3axP333x9TpkyJW265pdQIEMcff3z84Q9/iIcffjhOO+20dY4QUaIqzt9DDjkkRo4cGT169Ijjjz8+5s6dG6NHj47tttuuzO88gNRKANgojBkzJomI5N///vda55s4cWLSvXv3pF69eklBQUHSunXrpG/fvsnrr7+eNd+HH36Y9O7dO2nSpEmSl5eXbL311smhhx6aPPDAA1nzvfXWW0nnzp2TgoKCZOutt04uvfTS5Pbbb08iIpk5c2ZmvhYtWiSHHHJIMn78+GTXXXdN8vPzk7Zt2yZ///vfs9a3bNmy5Oyzz06aNm2a1K5dO+nUqVMyadKkpHPnzknnzp2z5l2yZEly4YUXJq1atUry8vKSJk2aJEcddVTy4YcfJkmSJDNnzkwiIrnqqquylrvhhhuSiEjOOeecdR7XJUuWJFdffXWyxx57JHXq1Elq1aqVbL/99skZZ5yRzJgxIzNfnz59ksLCwlLLDxkyJCnrv9NbbrklKSoqSmrXrp1svvnmyS677JL84Q9/SL744ous+f7xj38ke++9d1K7du2kbt26yZ577pn89a9/zUzv3LlzstNOO2UtM2PGjKRp06bJjjvumMybN2+N+1ZWzSXv0w9FRHL66adntZV1fEvW+eGHHybdunVLNttss6Rx48bJkCFDklWr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48dn1KhRWbp0adasWZORI0fu81qaWE8BOHz0yX+gTwagMdAj/4G1FA6cYByOErfffnv+/u//PsuXL6833q1btyxbtqze2LJly3LyySenSZMm+3ydzZs357XXXsvNN9+cCy+8MN26dct77723z+c55ZRT8tJLL9Ub++z28OHD8+yzz+aVV17Z5/Mnf/jcuNra2tx99905++yzc/LJJ+f3v//9TvM+/fTTrFq1qm77tddey5YtW9KtW7f9ui4A7MnerlG706pVq1RVVdVbP2tqavLyyy/Xbbdt2zaDBg3Kvffem23btu1XrcuWLcs555yT0aNHp3fv3uncuXPeeOONneb927/9Wz7++OO67RdffDEtWrRI+/bt9+u6AHCg9Mk70ycDcCTSIwMHS9OGLgA4PE4//fRcdtllmT17dr3xH/zgBznzzDNz6623ZtiwYVm+fHnuvffe3Hfffbs9X01NTdasWVNvrFmzZjnllFPStm3b3H///TnxxBOzYcOG/PVf//U+13vttdfmvPPOy6xZszJkyJA8//zzefrpp+v+Yj5JbrjhhvziF7/IhRdemClTpuRrX/tajj/++PzmN7/J008/vcdfWHTu3DmffPJJ5syZkyFDhmTZsmWZP3/+TvOOOeaYXHvttZk9e3aaNm2aMWPG5Oyzz96rV9YBwJ68//77O62pJ5xwwl6tUXty7bXXZsaMGencuXO6du2aOXPm5L333qu3nt53330ZMGBA+vbtm6lTp6ZHjx4pLy/PSy+9lHXr1u3xtXJdunTJT37ykzzzzDPp2LFjHn744bz00kvp2LFjvXk7duzIqFGjcvPNN2f9+vWZMmVKxowZk/Jyf6sLQMPQJ+9MnwxAQ9Mj65HhUPIvDI4it9xyy06vWjnjjDPy2GOPZdGiRenevXsmT56cW265JSNGjNjtuT788MP07t273teQIUNSXl6eRYsWZfXq1enevXtuuOGG3Hnnnftc64ABAzJ//vzMmjUrPXv2zJIlS3LDDTekoqKibk5FRUWqq6szceLEPPTQQzn33HPTrVu3jB07NgMGDMjixYt3e42ePXtm1qxZmTlzZrp3755HHnkkM2bM2Gle8+bNM3HixFx66aUZMGBAWrRokUcffXSf7wkAduWFF17YaU19+OGH92qN2pOJEydm+PDhufzyy9O/f/+0aNEigwcPrreefvWrX80rr7ySgQMHZtKkSenZs2f69u2bOXPmZPz48bn11lt3e43vf//7+e53v5thw4alX79+2bx5c0aPHr3TvAsvvDBdunTJeeedl2HDhuXb3/52pk6dus/3BAAHkz65Pn0yAA1NjwwcSmWlffmABYAGdNVVV2XdunX553/+58N2zQULFmTs2LHZsmXLYbsmABwqtbW16datWy6++OI9NvMH04gRI7Jly5Y9/jIeANg3+mQA2H96ZDj6eJU6cMS66667MmjQoFRWVubpp5/OwoUL9/jqOgDg//3Xf/1Xli5dmvPPPz/bt2/Pvffem9/97ne59NJLG7o0AGA/6JMBYP/pkQHBOHDEWrlyZe6444588MEH6dSpU2bPnp2/+qu/auiyAKDRKC8vz4IFCzJ+/PiUSqV07949zz33XLp169bQpQEA+0GfDAD7T48MeJU6AAAAAAAAAIVW3tAFAAAAAAAAAMChJBgHAAAAAAAAoNAE4wAAAAAAAAAUmmAcAAAAAAAAgEITjAMAAAAAAABQaIJxAGCflJWVZfHixQd0jhEjRmTo0KEHpR4AAABoKHpkAGg8BOMAQD0bN27Mtddem06dOqVZs2Zp3759hgwZkurq6oN2jXvuuScLFiw4aOcDAACAQ0GPDADF0bShCwAAjhzr16/PgAED0rp169x55505/fTT88knn+SZZ57JNddck3Xr1h2U67Rq1eqgnAcAAAAOFT0yABSLJ8YBgDqjR49OWVlZVq5cme9973s5+eSTc9ppp2XcuHF58cUX6+a98847ueiii9K8efN06dIlf/d3f1e3r6amJqNGjUrHjh1z3HHH5ZRTTsk999xT7zqffU3cBRdckOuuuy4TJkxImzZt0q5du0ydOvVQ3y4AAAB8Lj0yABSLYBwASJK8++67WbJkSa655ppUVlbutL9169Z130+bNi0XX3xx/v3f/z1//ud/nssuuyzvvvtukqS2tjZf/vKX8/jjj+fXv/51Jk+enJtuuimPPfbYbq+/cOHCVFZWZsWKFbnjjjtyyy235Nlnnz2o9wgAAAB7Q48MAMUjGAcAkiS//e1vUyqV0rVr1z3OHTFiRIYPH57OnTtn+vTp+fDDD7Ny5cokyTHHHJNp06alb9++6dixYy677LKMHDlyj01/jx49MmXKlHTp0iWXX355+vbte1A/sw0AAAD2lh4ZAIrHZ4wDAEmSUqm013N79OhR931lZWVatmyZt956q25s7ty5efDBB7Nhw4Z8/PHH2bFjR3r16rXX50ySE088sd45AQAA4HDRIwNA8XhiHABIknTp0iVlZWVZt27dHucec8wx9bbLyspSW1ubJFm0aFHGjx+fUaNGZenSpVmzZk1GjhyZHTt27Pc5AQAA4HDSIwNA8QjGAYAkSZs2bTJ48ODMnTs327Zt22n/li1b9uo8y5YtyznnnJPRo0end+/e6dy5c954442DXC0AAAAcOnpkACgewTgAUGfu3LmpqanJWWedlSeeeCKvv/561q5dm9mzZ6d///57dY4uXbpk1apVeeaZZ/Kb3/wmP/zhD/PSSy8d4soBAADg4NIjA0CxCMYBgDqdOnXKyy+/nK9//ev5wQ9+kO7du2fQoEGprq7OvHnz9uoc3//+9/Pd7343w4YNS79+/bJ58+aMHj36EFcOAAAAB5ceGQCKpaxUKpUauggAAAAAAAAAOFQ8MQ4AAAAAAABAoQnGAQAAAAAAACg0wTgAAAAAAAAAhSYYBwAAAAAAAKDQBOMAAAAAAAAAFJpgHAAAAAAAAIBCE4wDAAAAAAAAUGiCcQAAAAAAAAAKTTAOAAAAAAAAQKEJxgEAAAAAAAAoNME4AAAAAAAAAIX2fzQA0BrNzT3TAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 2000x900 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns\n",
|
|
"\n",
|
|
"\n",
|
|
"def plt_combined_bar_graph(df, fraction_fields, error_fields, titles, ylabels):\n",
|
|
" \"\"\"\n",
|
|
" Plot bar graphs with error bars for specified fields in the provided DataFrame as subplots.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" df (pd.DataFrame): The DataFrame containing the data to be plotted.\n",
|
|
" fraction_fields (list[str]): List of column names in the DataFrame to be plotted on the y-axis for fractions.\n",
|
|
" error_fields (list[str]): List of column names in the DataFrame to be plotted for standard errors.\n",
|
|
" titles (list[str]): Titles of the plots.\n",
|
|
" ylabels (list[str]): Labels for the y-axis.\n",
|
|
"\n",
|
|
" This function does not return any value but displays the bar graph.\n",
|
|
" \"\"\"\n",
|
|
" n = len(fraction_fields) # Number of plots to create\n",
|
|
" fig, axs = plt.subplots(1, n, figsize=(10 * n, 9), sharey=True)\n",
|
|
"\n",
|
|
" for i, (fraction_field, error_field, title, ylabel) in enumerate(\n",
|
|
" zip(fraction_fields, error_fields, titles, ylabels)\n",
|
|
" ):\n",
|
|
" barplot = sns.barplot(\n",
|
|
" x=\"chain\",\n",
|
|
" y=fraction_field,\n",
|
|
" data=df.sort_values(\n",
|
|
" \"chain\", ascending=False\n",
|
|
" ), # Sort the DataFrame to reverse the order\n",
|
|
" ax=axs[i],\n",
|
|
" capsize=0.1,\n",
|
|
" errorbar=None,\n",
|
|
" )\n",
|
|
"\n",
|
|
" # Add error bars manually\n",
|
|
" for j, bar in enumerate(barplot.patches):\n",
|
|
" # Get the error for the current bar\n",
|
|
" error = df.sort_values(\"chain\", ascending=False)[error_field].iloc[j]\n",
|
|
" # Add error bars to each bar\n",
|
|
" axs[i].errorbar(\n",
|
|
" x=bar.get_x() + bar.get_width() / 2,\n",
|
|
" y=bar.get_height(),\n",
|
|
" yerr=error,\n",
|
|
" fmt=\"none\",\n",
|
|
" capsize=5,\n",
|
|
" color=\"black\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" axs[i].set_title(title)\n",
|
|
" axs[i].set_xlabel(\"Chain\")\n",
|
|
" axs[i].set_ylabel(ylabel)\n",
|
|
"\n",
|
|
" plt.tight_layout()\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"\n",
|
|
"# Define the columns and labels for the plots\n",
|
|
"fraction_fields = [\"Fraction Imports Correct\", \"Fraction Execution Correct\"]\n",
|
|
"error_fields = [\"Imports Correct Std Error\", \"Execution Correct Std Error\"]\n",
|
|
"\n",
|
|
"titles = [\n",
|
|
" \"Feedback Check Import Fraction by Chain\",\n",
|
|
" \"Feedback Check Execution Fraction by Chain\",\n",
|
|
"]\n",
|
|
"ylabels = [\"Fraction Correct\", \"Fraction Correct\"]\n",
|
|
"\n",
|
|
"# Call the function with the specified arguments\n",
|
|
"plt_combined_bar_graph(\n",
|
|
" correct_frac_and_errors, fraction_fields, error_fields, titles, ylabels\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "50c26dac-6825-4001-9cb5-4a4691a9685d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.11.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|