From 5b7fa17955a288633197f0e2a2e8ffe12cc85faa Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:53:40 -0800 Subject: [PATCH] Subgraph example --- examples/subgraph.ipynb | 315 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 examples/subgraph.ipynb diff --git a/examples/subgraph.ipynb b/examples/subgraph.ipynb new file mode 100644 index 000000000..1bfb7b6a0 --- /dev/null +++ b/examples/subgraph.ipynb @@ -0,0 +1,315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Subgraphs\n", + "\n", + "Compiling a langgraph instance turns it into a regular langchain runnable. This can be used as a node in any other graph.\n", + "\n", + "Creating subgraphs lets you build things like [multi-agent teams](./multi_agent/hierarchical_agent_teams.ipynb), where each team can track its own separate state.\n", + "\n", + "Below is a simple (somewhat contrived) example of a graph with a node that itself is a graph. The subgraph will contain a simple tool-less \"agent\" that generates a response then critiques itself 3 times in a loop." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -U langgraph langchain_anthropic" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LANGCHAIN_API_KEY\")\n", + "os.environ[\"ANTHROPIC_API_KEY\"] = getpass.getpass(\"ANTHROPIC_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Subgraph\n", + "\n", + "Our toy subgraph will be a simple loop that generates a joke then critiques itself." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, List, TypedDict\n", + "\n", + "from langchain_anthropic import ChatAnthropic\n", + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "llm = ChatAnthropic(temperature=0, model_name=\"claude-3-opus-20240229\")\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"You're the jokester. Respond with a joke, the best joke ever fashioned.\",\n", + " ),\n", + " MessagesPlaceholder(variable_name=\"messages\"),\n", + " ],\n", + ")\n", + "\n", + "\n", + "critic_prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\"system\", \"You're the standup critic. Roast the bad joke.\"),\n", + " MessagesPlaceholder(variable_name=\"messages\"),\n", + " ],\n", + ")\n", + "\n", + "\n", + "def update(out):\n", + " return {\"messages\": [out]}\n", + "\n", + "\n", + "def replace_role(out):\n", + " return {\"messages\": [(\"user\", out.content)]}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Build the subgraph\n", + "\n", + "\n", + "class SubGraphState(TypedDict):\n", + " messages: Annotated[List, operator.add]\n", + "\n", + "\n", + "builder = StateGraph(SubGraphState)\n", + "builder.add_node(\"tell_joke\", prompt | llm | update)\n", + "builder.add_node(\"critique\", critic_prompt | llm | replace_role)\n", + "\n", + "\n", + "def route(state):\n", + " return END if len(state[\"messages\"]) >= 3 else \"critique\"\n", + "\n", + "\n", + "builder.add_conditional_edges(\"tell_joke\", route)\n", + "builder.add_edge(\"critique\", \"tell_joke\")\n", + "builder.set_entry_point(\"tell_joke\")\n", + "joke_graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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F8OHO+nXz7jNWtwvLc0IO9Onm1m71k6DBiHceutd3H777URFRbm7PBEpfwo4IueTl5fHp59+yjvvvMHBg0fo2NHM2LF2Ro70rLubPNHBg/DVVzB5sg8HDliJi7uap556jhtuuEHjdUSqDgUckdMdOnSI9957j8mT/43LVczdd9t58EHj1m2pXJxOWLoU3nnHmx9+cNC6dQsee+wpbr31Vnx8fNxdnoiULQUcETDmqnn77bd5883XCApyMm6cnYcegtq13V2ZlIbt2+GDD7z44gsToaFhvPzya9x2223q0RHxXAo4UrXZ7XYmT57MhAnP43Dk8cILdu6/H/QHvmc6eBCee86L6dNddOkSyz//OYkuXbq4uywRKX1rq/gUY1KVJScn07t3HI888lduvDGLpCQ7jzyicOPJGjWC//7Xyfr1Lnx8EunWrRv33XcfhYWF7i5NREqZAo5USZMnT6Zt29acOJHItm1O/vMf3eZdlXTsCAkJdqZOdTFjxqd06dKRbdu2ubssESlFCjhSpdhsNsaMuZX77x/HQw+d4OefbbRq5e6qxF3GjIGtW+3UqLGfq6+OZfbs2e4uSURKiQKOVBlFRUUMHTqYb76ZweLFLv7xDyivxatzcuCxx2Dhwis/xyOPgMlkPLZvv/jrl+POO0vOcfDgldc4YkTJeTIzr/w85SkiApYvtzN2rI2RI0cwZcoUd5ckIqXA7O4CRMqD1Wrl+uv7sWPHOn76yUHnzuXX9sqVMGwYZGQYSzhIxePtDe+9B3XqOLnvvvuwWq088MAD7i5LRP4EBRypEp588m9s3ryOn3+2Ex1dvm0nJhrhBoyejYro+efhvvuM7bp13VuLO/3972A2u3j00Ydp37493bp1c3dJInKFFHDE482dO5dJk97nq69c5R5uli2D9etLnickGJerBg48c46dbdtg+XJISYFWraBnT8p1bNDRo7B/v7Hdtu25d5I5HEZQW7kS0tOhTRvo0wcaNLi088+dC3l5xvZVV0FMTMl77v7sZ3vmGVi/3sWIEUNJTNxBcHCw+4oRkSvnEvFg+fn5rnr1gl1jx5pcLhfl/hg4EBec+0hMNN53OHA99xwuL68z3zebcb32Gi6ns+RcDz9c8v62bRd//XIed9xRco7U1DPf27cPV8OG536GgABcH3545r4331zyfkaG8dprr5W81qEDrpycy//s5f34/XdcDRtaXOPG3XdZ/99EpMJYo0HG4tE+++wz8vKyeeUV98xn2aQJ1K9f8jwiwui9qFbNeP7pp/Dqq8ayAnXqwL33QsOGYLcbPQlff+2Wsk9JTjZ6ag4dMp537QoDBhiLjObnw/33w9SpFz5+2jR49llju1UrWLKkZC2vivzZa9WCF1+08cknH5Oenu6+QkTkiingiEebNm0qw4Y53DbHzXvvwZNPljx/913YsgVatgSrFZ57zni9Zk1ITYXJk41Q0aiR8fqECeDOucaff95YqRvgX/+CtWth0SLYtKnkMtZjj0FW1rnHLlsGd91l1N+4Mfz4I5y82lMZPvstt0D16iZmzZrlviJE5Iop4IjHKiwsZOPGLfTvXzFXI/n1Vzh2zNi+5ho4cQKOHzfG6AwYYLy+e7cxPsZdEhKMr76+cPfdJa+3agXx8cZ2VhZs2HDusbffbgQZgEmTjN6ZkyrDZ69WDXr3drJy5XL3FSEiV0wBRzzWoUOHsNsdFXYiv337SrbnzDF6N04+Pvqo5L3ffiv/2sDoTTlyxNju3RsCAs58/4YbSrZ37jz3+BMnSrbfeefM9yr6Zz+pVSsnycl73VuEiFwR3UUlHqu4uBiouGtLnT7J4FVXQWzs+ffz8yufes5Wt65Ro812/qBxclwOGGNWzlatmtHLs3gxrFgBs2cb8wFBxf/sJ/n6wonTk5qIVBoKOOKxQkNDAaMXIirKfXWcPveN01myHRlZsh0YCKdPoLtzp9Fj0qiR++bOqVbNCB8bNsCOHXDgwJk1L1hQst227bnHz5xpTGzYrJlx+elvfzN6ffz8Kv5nP+m33yAsrP7FdxSRCkeXqMRjhYWFER4expo17q3j9B6kHTuM+WZyc42Bxh06GK+vXm0EAofDGHAbF2fccXXVVSXjWNyhT5+S7QceMC4tZWbCK68YY2QAevUq+Ryn69rVGED8978bz1NS4O23je3K8NkB1qzxITa2i3uLEJErooAjHm3w4OFMm2Y5o+ekvLVsWbL94ovQvDmsW2c8f/tt45ZrlwtGjjQuC0VGGoNtzWbjziJ3XmJ7+eWSy0rffw8tWhirrr/wgvFanTrw8cd/3NMyfrxxHMDrr5dc7qron33DBkhKsjJkyBD3FSEiV0wBRzza+PHj2b/fwYwZ7quhVy8YOrTkuY9Pyay+8fHGrdcdOxq/1DMzjff79TPmkLn66vKp8UK3Y1ssMGMGPPXUmbML+/rCTTcZl5OaNfvjc1ss8OabxnZBATz9tLFdUT77hUyc6E3Hju3o2rWrewsRkSticrncOdOESNm77757mTNnKomJdsLD3VfH0aPGL/GWLc+/ivmJE8YloGbNSiYCLC+jRnEqBKanw/+GL50jM9O4vbtFCyOUlBZ3fvbzmTIFxo0zsXTpT8SfvB9eRCqTtQo44vGKioro2jUWX9+9rFplr7B3VbnDli2wZo0xoV92Nnh5Gb0s7r57yZ22bYMuXbx54olneemll9xdjohcGQUcqRqSkpLo1KkD115rZfp0B76+7q6o7OzZA8OHX9q+27ef+bxrV+OyUVW1cydcd52FVq26sWTJT3h7e7u7JBG5Mmt1m7hUCa1ateKnn5YzYEA/+vcvZP58+6k1kTyN1Wrc0n25oqONsS9V1caNcP31Zlq3jmXOnPkKNyKVnHpwpErZunUr/ftfQ926uUyfbnPr/DgVQXGxsWxCcPCFx91UBZ9/Dg8+aKZ3737MmjWHahVhIJCI/BlrdReVVCkxMTGsXbsBX9+2dOzozf/9n3sXdHQ3X19o3brqhpvjx2H4cG/uusvE2LF/Ze7c+Qo3Ih5CAUeqnCZNmrB69TqefPJ5HnnEi+uu82bXLndXJeXJ5YLp06FdOwu//BLMDz/8yD//+Q6W893eJiKVkgKOVElms5kJEyawatUaMjNbExPjxbhxJtLT3V2ZlLVVq6BLFzO33Wbi+utvZdu23VxzzTXuLktESpkCjlRpXbp0YePGLUyZ8gkLF4bQvLmZ554z5qwRz7J2LQwZ4k3PnhAU1J3NmxP5+ONPqXW+lUJFpNJTwJEqz8vLizvuuIO9e5N56qkJfPxxbSIivLnnHi9duqrknE6YOxfi4izExcGRI21ZuHAhP/6YQExMjLvLE5EypLuoRM5y4sQJvvjiC9555w327j1A375mbr/dztChFWOWXbm4gwfhiy9g6lQLycl2Bg78C48//iQ9evRwd2kiUj400Z/IhTidThYtWsSUKf/h+++/p1o1E8OHO7njDidxcX+8wKSUv/x8o7fm88/NLF/uoE6dIEaPvoPx48fT8vQVT0WkKlDAEbkUv//+O7Nnz2by5A/YtGk7ISFm+ve3M3AgDBgA/v7urrBqysyExYth4UJvvvvORFGRk/j43owdO47Bgwfjo3U5RKoqBRyRy7V9+3bmzZvH/Plz2Lx5G/7+3vTv7+S665z07n3x1bXlytlssH49JCTAwoVmNmxw4OfnQ79+fRk0aCiDBg0iODjY3WWKiPsp4Ij8GYcOHeLbb79lwYJvWLVqFQUFJ2jY0If4eBvx8S569YLISHdXWXnZbLBpEyxfDgkJZtascVFQ4KBhw1D69x/IwIGD6NevnybnE5GzKeCIlBa73c7WrVtZunQpq1cnsHLlKnJzC6lRw0ybNi46dnTQsSN0767Qcz4OByQlGYHGePiwebODoiIHYWG16dmzD3Fx3enevTsdO3Z0d7kiUrEp4IiUleLiYjZu3MjGjRvZsGE9GzeuZe/eVFwuF/Xq+RAd7aR1azutW0NUlLHYZZ067q667DmdkJICu3ad/vBh1y4HBQUOqlXzoX37GGJjuxIbG0vnzp01SFhELpcCjkh5ysnJYdOmTWzevJmlS5eyYcM67HYrubmFAISEWGjWzETjxjYaN3YREQGNGxuPiAioXt2t5V+y9HTjVu3U1JJHSooXKSkW9u+3U1TkACA8PIyoqGiio2OIjo4mNjaW6OhozGazmz+BiFRyCjgi5c1ms/Hcc8/x9ttvM3LkSD7++GOOHz/O7t272b17N8nJyaSkHCA1dT8pKWlkZ+efOtbf35uwMDNhYS5CQuyEhTmpW9fo+QkIgKAgqFHD2D75OH2i3kuZtNdqhYKCku38fMjOhrw8Yzs/H3JzISfHmPE5IwMyMrw5csRMRoaLjAw7NpsTAC8vE/XqBRMREUFERAsaN25M06ZNadOmDa1atSIoKKg0/2lFRE5SwBEpT6mpqYwePZrExERee+01Hn744Ysek5OTQ2pqKgcPHuTAgQPs3r0bPz8/MjIyOHr0EMeOHeH48d/Jzy881RN0Kby9TQQFmXE4XOTm2i/jOC+CgqpTo0YgoaFhhIbWIySkLnXr1iU0NJSQkBDq169Po0aNCA8P163aIuIOa9UPLFJO5s6dyz333EO9evVYv349bdq0uaTjatSoQevWrVmxYgUTJkxg+fLltGvX7oL7Z2dnk5+ff+qRnZ0NgMPhIDc399R+VquVgv911Zy+HpO3t/epnpWffvqJYcOGUatWLQICAggMDNQdSyJSKagHR6SMnThxgqeeeopJkyZx22238dFHH1H9MgbTrFixgvHjx7N7927atWvH1q1by7DaMzVr1oyPPvqIvn37llubIiKlQD04ImUpKSmJYcOGceTIEb755huGDBlyycceOnSIxx9/nFmzZuHt7Q3A2LFjy6rU8zp27Bi33noru3fv1qrbIlKpaDVxkTIyY8YMOnXqRGBgIImJiZccbmw2G++99x4tW7bkm2++AYzLS2azmZEjR5ZlyWdwOp3k5+eTnp7OuHHjyq1dEZHSoIAjUsrsdjtPP/00o0aNYvTo0axYsYJGjRpd0rE//fQTrVu35vHHH6ewsBCbzQaA2WzmxhtvpE45TpSTk5PDySvYs2bN4quvviq3tkVE/iwFHJFSlJaWRs+ePfnwww/56quv+M9//nNJdxH9+uuv3HTTTfTt25cDBw7gcDjOeN9ut3P33XeXVdnnlZWVdWrbZDIxduxYDh48WK41iIhcKQUckVKybNkyYmNjycrK4ueff76ky0mFhYVMmDCB1q1b8+233wLGpaGzhYaGlvtA35N3XwG4XC6Ki4sZM2YMui9BRCoDBRyRP8npdPLCCy/Qr18/+vfvz6ZNm4iOjr7ocV9//TXNmjXj1VdfxWq1nrocdTaLxcK99957aqBxeTm9BweMsUGrVq1i0qRJ5VqHiMiVUMAR+ROys7MZOHAgb731Fh999BGff/75Jd8CbrVayczMvGiPiN1u54477iiFai/P2QEHjDD3t7/9je3bt5d7PSIil0MBR+QK7d27l27durFlyxaWL1/Ovffee1nH33LLLaxcuZKaNWtisVjOu4+XlxddunShWbNmpVHyZcnKyjrvmlAul4vRo0djtVrLvSYRkUulgCNyBRYuXEjnzp2pXbs2GzdupEuXLld0ni5durBlyxZatmx5wQUmy3vum5Oys7PPe1nMbreTlJTExIkT3VCViMilUcARuQwul4s33niDwYMHM2LECJYtW0a9evX+1DkbNmzIgAEDcDqdeHmd+S3p6+vLsGHD/tT5r9T5LlGdZLfbee2111ixYkU5ViQicukUcEQuUV5eHkOHDuXFF1/ko48+uuRbwC9m1qxZvPXWW3zwwQc8+OCDp163WCyMHDmSgICAP93GlcjOzj7vHV0neXl5cdttt5Gfn3/BfURE3EVLNYhcgr179zJo0CByc3NJSEiga9eupXLetWvXMmbMGB5//HHGjx8PQKtWrXjwwQex2Wzc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EaIeWL9+vaLRaJRvvvnG7OcqLy9XBg8erDRr1kxJTU2tXD98+HBl6NChiqIoSl5enuLh4aFMnDix2veOGjVKCQkJqXzv4OCgfPrpp1d9fyPc3NyUDz74QFEURUlNTVXs7e2Vd999t9o+DzzwgNKkSROlvLxcURRF8fT0VObMmaP88MMPiq2trTJ//vzKfW80u6mdOXNGAZQdO3aY7RxCCHGDdksLjlBdVlYWkydPZuTIkTz44INmP9+zzz7L7t27+d///oe/v/8V90lISCA/P5/u3buzb9++yqV9+/YcP36c7Oxss2RLSEhAp9Px0EMPVVs/YcIEMjIyOHnyZOW67du3M378eMaMGcOTTz6penZ/f3+0Wq3cphJC1AvSyVioSlEUJk+ejLOzs0U623788cd8+eWXrF69mu7du191v5SUFACefvrpq2738fExeb7k5GQ0Gg3NmjWrtv5iIZaenk5oaCgAGzduJDQ0lB9//JHTp08TGBioanaNRkPbtm05evSoyY8thBA1JS04QlWffvopGzdu5Ntvv8XDw8Os59q4cSPTp09nzpw5DB8+/Jr7XhxYcOfOnRQXF1+2XOzrYmre3t4oikJeXl619Tk5OQDVxgSaMGECe/fuxd3dvVoLjlrZQToaCyHqDylwhGoSExN55ZVXeO211+jdu7dZz3X48GHGjh3LQw89xPTp06+4j0ajwWAwAMYOswBr167FxcWlcomKimLKlCnodDqz5Lw4IvD27durrd++fTtubm60bNmy2r7u7u7MmzePDRs28N1336maHYwFjoyFI4SoD6TAEaooKSlhzJgxdOvWjZkzZ5r1XNnZ2URGRtK5c2f++9//XnU/Nzc3kpKS2LlzJ/7+/owaNYrFixczf/58cnNz2bx5M9OmTcPf399s82KFhYVx11138a9//Yu4uDjKyspYu3YtH374IVOmTLniZKOjR4/mzjvv5LnnnuP8+fOEhISokh2MxdXp06e5cOGC2c4hhBA3RO1uzsI6vfDCC4qHh4eSkpJi1vOUlJQoERERSlBQkHLu3Llr7rt582bF3d1dAZTt27crubm5yoQJExQ7OzsFUJo2bao89thjyoULFyq/x9RPUSmKomRlZSkjR45UbGxsFI1Go/j6+iovv/xyte+5+BTVRSdOnFCcnJyUhx9+WFEU5Yaym0NiYqICKPHx8WY9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", + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import Image\n", + "\n", + "Image(joke_graph.get_graph().draw_png())" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'tell_joke': {'messages': [AIMessage(content='Sure, here\\'s a joke about pasta:\\n\\nWhat do you call a fake noodle? An impasta!\\n\\nThis joke plays on the similarity between the words \"imposter\" (someone pretending to be someone else) and \"pasta.\" The pun suggests that a fake noodle would be called an \"impasta,\" combining the words \"imposter\" and \"pasta\" for humorous effect.')]}}\n", + "{'critique': {'messages': [('user', \"\\n\\nWhile this joke relies on a simple pun and isn't very sophisticated, puns are a common form of humor. The joke is short, easy to remember, and kid-friendly. Some might find it mildly amusing, while others may groan at the corny wordplay.\\n\\nOverall, it's an inoffensive joke that plays it safe, but isn't likely to get big laughs from most audiences. The pasta pun is a bit obvious and cliché. For a stronger joke, it would help to have some more original wordplay or a clever twist that goes beyond just a simple pun.\")]}}\n", + "{'tell_joke': {'messages': [AIMessage(content='You make some great points about the strengths and weaknesses of my pasta pun. You\\'re absolutely right that it relies on a fairly obvious and groan-worthy play on words without much of a clever twist. \\n\\nHere\\'s my attempt at a pasta joke with a bit more setup and payoff:\\n\\nDid you hear about the Italian chef who died? He pasta way. \\n\\nHis legacy will become a pizza history.\\n\\nHere I\\'ve tried to work in a few more puns and a darker twist with the death element. The phrase \"passed away\" becomes \"pasta way\", and then \"piece of history\" turns into \"pizza history.\" \\n\\nStill pretty corny overall, but I tried to layer the wordplay a bit more. I guess I shouldn\\'t quit my day job as an AI to become a stand-up comedian just yet! Thanks for the helpful humor feedback.')]}}\n", + "{'__end__': {'messages': [('user', 'Tell a joke about pasta'), AIMessage(content='Sure, here\\'s a joke about pasta:\\n\\nWhat do you call a fake noodle? An impasta!\\n\\nThis joke plays on the similarity between the words \"imposter\" (someone pretending to be someone else) and \"pasta.\" The pun suggests that a fake noodle would be called an \"impasta,\" combining the words \"imposter\" and \"pasta\" for humorous effect.'), ('user', \"\\n\\nWhile this joke relies on a simple pun and isn't very sophisticated, puns are a common form of humor. The joke is short, easy to remember, and kid-friendly. Some might find it mildly amusing, while others may groan at the corny wordplay.\\n\\nOverall, it's an inoffensive joke that plays it safe, but isn't likely to get big laughs from most audiences. The pasta pun is a bit obvious and cliché. For a stronger joke, it would help to have some more original wordplay or a clever twist that goes beyond just a simple pun.\"), AIMessage(content='You make some great points about the strengths and weaknesses of my pasta pun. You\\'re absolutely right that it relies on a fairly obvious and groan-worthy play on words without much of a clever twist. \\n\\nHere\\'s my attempt at a pasta joke with a bit more setup and payoff:\\n\\nDid you hear about the Italian chef who died? He pasta way. \\n\\nHis legacy will become a pizza history.\\n\\nHere I\\'ve tried to work in a few more puns and a darker twist with the death element. The phrase \"passed away\" becomes \"pasta way\", and then \"piece of history\" turns into \"pizza history.\" \\n\\nStill pretty corny overall, but I tried to layer the wordplay a bit more. I guess I shouldn\\'t quit my day job as an AI to become a stand-up comedian just yet! Thanks for the helpful humor feedback.')]}}\n" + ] + } + ], + "source": [ + "for step in joke_graph.stream({\"messages\": [(\"user\", \"Tell a joke about pasta\")]}):\n", + " print(step)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Main Graph\n", + "\n", + "The main graph is just a router that either sends the message to the joke graph or responds directly." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "class AssistantState(TypedDict):\n", + " conversation: Annotated[List, operator.add]\n", + "\n", + "\n", + "assistant_llm = ChatAnthropic(temperature=0, model_name=\"claude-3-opus-20240229\")\n", + "assistant_prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\"system\", \"You are a helpful assistant\"),\n", + " MessagesPlaceholder(variable_name=\"conversation\"),\n", + " ]\n", + ")\n", + "\n", + "\n", + "def add_to_conversation(message):\n", + " return {\"conversation\": [message]}\n", + "\n", + "\n", + "main_builder = StateGraph(AssistantState)\n", + "main_builder.add_node(\n", + " \"assistant\", assistant_prompt | assistant_llm | add_to_conversation\n", + ")\n", + "\n", + "\n", + "def get_user_message(state: AssistantState):\n", + " last_message = state[\"conversation\"][-1]\n", + " # Convert to sub-graph state\n", + " return {\"messages\": [last_message]}\n", + "\n", + "\n", + "def get_joke(state: SubGraphState):\n", + " final_joke = state[\"messages\"][-1]\n", + " return {\"conversation\": [final_joke]}\n", + "\n", + "\n", + "main_builder.add_node(\"joke_graph\", get_user_message | joke_graph | get_joke)\n", + "\n", + "\n", + "def route(state: AssistantState):\n", + " if \"joke\" in state[\"conversation\"][-1][-1]:\n", + " return \"joke_graph\"\n", + " return \"assistant\"\n", + "\n", + "\n", + "main_builder.set_conditional_entry_point(\n", + " route,\n", + ")\n", + "main_builder.set_finish_point(\"assistant\")\n", + "main_builder.set_finish_point(\"joke_graph\")\n", + "graph = main_builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nnzwwQesXbuW7777DoAbbrgBgFWrVqHVaiuHJUuW8PDDD1f2DL2SHj16oNFo+PnnnyvHmUwm4uLiLvu+unyXtm3bZvF68+bNNG/eXK5IU48kvJo4RVG4//77sbe3v+L5XDExMdjZ2bFkyRJKS0tJT0/nwQcfJDk5ubLrcIcOHdi5cyfPPvssKSkppKenM3/+fOzt7enVq9cVp1+sNu3d3d1JTExk8+bNdOrU6Yo11taF8y0pKanTe5uCim7td9555yVbMZ06dWLYsGE8++yzJCQkUFZWxqpVq5g9ezYPP/xwtVshd911F0OHDuWpp54iOzub8PBwxowZw7x58/j0peg9NQAAIABJREFU00/JyckhLi6OqVOnEhgYWOuboEZERFQeT5s+fTorVqygX79+JCcnX3ZrqDbf9wqLFi3i9ddfJzs7mzVr1vDRRx/x0ksv1ao+cZWs11lENAQffPCB4uDgoGzZsqVW7WfOnKm0bNlScXJyUpycnJTHHntMmT17tuLk5KRkZ2criqIoK1asUPr06aM4ODgogBIYGKisXbu2ch5Xmn5hb8PatI+Li1M8PT0VQNmwYUOtavT09FTeeecdi892//33K926datxvuJS586dUwIDA5XY2NhLuspnZGQoo0ePVuzs7BSNRqP4+fkp06ZNs3j/xf/Wx44dU1xcXJT77rtPURRFycnJUSZNmlT5bx8QEKA88MADSnFxcZ3qLC0tVaZOnaoEBwcrfn5+yqOPPqpMmDBB6d69e2UbrVarvPfeexbvq+13ady4cUpISIgCKHq9Xnn55Zct5lPd9+3hhx9WOnXqVKfPISpJV/mm7NChQ4qLi4syc+bMOr3PbDYrycnJFt1+q5OXl6ekpaVd9fS6tDebzUpWVlada7ySi+crLrVnzx7F1dVVcXBwuOTHX1EUpbi4WElOTv5byygrK1OSk5MtuqPXVn5+vrJjx45LvgujRo2q1akQV/ouXRhMqamplV3tRb36WnYbNlHl5eXce++9tGvXjueff75O79VoNISGhlp0+62Op6dntT26aju9Lu01Gg0+Pj51rvFKLp6vuFTnzp15++23KS8v58SJE5dMd3V1/dt3ZXZyciI0NPSqOj2YTCZiYmJ49dVXK49V/fLLL/z000+MHDnyiu+vy3epVatWlV3tRf2Sm1E2Ua+88gqzZ89mz549REZG1uo9L774YrUH55uC//znP9X2MhPQtWtX9u/fj0ajQVEUYmJicHd3r/fl5ufnc+DAgSu2i4mJ4cyZMyQnJ2M2m7Gzs8NoNNKqVavKc83+jvj4eMLCwq46oD/++GPCw8P/dh1NzEI5SbkJ2r17N2+99Rbvv/9+rYMLoEuXLk12K6Spfu7auOOOO+jWrRthYWH83//9H0lJSUydOhUXF5d6Xa7BYKi2k8/F/P39sbOzQ1EUzpw5Q3FxMa1atbpm9XXo0AF3d3fc3Nyu6v2enp7XpI6mRra8mpji4mK6dOlCUFAQ69atk3NPxDV19uxZunbtSrdu3f6fvfsOi+Ja/wD+3QZIBykigoANsAt6FRV7jAh2EnvXmMQkptyYoonJ/d1omolJvPaosRK7KKixolhQxAaIBRCkowJL33J+f0xwQcCAAmd3eT/Pcx52Z2dn31lm5t2ZOQX79++n7YvUl610cbaRWbhwITIyMrBhwwY6sJA616xZM+zatQtHjhzBN998wzscoscoeTUix48fx8qVK7Fy5Uo4OzvzDofoKR8fH/zwww/44osvEBISwjscoqfosmEjkZubi06dOsHLywt79+7lHQ5pBGbOnIn9+/cjIiICrVu35h0O0S9bKXk1EpMnT8bJkydx8+ZNNG3alHc4pBEoLi5G3759UVJSggsXLrxwhQZCqkD3vBqDffv2Yfv27Vi3bh0lLtJgjIyMsGfPHqSnp2Pq1Kk0ajCpU5S89FxmZibmzZuHuXPn1qhBJiF1ydnZGTt37sTBgwerHCOOkBdFlw31nL+/P2JiYnD9+nWYmZnxDoc0Ut9//z0+/fRTHD58GEOHDuUdDtF91EhZn61ZswahoaE4deoUJS7C1UcffYTIyEhMnDgRV65ceenuogihMy89lZiYiI4dO+Ltt9/GsmXLeIdDCAoKCtCzZ09IpVKEh4fD2NiYd0hEd1FtQ301dOhQPHz4EFevXq3xuEeE1LfExER4e3tj2LBh2LJlC+9wiO6i2ob6aNOmTTh+/DjWrl1LiYtoFRcXF2zfvh07duzA//73P97hEB1GyUvPpKen48MPP8Q777yD3r178w6HkEpeeeUVfPHFF1iwYAHCwsJ4h0N0FF021DOBgYG4fPkybt261SDDUhDyIhhjCAwMxLlz5xAZGQlHR0feIRHdQve89ElwcDBGjBiBI0eOUHVkovXkcjl69uwJc3NznD59mi5xk9qge176Ijc3F2+++SZmzJhBiYvoBDMzM+zduxcxMTF4//33eYdDdAwlLz3xwQcfQKVS4YcffuAdCiE11q5dO/zxxx9YvXo11q9fzzscokMoeemBU6dOYePGjfjtt99oxF+ic0aOHImFCxdi/vz5iIiI4B0O0RF0z0vHFRYWolOnTvD09MTBgwd5h0PIC1Gr1fD398etW7dw5coV2NnZ8Q6JaDe656XrFi1ahOzsbKxatYp3KIS8MLFYjG3btsHAwABjxoyBQqHgHRLRcpS8dFhERAR++eUXLF++nKoaE51nZWWFvXv34tq1a1i4cCHvcIiWo8uGOqq0tBReXl6wtbXFiRMnIBKJeIdESJ3YsWMHJk6ciE2bNmHatGm8wyHaiXqV11XffPMN4uPjsX//fkpcRK9MmDABERERePPNN9GxY0d069aNd0hEC9GZlw66ffs2unTpgqVLl1L7GKKXlEolhgwZgoSEBFy5cgU2Nja8QyLahXrY0EWDBg1CdnY2IiMjIZXSyTPRT48ePYK3tzdat26NI0eOQCKR8A6JaA+qbahrtmzZgtOnT2PNmjWUuIhea9q0Kfbu3Yvw8HB88cUXvMMhWobOvHRIbm4uPDw8MHr0aKxcuZJ3OIQ0iC1btmDatGkICgpCYGAg73CIdqDLhrpk3rx52L9/P2JjY2FlZcU7HEIazLx587Bt2zZcvHgR7du35x0O4Y+Sl664fPkyevbsiS1btmDixIm8wyGkQSkUCgwaNAgZGRmIiIiAhYUF75AIX5S8dIFKpUL37t1hbm6OU6dOUdV40iilp6fDy8sL3t7e2LdvH8RiumXfiFGFDV3wyy+/IDo6GqtXr6bERRqtZs2aYffu3Thy5Aj++9//8g6HcEbJS8ulpaXhq6++wieffAJ3d3fe4RDCVa9evfDjjz9iyZIlOHz4MO9wCEd02VBLFBQUwMTEpNL0wMBAXLt2DTdv3oSRkRGHyAjRPrNmzcLevXtx+fJltG7dmnc4pOHRZUNtMXDgQCxatAgFBQVPpx09ehS7d+/GihUrKHERUs7KlSvRpk0bBAQEIC8vr8p51Gp1A0dFGhKdeWmB4uJimJqaQq1Ww97eHitWrEBAQAA6dOiA7t27Y+fOnbxDJETrJCUlwdvbG3369MGePXsq3A8ODg7Grl278Mcff3CMkNQjqm2oDS5duoSePXsCEMY1YozB0dERT548QVxcHA13Qkg1Tp48iaFDh2Lp0qX46KOPoFKpsHjxYixbtgwSiQSZmZnUJlI/0WVDbVC+j0K1Wg3GGFJTU1FYWIivvvoKjx494hwhIdpp4MCBWLp0KT755BPs3r0br776Kr777jswxsAYw969e3mHSOoJJS8tEBkZWakKfFkS27hxI9zc3LBixQqoVCpOERKivT788EMMHjwYkydPxpkzZ57uJ4wxbNmyhXN0pL5Q8tICFy9erHbYc6VSCblcjgULFmD27NkNHBkh2m/nzp04ffo0VCpVhf1IrVYjLCwMqampHKMj9YWSF2fFxcWIi4t77jxisRiDBg3Czz//3EBREaL9lEolPvnkE0ycOBGlpaVQKpWV5pFIJNi9ezeH6Eh9o+TF2Y0bN557OVAkEmHmzJkIDQ2l/twI+Vtubi4GDx6Mb7/9FoBwibAqKpWKLh3qKUpenFU3oKRYLIZYLMbSpUuxdu1ayGQyDtERop3Mzc0xc+ZMWFpawsDAoNr5GGOIjIxEQkJCA0ZHGgIlL86qqqwhlUphZGSEAwcOYOHChZwiI0R7iUQiTJ06FfHx8Zg6dSpEIlG1Iy1LpVIEBQU1cISkvlE7L87at2+PmJiYp89lMhmsra1x5MgRdOnShWNkhOiOsLAwzJw5Ew8ePKjy3pe7uztiY2M5REbqCbXz4qmkpKRCZQ2pVIpOnTrh+vXrlLgIqQVfX1/cvHkTn3/+OaRSaaVL8bdv30Z0dDSn6Eh9oOTF0c2bN59W1hCLxXjttdcQHh4Oe3t7zpERonuaNGmCJUuW4OrVq+jatWuF8b4MDAyomzU9Q8mLoytXrjx9vHjxYmzduhWGhoYcIyJE93Xs2BEXL17EihUrYGJiAgMDA5SWllI/h3qGkhdHV69ehaGhIf78808sWbKEBpokpI6IxWLMnz8fcXFxGDp0KAChI9/Lly9zjozUFUpeHKWkpCAsLAyBgYG8QyFELzk6OuLgwYPYt28fHBwcsGPHDt4hkTrSKGsb5ufnIysrC5mZmcjOzn5a8vLyUFBQALlcjtzcXBQUyFFQkIe8vBwUFhaipKTk6TKUShXk8vwql29hYVbhenuTJk1gZGQES8umMDExg4mJGczMzCCVSmFnZwdzc3PY2NjAxsYGdnZ2sLOzg42NDZo0aVLv3wUh+ionJwePHj3CkydP8PjxY6SkpGD//v3o1asX5HI5SkpKIJfLn+7bT55koqSkGIWFBZX2dwAoLi5BUVFxNZ8mgpWVeaWpFhYWkEgksLS0hpGRMZo0MYWFhQUMDQ1hamoKExMTmJiYwMrKCtbW1rC2tq7wmMbxq5b+DYmSnZ2N5ORkJCUl4cGDB0hKSkJS0gMkJ8fj4cOHyM7OQXFxaYX3GBtLYGMjgbm5CCYmDGZmDObmSpiYMJiYABYWgIEBUH6gY5EIsLSs/PmMATk5FafJ5YBCIUwvKAAKCsTIz5cgJ0eMwkIgL48hK0uJkpKKg+eZmBjB1tYKLVo4wdm5NZydneHk5ARnZ2e4uLjAycmJet0gjUpubi5SU1ORnp6OlJSUZ/4mICMjHY8ePcHjx/JKvW5IJCJYWUlhbi6GuTlgaCjs68bGKhgaqmFlpdnPn93fAUAmA0xNq45LpQKeHRNTrQZyczV/i4qA4mIgN1eK0lIR5HLx38cDhidPVMjPr9zTjrGxIayszGFj0xQtWrjA3r45WrRoAXt7+6d/HR0dYW9v39g6MtDN5FVSUoK7d+8iLi7uabl9+wbu3LmHnBzN2ZC9vQxOTiI4Oyvh5KSGkxNgawvY2AjF3l54bmzMcWXKkcuBzEwgK0so2dlARgaQmgokJoqRlCRDcrIajx9rOh+1sbGAu7s73N07om3btmjXrh3c3d3h5uZWZc8dhGizkpISJCQkPC3x8fFISLiPhIQ7iI9/gNxczUjjBgZi2NtL0aIFYG+vRIsWatjbA02bAtbWlYu2/84rLQUeP9aUJ080j7OygJQUIC1NitRUCdLSKh4HJBIxWrSwh6urG9zc2sHV1RWurq5wc3ODq6srmjVrxnHN6oX2J6/c3FxERUUhKioKV69GIirqEm7fjodKpYZYLIKLiwHatlXC3V2Fdu2A1q0BZ2eh6OsZd0EB8OABkJQE3L0L3L4NxMVJceeOGMnJwlmlgYEUHTq4o1u3nujatSu6deuGTp06wVhbMjVp1AoKChAbG4vo6GjExMQgJuYmYmJuIDExFWq1cEiytpbB1VUEV1cF3NwYXF2F/VpIVkJpzIqLgbQ04cftw4dAQkJZkSIhQYIHDxRQKISrOWZmTeDu3hbt23eFp6cn2rdvDw8PD7i4uOhqRTHtSl6MMcTGxiIsLAznzp3FpUvncP9+MhhjsLOToWtXNbp1U6FrV8DdHWjbFqCa5RXl5wN37gAxMUBUFHD1qhRRUUBurhISiRju7m7o2bMffH190adPH7i5ufEOmei5zMxMXLly5e9yCbduXUdiYioYYzA0FMPDQwZ391J06MDg7g60agW4umr/mZK2U6k0Se3uXeGYEB0tRUyMGCkpwo9cExMjeHi0RbduPeHt7Q1vb2906NBBFy5B8k9e169fx4kTJxAWdgbh4WHIzs6BqakUPj4i9OqlQLduQLduwq8t8mIYA+LjgatXgchI4Px5CSIiGEpK1HB0tIWv70D06eOLV155Ba1bt+YdLtFhRUVFuHjxIi5cuIDIyCu4cuUikpLSAACurkbo3r0UXbqo4eEBtG8PuLkB1XRJSOpRTg4QGwtERwslMlKKqCiG/HwVDA2l6NzZA97efdG9e3f06dNHG48LDZ+8CgoKcPz4cYSEhCAk5AAePsyAra0MvXur4OurRp8+QNeuAN2uqV/FxcDly8DZs8DZsxKEh4sglyvRtq0Lhg8fDT8/P/j6+j63x25CCgsLceHCBZw5cwanT/+FiIhIlJQo4ORkAG9vJby91fDyAry9hXtRRHupVMItiCtXyooM16+rUVSkgqOjLfr3H4J+/fqjX79+aNu2Le9wGyZ5yeVy7Nu3Dzt3bsPJk6egUCjh5SXF8OEK+PkBXl6AmFqccaVUAufOASEhQEiIAaKjS2Fq2gSvvjoMEyZMgp+fH1XbJQCAW7du4dChQzh8eD8iIiJRWqpEq1YG6NevFP36Af37C/emiO4rLQUiIoDTp4EzZ6S4cIGhoEAFBwcbDBkyDP7+ARg6dCjMzSs3E6hn9Ze8SkpKEBoaiu3bt+LQoWCoVEoMHSrGmDFKDBtGN1u1XWKikMh275bizBkVzM2NMWZMICZOnIz+/ftXO/wE0T8lJSU4c+YMgoODcejQfiQmPoSdnQH8/JQYNEiN/v3psn5joVAIV2xOnwaOHJHi/HkVJBIJfH37wN9/FAICAhrqPnrdJ6+0tDSsWbMGK1f+jMeP89CrlwSBgUpMnChUSye6JzUV2LUL2LXLAOfPl6JZM1vMnfsW5s+fDxsbG97hkXoSGRmJP/7YjO3b/0B2di48PWUICFBg8GDh7Iou7ZPHj4ETJ4DgYDGCg8XIyVHC07Mtpk6diWnTptVnFf2tYHXkzJkzbNy4MUwqlTAHBwP21VdgDx+CMUZFn8rt22AffABmaSllTZoYsFmzZrBr164xoh/i4uLYokWLmIuLIwPAunY1YMuXgz14wH/bo6LdRaEAO34cbMYMETM3lzCpVMyGDx/KduzYwYqKilgd24KXXcKFCxfYwIG+DADz8pKyNWvAior4f5FU6rcUFYFt3gzWsaMBA8AGDx5ISUyHnT17lvn7v8pEIhFr3lzG3n0XLDKS/3ZGRTdLURHYwYNggYFSJpOJma2tJVu4cCF7+PAhqyMvnryuXbvG/P2HMQCsf38pCw/n/4VRafiiVoMFB4N17ixjEomYTZ06iSUkJDCi/UpKStjGjRtZp06eDAAbOFDGDh0CU6n4b1dU9KekpYF98QWYra2UGRnJ2KxZM1h0dDR7SbVPXkVFRWzhwoVMIhGzjh2l7M8/+X85VPgXtRrszz/B2rSRMSMjGVu2bBlTKpWMaKeDBw+yVq2cmUwmZoGBYnbxIv9tiIp+l+Ji4WqNp6cBE4lELDBwLEtMTGQvqHbJKzw8nLVr58YsLKRswwbhgMX7C6GiXaW0FOy//wUzNBSznj29WGxsLCPa48qVK8zX14eJRGCTJ0tYUhL/bYZK4yoqFdjOnWAuLjJmYmLIvvrqK1ZQUMBqqebJ67vvvmMSiZgNGyZhycn8vwAq2l1u3QLr3l3GjIwM2I4dOxjhq7S0lH344YdMLBax3r2l7NIl/tsIlcZdiorAli4FMzeXMhcXR3bhwgVWC/+cvJRKJXvzzXlMIhGxn37iv8INXW7cANu7Vyi5ufzj0aWiUAg1E0UisGXLljHCR3x8POvRoxszNZWwjRv5XTGJjNTsS4WFL76ciAjNckpK+G/n2l6uX9d8X3l5/ON5tqSngw0fLmEymYR9//33TK1Wsxp4fvIqLS1lI0f6M2NjCdu3j/9K8ijvvQcGCOXGjRdfTk4O2PvvC5UbGjJ+Xp9bvvzyC5hEImLvvvsOIw3ryJEjzNLSlHXuLGOxsXz3penTNfvSy1S9f+01zXKysviuky6Ud97RfF+3bvGPp6qiVoN9/z2YTCZmAQF+NbmMuOW5nTK98cYcnDgRihMnVBg1qr7amum/sDCgTRvgp5+EFur6/rnPeucdYMcOhpUrf8PSpUv5BdLIBAcHY+TIAPj7F+LiRQXc3XlHREjVRCLgo4+AsDA1Ll48hldfHYTCwsLnvqfa5LV582Zs3vwHgoJU6NmzzmPVGQsWABcuCKVVqxdbRlSUMJgcIPyTGgqvz61KYCCwfDnD4sWLEBYWxjeYRiAqKgoTJryGyZOV2LxZrRVj2y1apNmX9G9sRFIXevYETp9WIjb2CqZMmQjGqu8AqsoOXh4/fowPPngX773H4OdXb3HWiFIJBAcD164JIwubmgIeHsDo0ZXH+8nLE7oxio8XRiW2swN8fIABAyofvGs6b1YWEBcnPG7XruKoyzVZxsmTQseWZU6dEoYEDwgQRnetzTpeuiT0+iyVApMmCf0PHjsmxNe+PTBmDGBpWfPPbWjvvgscPy7CG2/MxM2bt2mk53pSVFSECRPGoWdPBVavZlrT6XV6OnDvnvC4Y0fg2QELVCrhB1dYmDCCeIcOwMCBgKNjzZa/d6+wHwJAly5A586a127cEPrjS0wUxgL09UWdnIlevizsa3l5QO/ewKuvCsn53j1h/SZMEOY7fVoYQNbMTNgHN24EkpOBV14B+vYV5qnpceDsWeGYY2QEvP66MLTJsWPCd/avfwnLf97/vKzf0vh4oFMnYNQooOH71a2epyewd68SAwcGY/Xq1XjzzTernrGqi4mLFy9mtrYy7hUUlEqwf/1Lc722fGnTBuzePc28Z86AWVtXPe/rr1dcbm3mre6eV02XERBQ9TxRUbVfx7feEqY3aSLcfDU2rjh/y5aa+f/pc3mV+/fBDAzEbPPmzf90TZu8oG+++YaZm0u1rlbw8+553b0L1qJF5e3V1BTsf/+rOG9V97yWLtVM69ZNU7lKpQL7/HMwsbjicqVS4T0vU3nl44+Fykjllzt6NFhgoPDY0lIz7+jRwjRXV7CZMzXzt29f++PApEnCdFtbsDVrKq/bK6+APX6smb/8Pa+vvxa+0/Lzt20LrWwy8emnYBYWJiwnJ6eqzbzqChtOTs3Yp5/yD/777zVfsJ8f2IIFYF5emmkTJmjmdXISprm5CRvrTz+BDRigmXfLlhebt7rkVdNlvPsuWPPmmukuLmCdOwt9BNZ2HcuSl0gkbLA9egjLd3HRzD9nTs0+l2d57TUx69+/d1WbHnlJSqWSNWvWVCv232dLdckrPl6zPwFgvXoJ+0L5H2cbN5bffiomr61bNUnE3b1iJY516zTzNm0q7B/lk2RQ0Iuty65dmmWIRGCjRglxlz2vLnmVvWZiIiTQb76p/XGgLHmVJS0rK+HzZTLN/HPnauYvn7wAsD59hOW3bauZ9u67/LePZ0tuLpiFhZQtX768qk29cvK6c+cOA8DOn+cf/Nq1wq+U8l9sfr5mo/byEqalpWn+CdOna6rPFhcL2fv338Gio2s/L2NVJ6/aLuPnnzXzP1trs6bryJgmeQHCxlo2/e5dzfR//atmn8uzbN0KZmgoq4/OOhu9ixcvMgAsJob///nZUl3ymjhRM/3nnzXTY2PBDAw0B+iys4nyySsoSDNPy5aocLZZUgJmZ6dJJPn5wnSFAszZWZju4fFiZ18dOmgSSPneSTZt0sRmYaGZXpa8ALD+/YU2TllZmnWqzXGgLHkBwg9muVyY/uCBZr0kEs13XD55jR6tWU5amiYB+vjw3z6qKlOnitiAAX2q2tQrJ68jR44wQPvaNKWng+3fL/xiKPuHtmsnvKZWV7yEZ2kJNnIk2K+/giUkVFxObeZlrOrkVdtl1DSJPG8dGauYvI4dq/heGxtheuvWtf/chi5RUUJMd+7cqWqjJC9h06ZNrEkTCeP9P66qVJe8HByEaYaGmgNxWRk6VPOeo0eFaeWTl5GR5vGBAxXfGxOjeW3sWLDsbE2ZN0/zWmpq7dajtFRIDtUd9O3tn5+8QkKev/x/Og6UT15r1lR879dfa14rax5TPnk9251fWaweHvy3j6rKihVgzZpZsypUripfXFwMAFpRO0mpBP77X2GkZQcH4cbizz8DZTUoyypFiETAhg2a8YVycoADB4Qq2q6uwNChwP37tZ+3OnWxjNqu47OeHRutrCKJSlWzz+WpbNsqKiriG4geKioqgrGxltTQqIGEBCAtTXjcv79QSaE8f3/N4+joyu//+3AFAFi+vOJrd+9qHu/ZA9jYaMrq1ZrXUlJqF3NSkmY/q2oQzn8amLNNm8rTXvQ4MGhQxefla0THx1ee38Wl4vOyfbH896hNjI2BwsKqg6tU3cvOzg6A8A91da3fwP5JYCCwf7/w2NdX+IcOHAiMGyfU5ilfo2bUKKEWzbp1QGgoEBmp2cCOHRNev3mz9vNWpy6WUdt1LM/QsOJzbalRVhMPHwp/7Wk47TrXvHlzPHmiRF6edtUgq06zZoBMJrRDrCqJlG0rAGBlVfn1Jk2E2r0hIcCZM8Du3cK+AwjLLdOlC+DtXXUMtf2hbmamefz4ccXXCgurTrLlPZuggRc/DjybdAoKNI+frY0NVKwtDfBvQvNPEhMBR8eq21VU+ko6d+4MAwMpzp6t77Ce7+FDzT9zzBhhw3z/faH6a06OML3si2dMqHYaGwvMmCFUKX/0CAgKApydhXlu3RKq6tZm3urUdhnlNxC1+sXW8Vk12eiq+1zezp4FWrZ0oORVD3r37g2RSITQUN6R1EyTJkJiAYR95tmzhYMHNY87dqz8/qAgYNs2oGlT4fm//605oJcfjd7MTPihWVYWLBDana1dK1TJrw07O01iuHixYgI7ceKfz2KebSLwMseBM2cqPo+M1Dx+0Xap2iQkRIZ+/V6p8rVKycvY2Bh+fsOwcSPfNjjlf4XJ5ULCAIBVq4Q2EIDQtgIQ/vHOzsCQIcDMmUBRkbBxjRihaQxpZCRs4LWZtzq1XUb5jfXWLeGXVF5e7dbxRVT3uTwplcAff8gwbtxEvoHoqaZjz9tPAAAgAElEQVRNm2LECH8sXy57uj1pu4EDNY/fflu43JedDfzf/wk/EAGgXz+gW7fK7+3VS2jb+MUXwvPEROCHH4TH7dpp3nPunJDoVCqhvVXv3sIltC5dgNLS2sc8c6bwNz9faFu1bp2QDKdN++f3SiQVn7/MceCrr4R2cfn5wmXTzZuF6U5O1Z9p6oq//gKiohSYMWNG1TNUdSfs9OnTDAA7coTfjbrCwopVvVu21FQJl0qFv8bGQvsIlUqowVM2r6GhUC28rBYSgKdVh2szL2NVV9io7TJOnqxYVRV/V7iozToyVrHCxrP91JW9z9X1nz+X5w3Y334TahrGx8dXtemROnDt2jUmlYrZr7/yv+FevlRXYaO0FGzcuMrballp2lSoUVs2f1XtvEpLNVW/TUzAHj7U7APlq9zb2Ghq2EmleOFxzDIyhDZaz8baurWm2n9VVeUBob/RFz3WMVaxwkZZm61n23pt26ZZ/vP6NqzquKENpaAArG1bGRsxwq+6zbz6jnnHjRvNnJ1lFRq7NXS5cEFooFf+H/Xtt0KbqmcPxgUFQge0ZmYV/4k2NmA//FBxdNjazFtdO6/aLEOlAhszRjOPgQHYnj21X8faJq/nfS6PcvcumJmZlH3yySfVbXakjixZsoQZGopZWBj/A1FZmTat6uTFmHBgXrhQaKdV/kfh2LFC7bvy81bXMe/+/Zrpkydrpl+7JlQ1L0sERkZgQ4a8eBuvsvL4Mdjs2WCtWgnJZ9IkIal17Sp8jp2dZt7nJa/aHgfKJ68LFyo2bm7atPJ66VryEo5bEmZjY8mSk5Or28SrT15ZWVnM0dGODRok5TrsgEol9MoQE1Oz4clLS4Xq6pcvg6WkPL8NR23mrYtlpKWB3bwpvOdl1rG2pbrPbcjy6BGYh4eMeXl1YsXFxYzUL5VKxcaOHcXMzaXs7Fl+//fyZfx4zUE0I6P6+bKyhHaSCkXdfn5RkfAD9GWGYykrFy4IPyCrWlZZQihfvb0mpabHgfLJq6yaf1oaWFyc7g8QrFCATZ4sZoaGMnbmzBn2HM8fEiUqKoqZmxuzV1+VVGp/QYVKTUtqKljXrjLm7OzAUlJSGGkYJSUlbNy40czISFKh8W9Dl6go4XKxpaXmEldREf/t8mVK+fZnH3wgNIguLhbaUZVdwivfK0ZdlqqSlz6UjAywV16RMmNjQ3b06FH2D/55MMrr168zR0c71rGjTOv6SqOi/SU6GqxlSxlr3dqF3b17l5GGpVQq2ZdffskkEjEbM0bCnjxp+G2g/OVCQOhGifd2Wb7cvg3WsWPNy/Xrwj2l8utkZFSxeyaptGIvO3VZ9DF5nTwJ5uAgY23auLCoqChWA/+cvBhjLCEhgbm7t2JOTjL211/8V5SKbpStW8EsLaWsb99e7NGjR4zwc+LECdasWVPm5iZje/c27HbQubPmYNu+vdCXIe9ts3y5cUOo5FHTEhEhvG/jxor3qQCh70Jvb+FgXF/xzp4NZm4ulLQ0/t/fy5SsLLC33hIxsVjEJkx4neXl5bEaqlnyYoyxR48esXHjRjORCGzuXLHWdR9FRXtKairYiBESJhKJ2Pz5b9M9Li2Rnp7OJk2awEQiEevfX8YiIxtmeyguFs5CnnefS5dLbq5w/+vOHWFdecejC6W4WOiM2NJSyhwcbF5klImaJ68yf/75J7O1tWLOzjK2bVv9VDCgopulpATsl1/ArKykrFUrZ3b69GlGtM+lS5eYj08PJhaL2KRJYu7D5FBpPKWwUOiP0c1NxoyNDdmiRYuYXC5nL6D2yYsxxjIzM9n06VOZRCJmnToZPO0AkkrjLEql0Ju2i4uMGRnJ2EcffcTy8/MZ0V5qtZoFBQWxTp08GQA2aJCMHT6s+7XVqGhnycgA+/JLMFtbKTM0lLLZs2eypKQk9hJeLHmViY6OZmPGjGQikYj5+MjY7t2ahnRU9L8UFYFt2ADm6SljUqmYzZ4963ntMogWUqvV7NixY2zo0EFMJBIxDw8Z+/FH/akIQIVfUamEe3/Tp4uYkZGE2dhYsMWLF7P09HRWB14ueZWJiIhgI0b4M7FYxJydZWzZMmHYAd5fHpX6KQ8egH3yCZiNjfAraurUySwuLo4R3Xbz5k02d+4cZmlpyiQSEXv1VSnbulVokM97m6OiOyU6WuhhyMlJxgAwb++ObPXq1aywsJDVoS0ixhhDHYmPj8fKlSvx++9rUVJShDFjGCZMUOOVVyr28Ex0T2Gh0Enq9u0ShIYy2Npa480338XcuXOpg109U1xcjODgYGzZsglHjhyFkZEIw4apERCgxrBhz+/3kzQ+jAkdAh86BBw8aICoqFI4Oztg0qTpmDJlCjw8POrjY7fWafIqU1BQgK1bt2LLlo04fz4C1tZSvPaaAhMmCB1i6tLwHY2ZQgEcPw5s3y7C/v1iFBczDB48ENOmzcLYsWMho18kei87OxtBQUE4cGAvzpwJg0qlQq9eMgQElGL4cKB9e94REh4KCoQe9A8dAg4fliI1VQknJzv4+4/Fa6+9Bl9fX4jr90BfP8mrvOTkZOzduxdbtmxAZORN2NhIMWCACv7+DAEBVY/RQ/jJygJOnwaCg8UIDhYjJ0cJT8+2mDp1JqZNm4ZmzaoeW4fov8LCQpw4cQKHDgUjOHgv0tIewd5ehu7dlejTh2HwYKEXd20fI4rUXkEBcOGC0Dt/eLgBzp5VoqREDU/PtggIGA1/f/+nw/E0kPpPXuXdunULhw4dQkjIAVy4cBkAQ+/eUgwdWoq+fYHu3SsPskjqV36+sFGGhQGhoVJcvaqEoaEM/fr5ws9vBAICAuDKe1RSonVUKhUuX76MU6dOISzsFM6dO4f8/CLY2RnA11eJ3r3V8PYGunYFTEx4R0tqKzERuHJFGKvw7FkZIiOVUCoZ2rZ1Rr9+Q+Hr64vBgwfz/DHbsMmrvCdPnuDYsWMICTmM48dDkZqaDSMjMXr0kMDXV4E+fYSxenRhNFhdkpUFnD8vJKtz5wxw9aoCSiVDq1ZOGDJkOPz8/DBw4ECY0BGH1IJSqURkZCTCwsJw5sxJXLx4Ho8e5UEiEcHDQwZv71J4ewtjTHXqJAxCSbRDcrJwzyoyErhyRYIrV8TIzlZAIhHDw6M1+vYdBF9fX/Tr1w8ODg68wy3DL3k9KzU1FeHh4Th+/DjOnTuB2FihDxkHBym8vFTw8mLw8gJ69ACofkDNpKYCMTHCsOSRkRJERhogNrYIjAFubk4YPHgYevfujX79+qFly5a8wyV6JjU1FZGRkX+Xi7h48SKys3MBAA4OMrRvr4Knpxrt2wOensLAkKamnIPWY0+eCMeCsmNCTIwhbtxgyMwURuN0cLCFl1cPeHl5w8vLC3369IGV9t7X0Z7k9az09HRcunQJUVFRuHr1CqKiLuPhw0wAgJOTAdzd1WjXTgkPD2HE1HbtgBYtOAfNgVotjAwbFyeMOhsXB8TFyRAdDWRlKSASieDm1gLduvVA165e6NatG3r06KHNGyXRU4wx3Lt3Dzdu3EBsbCyio28hNvY6bt++j5ISBUQiwNnZAG5uDG5uCri5Aa6uePrXzo73Gmi30lLhWBAfL5SEBCA+XoT4eAPcu6eCXK4EADRr1hTt23eAh0dHtG/fHp6enujSpQvMdesyl/Ymr6pkZWXh6tWruH79OuLi4hAbex1xcXfw+LEcAGBmJkWrVhI4OyvQsqUaTk54WlxcgGbNKg/Bre0UCmGY8ORk4Tp0cnJZkeDBAynu3VOguFgNALC3t4aHhwfatesAd3d3dOnSBV27doWFhQXflSDkOVQqFeLj43Hr1i3ExcUhPj4eCQl3ER9/F0lJ6VAqVQAAU1MJWraUwtFRhWbNlGjeHHBwQKW/RkacV6geZGUB6enCsSAjQ/grPBchPV2G5GQgJUUBtVo4nFtamsLNzQWurm3h5tYKrVu3hqenJzw9PWFtbc15beqEbiWv6mRlZSE2NhZxcXG4f/8+kpOTkZR0Dw8ePEBaWvbTjV8kAmxsZLC1FcPGhsHWVgF7ewZbW8DGBjAzA4yNhRqQJiZCMTUFLCyE6v3m5rVPfgqFUClCqQTkciA3V2gzVVAgPM7PF6ZnZQGZmUBmphipqRI8fizCo0dqPHmifLosAwMpWrSwh5NTS7Rs2RrOzs5o1arV3wmrHSwtLevyayWEO6VSiaSkJCQkJCA+Ph7Jycl4+PAhMjJSkZLyABkZmcjIEMZ5KWNsLIG1tQTW1iJYW6thba2EtTWDtbXQRs3SUtjPDQ2Ffd3AQNjXzcyEx2W/9UxNX659qlwu7PelpcL+np8PlJQI+31xMVBUJDwuKgIePy5fJH8XER4/VuPxY+XTpAQATZoYoHlzOzg4NIeDgzMcHJrD0dERrq6ucHNzg6urq74kqOfRj+T1PEqlEmlpaUhKSkJKSgqysrKQlZWF7OxsZGZmIjMzBdnZmcjOfgS5vBCFhSU1XraZmRRSacWqoaWlahQUqGqxjCYwNTWGjU1T2Nraw96+Bc6dOwfGGD766CM4OzvDwcEBLVu2RLNmzRqyKiohOkGhUCAzMxMpKSlIT0/H48ePn5YnT54gKSkJt2/HwNLSBI8ePUJOTh4KC0tQUqKo9WdZWkqr3AeLilRPr4DUhoWFCZo0MYS1tRWsrZvC2toO1tY2sLa2hpWVFaytrWFtbQ07Ozs0a9YMzZs3px+pAv1PXrXFGENOTg7y8/NRUFCAgoICPHnyBACe/i2Tk5ODZ78+iURS4dqxWCyGhYXF0+nm5uYwMTGBiYlJtZfz7t+/Dx8fH3Tv3h0HDhyARNeudRKiJTIzM9G7d29YWloiLCwMTZ6p5vjkyROUlJSgsLAQcrkcJSUlyMvLAwDk5uZCrdYkJLVajdzc3Co/x8DAoFINXWNjYxgaGkImk8HU1BSmpqYwMDCApaUljIyMKsVCaoWSl7aKiIjAgAEDMGXKFKxevZp3OITonMLCQgwePBgZGRk4f/48dWOmX7ZSR01aqkePHti0aRPWrVuHn376iXc4hOgUlUqFiRMn4u7duwgNDaXEpYekvAMg1QsMDERiYuLTe19jx47lHRIhWo8xhrlz5+Kvv/7C8ePH0bZtW94hkXpAyUvL/fvf/0ZycjImT54MBwcH+Pj48A6JEK325ZdfYvPmzdizZw969erFOxxST+ielw5QqVQYN24czp49i/Pnz9MvSUKqsW7dOrzxxhtYt24dZs2axTscUn+owoauKCoqwsCBA5GZmYkLFy7AjrobIKSCw4cPY9SoUVi8eDG++OIL3uGQ+kXJS5dkZWXBx8cH1tbWOHXqFIyNjXmHRIhWuHz5MgYMGIAJEyZg3bp1vMMh9Y9qG+oSW1tbHDx4EHfv3sW0adMqtEEhpLG6f/8+/P390b9/f6xatYp3OKSBUPLSMR4eHti/fz+Cg4Px8ccf8w6HEK6ysrIwbNgwtGzZEkFBQZBKqQ5aY0HJSwf5+vpi8+bNWL58OX799Vfe4RDChVwux6uvvgq1Wo1Dhw7RGHSNDP1M0VGvv/467t+/jwULFqBFixYYPXo075AIaTAKhQKBgYFITk5GeHg4VWBqhCh56bDPPvsMKSkpmDRpEk6ePImePXvyDomQelfWCPns2bM4ceIE2rRpwzskwgFdNtRxv/zyC4YMGYKAgADcu3ePdziE1LvPP/8c27Ztw549e+gHWyNGVeX1gFwuR79+/VBUVITw8PDGMJYPaaTWrFmDN998Exs2bMCMGTN4h0P4oary+sDMzAyHDx9GYWEhRo0ahZKSmo9JRoiuCA4Oxttvv43/+7//o8RF6LKhvnBwcEBoaChu3ryJqVOnUhswolcuXbqE8ePHY9asWfjss894h0O0ACUvPeLp6Yl9+/bhwIEDWLRoEe9wCKkTsbGx8PPzw8CBA7Fy5Ure4RAtQfe89NCOHTswadIk/Prrr3j77bd5h0PIC0tNTYWPjw/s7e1x8uRJastFymylqvJ6aMKECYiLi8N7770HJycnjBgxgndIhNRaXl4ehg8fDplMRo2QSSV05qWnGGOYOXMmdu/ejbCwMHTt2pV3SITUmEKhwPDhw3Hr1i2cP38eLi4uvEMi2oVqG+orkUiEtWvXolevXhg+fDgePHjAOyRCaoQxhtmzZ+PixYs4fPgwJS5SJUpeekwmk2H37t2ws7ODn58fnjx5wjskQv7Rxx9/jB07dmD37t10xYBUi5KXnjM3N8fhw4chl8sxevRoagNGtNqqVavw448/Yv369XjllVd4h0O0GCWvRsDR0REhISG4du0aZsyYAbrNSbTRgQMH8M477+Dbb7/F1KlTeYdDtBwlr0aiQ4cO2LlzJ3bt2oWvvvqKdziEVBAWFobx48dj7ty5+Pe//807HKIDqLZhI7NhwwbMnj0bq1atwrx583iHQwhiYmLQp08f9O3bF3v37oVEIuEdEtF+1M6rsZk1axbi4+Px7rvvws3Nje4rEK5SU1MxbNgwdOzYEUFBQZS4SI3RmVcjxBjDtGnTsH//fpw9exadO3fmHRJphPLy8uDr6wuFQoFz587BysqKd0hEd2yl5NVIKRQKDBs2DLGxsbh48SKcnJx4h0QakdLSUgwfPhwxMTE4f/48WrZsyTskoluokXJjJZPJsGfPHjRt2hR+fn7Izc3lHRJpJBhjmDVrFiIiIhASEkKJi7wQSl6NmIWFBQ4ePIjs7GyMHj0apaWlvEMijcCHH36IP//8E3v27KFL1uSFUfJq5FxcXHDo0CFcvnwZb731Fu9wiJ774Ycf8PPPP2P9+vUYPHgw73CIDqPkReDl5YWgoCBs3rwZ//3vf3mHQ/RUUFAQFi5ciB9//BFTpkzhHQ7RcZS8CADAz88P//vf/7B48WL88ccfvMMheub06dOYNm0a3n//fbz//vu8wyF6gNp5kafmzJmDO3fuYPbs2WjevDld1iF14tatWxg9ejRGjRqF7777jnc4RE9QVXlSAWMMU6ZMQXBwMM6dO4eOHTvyDonosJSUFPTq1Qtubm44evQoDA0NeYdE9AO18yKVFRcXY8iQIUhMTMSFCxfQokUL3iERHZSbmwtfX1+oVCqcPXuWGiGTukTtvEhlRkZG2L9/P0xMTDBy5Ejk5+fzDonomOLiYgQEBODRo0cIDQ2lxEXqHCUvUqWmTZsiNDQUKSkpeO2116BUKnmHRHSEWq3GlClTcOPGDYSEhFDvLaReUPIi1XJ1dUVwcDDCwsKoDRipsQ8++ACHDh1CcHAwOnXqxDscoqcoeZHn6t69O3bu3Inff/8d33//Pe9wiJZbtmwZfv31V2zZsgV9+/blHQ7RY5S8yD/y9/fHDz/8gIULF2Lr1q28wyFaaseOHfjss8+wfPlyjBs3jnc4RM9ROy9SIwsWLEBiYiJmzZoFR0dHDBgwgHdIRIucOnUKM2bMwMcff4z33nuPdzikEaCq8qTG1Go1AgMDcfr0aZw/fx7t2rXjHRLRAjdv3kTfvn0xbNgwbNu2DWIxXdAh9Y7aeZHaKSoqwqBBg5Ceno4LFy7A3t6ed0iEo4SEBPj4+MDDwwOhoaHUCJk0FEpepPays7Ph4+MDCwsLnD59GiYmJrxDIhw8evQIffr0gUwmQ1hYGCwtLXmHRBoPaqRMas/GxgahoaF48OABxo8fD5VKxTsk0sCKioqeNmAPCQmhxEUaHCUv8kJatWqFQ4cO4eTJk5g/fz7vcEgDUqlUmDx5Mm7fvo2//vqLug8jXFDyIi+sR48e2LRpE9auXYuff/6ZdzikgSxYsAChoaE4cOAA3N3deYdDGimqKk9eSmBgIBISEvDhhx/C2dkZY8aM4R0SqUf/+c9/sGrVKvz555/o3bs373BII0YVNkideOedd7BhwwYcP34cPj4+vMMh9WDbtm2YMmUKVqxYgXfeeYd3OKRxo9qGpG6oVCqMHTsW4eHhCA8PR9u2bXmHROrQiRMn4Ofnh48//hj/+c9/eIdDCCUvUncKCwsxaNAgZGVl4fz587Czs+MdEqkDkZGR6N+/P0aOHIktW7ZAJBLxDokQSl6kbmVlZcHHxwfW1tY4deoUjI2NeYdEXkJ8fDx8fHzQvn17hIaGwsDAgHdIhADUzovUNVtbWxw8eBB3797F9OnToVareYdEXlB2djb8/PzQokULHDhwgBIX0SqUvEid8/DwwP79+3Hw4EEsXLiQdzjkBRQVFWHEiBEoLS3FoUOHYGpqyjskQiqgqvKkXvj6+mLTpk2YOHEinJ2dqXaaDlGpVJg4cSLu3r2Lc+fOoVmzZrxDIqQSSl6k3owfPx7379/H+++/DycnJ4waNYp3SKQG3n33XRw9ehTHjx+nkQOI1qLkRerV559/jpSUFEycOBEnT55Ez549eYdEnmPJkiVYs2YNdu/eTe31iFaj2oak3qlUKowePRoXL17E+fPn0bp1a94hkSqsX78ec+bMwW+//Ya3336bdziEPA9VlScNQy6Xw9fXFyUlJQgPD4eVlRXvkEg5hw8fxqhRo/D5559jyZIlvMMh5J9Q8iINJzU1Fb169YKLiwuOHTtGAxdqicuXL2PAgAEYP3481q9fzzscQmqC2nmRhtO8eXOEhITgxo0bmDZtGuh3E3/3799HQEAA+vXrh9WrV/MOh5Aao+RFGlT79u2xb98+7Nu3D4sWLeIdTqOWlZWFYcOGwcnJCUFBQZBKqf4W0R20tZIG179/f2zcuBGTJ0+Go6Mj3nrrLd4hNTqFhYUYMWIE1Go1NUImOomSF+Fi4sSJiIuLw7vvvosWLVpgxIgRvENqNBQKBcaOHYt79+4hPDwc9vb2vEMipNYoeRFulixZgqSkJEyePBlnzpxB165deYek9xhjeOONNxAWFoYTJ07Q0DVEZ9E9L8KNSCTC2rVr0bNnTwwfPhxJSUm8Q9J7ixYtwtatW7F7925qME50GlWVJ9zl5eWhb9++UCqVCA8Ph6WlJe+Q9NLatWsxb948rF+/HjNnzuQdDiEvg6rKE/7Mzc0REhICuVyO0aNHo6SkhHdIeic4OBhvv/02vv76a0pcRC9Q8iJawdHRESEhIYiKisKMGTOoDVgdioiIwIQJEzBz5kxqnkD0BiUvojU6dOiAnTt3YteuXfjqq694h6MX7t27B39/fwwYMAArV67kHQ4hdYbueRGts2HDBsyZMwe///47pk+fzjscnZWWlgYfHx/Y2dnh5MmTMDEx4R0SIXVlK1WVJ1pn1qxZuH//PubOnQtHR0cMGTKEd0g6Ry6XY/jw4ZBKpQgODqbERfQOnXkRrcQYw7Rp03DgwAGEhYWhc+fOvEPSGQqFAv7+/oiKiqIhaIi+otqGRDuJRCKsX78e3bt3x/Dhw5GcnMw7JJ3AGMOcOXNw4cIFHD16lBIX0VuUvIjWMjAwwJ49e2BtbQ0/Pz/k5ubyDknrffLJJ9i+fTt27dpFPZYQvUbJi2g1CwsLHDx4ENnZ2Rg/fjyUSiXvkLTW6tWr8f3332PdunUYOnQo73AIqVeUvIjWc3FxwaFDh3D27FnMmzePdzha6eDBg5g/fz6WLl2KadOm8Q6HkHpHyYvoBC8vLwQFBWHz5s345ptveIejVc6ePYvXX38dc+bMwcKFC3mHQ0iDoNqGRKeU9c+3efNmTJkypdLrCoUCCoUCxsbGHKJreDExMejbty/69OmDvXv3QiKR8A6JkIZAtQ2Jbpk7dy4++OADzJo1CydOnKjwmlwuh7+/PzZv3swpuvqxdetWrF69utL01NRU+Pn5oU2bNtixYwclLtKo0JkX0TmMMUyePBmHDx/G2bNn0bFjR6SkpOCVV15BTEwMPD09ER0dzTvMOuPt7Y3IyEh8+eWXWLJkCQChJ/5+/fqhtLQUZ8+ehbW1Nd8gCWlYWyl5EZ1UXFyMwYMHIyUlBRs3bsTEiRORnZ0NhUIBALh06RJ69OjBOcqXd/XqVXh5eQEAxGIxpk+fjl9//RWjRo1CdHQ0zp8/j5YtW3KOkpAGR8mL6K7s7Gx06dIFaWlpEIvFT6vRy2QyTJ06FevXr+cc4cubNWsWtmzZ8jQpS6VS2NjYoKCgAGFhYejSpQvnCAnhgu55Ed116NAhpKengzFWof2XQqHAtm3bkJeXxzG6l5eTk4Pt27c/TVwAoFQqkZGRAXt7ezRv3pxjdITwRcmL6BzGGJYsWYKZM2dCpVJVOfZXWQLTZZs3b66QuMowxvDgwQN4e3vj7t27HCIjhD+6bEh0SmlpKebMmYM//vjjufOJRCJ4eHjobMUNxhjatm2L+/fvVzswp1Qqhbm5OY4dO/b0vhghjQRdNiS6pbCwEGZmZpBIJJDJZNXOxxhDTEwMIiIiGjC6unPq1Cncu3fvuSNKK5VKPH78GPPmzUNxcXEDRkcIf5S8iE6xtLTEb7/9hujoaAwePBgAqm3fJJPJsHbt2oYMr8789ttvz03OMpkMFhYWWLZsGcLDw2FkZNSA0RHCH102JDrt+PHjeOedd3Dnzh2o1epKrxsZGSEjIwPm5uYconsxaWlpcHJygkqlqvSaTCYDYwxvvfUWvv76a1hYWHCIkBDu6LIh0W2DBw/GzZs3sWrVKlhZWUEqrTg4uEKhwPbt2zlF92LWrl0LkUhUYZpUKoVIJMKIESNw584drFixghIXadTozIvojZycHCxbtgzLly8HICQukUgEd3d3xMTEcI6uZpRKJVq0aIGMjAwAQsNktVoNX19f/PTTT+jWrRvnCAnRCnTmRfSHpaUlli1bhlu3bmHIkCEAhFqHsbGxuHz5MufoaubgwYMVEpebmxuCg4Nx5swZSlyElEPJi+idtm3b4vDhwzh+/DjatWsHADpTceO3334DAFhbW2PlypWIjY2Fv78/56gI0T502ZDoNZVKhfXr1+O7775DVFRUpYobcrkc2dnZkMvlkMvlyM/PR15eHnJyciCXy6FQKEnSLD8AAA/FSURBVKBWq5Gbm/v0PeWfGxgYwMTE5Olr5Z+bmZk9LaamprCysnr63MbGplJtwjt37qBbt25YsGABFi5cCDMzs/r6WgjRddS3IdFPRUVFSEhIQGJiIhITE3H//n2kpKSgID8PmRlpSEtLQ1b2ExSXlFb5fgsTKUybiGEoFSpOWJoA5atQWBqrIBKJUFQqQrFC80pRKVD8d6cYuYVq5BepUKKoXAsSAJpamcPOzgZ2ds3QrLkTlEolWrVqhU6dOsHFxQWurq5wcHCoVHmDEELJi+gwpVKJ+/fvIzo6GrGxsYiOvoWE+3eQmJiI9MzHT+ezNpOhRVMxmlsqYWuqgq050NwKsDUDbM2Fv2ZNAFMjwNQQsKjjcSxLlUB+MZBTCMiLAXkRkCUH0p4IfzPzgLQcEbLyZUjLESEpSwGFUkh4hgYyuLR0hItra7Rt5wFPT094enqiffv2aNq0ad0GSojuoORFdEN+fj6uXr2KiIgIXLlyBTG3riPuzj2UKpQQi0VwsTeEh4MCre1UcLUFXP4urraAeRPe0deOSg2kPAESs4SSkAUkZAJxGVLEpjDkFgjtv+xsLNGhQwd07OyF7t27o0ePHmjTpg3n6AlpEJS8iHa6c+cOzpw5g4sXL+LypfOIuX0HKpUazawN4O2iQocWKrR3BDxbAO7NAWMD3hE3nORHQGwqEP0QiEkBopJkuPFACYWSwcrCFD169ECPnr3h4+ODvn37VrgnR4ieoORFtENycjJOnjyJkydP4OTxo3iYmgnTJhJ4u4nRw1WBHq2A7q0AZ7pSVqViBXDtAXD5PhARL8LlRAPEPSyBTCrBv3p4Y+DgoRg4cCB69uwJQ0ND3uES8rIoeRF+oqOjsWvXLhw6uAeRUbcglYjQuaUYg9urMLgD0LcdYFh9937kH2TmAWdigeO3gHP3jBCTVIwmRgYYNGgwAkaMxMiRI2Fvb887TEJeBCUv0rDCw8MRFBSEA/t2I+lhGlraG2JU1xIEdAN82gBNGtHlv4aWmAUcuwnsuyLBqRgGlVqEfr59MHpsIF5//XXY2NjwDpGQmqLkRepfSkoKtmzZgk2/r0Xc3QR0aGmA0d1KMcob6ObCO7rGKa8ICL0O7LsiRsh1MUoUQECAP2bMnI1XX3212p76CdESlLxI/fnrr7/w808/4uixv2BpIsGkXgpM9wW6uvCOjJRXUALsiQB+D5MiLFYJB3sbzJrzJubPnw87Ozve4RFSFUpepG4plUrs2rUL33+7FFHXb2JwJxneGKBAQFe6f6UL7mcAm8KANaekyC8RY9r0Gfjww4/QunVr3qERUh4lL1I3GGPYvn07Fn/+CZKSUzDuXyJ87K+my4I6qqgU2HgGWH5EhsQsFV5/7TV8s3QZWrZsyTs0QgBKXqQuXLhwAQvem4/IyChM9xXhs5FquNHVJr2gUgO7I4DFe6R4+FiM9z/4CJ9++ilMTU15h0YaN0pe5MXl5ubinflvY+u27RjQXoLlk5To7Mw7KlIfSpXAb8eA/xyQoomJJVatWY+RI0fyDos0XpS8yIs5f/48Jk14DcXyTKyarsAob94RkYaQLQc+3iHGxjNqzJv3BpYv/wlNmuhY/1tEH9BglKT2vv32W/Tz9UV7mwzc+IYSV2NiYwb8PleNXe8BQVs3wLtbJ9y5c4d3WKQRojMvUmOMMXz44Qf4ZcUK/DCJ4b2hAI3WUTunY4EnBYBMAvh35R3Ny0l+BAT+KkVijjmOHT+FTp068Q6JNB502ZDUjFqtxty5c7Dlj03YMk+N13ryjkg3dV8MXIkHzIyAvA28o3l5+cXAyJ8kiEo2RujRv/Cvf/2Ld0ikcaDLhqRmvv32W2z5YxP2LaDERTRMjYDDH6ng06oQIwP8kJ6ezjsk0khQ8iL/6NKlS/jyi8X4brwafl14R0O0jZEM2Pm2CpYGckwYHwiVSsU7JNIISHkHQLRbSUkJxr82FsO6AO8O5R1N3buRJNyHSswSxgXzdRf+lnfpHnA7DZCKgUm9NR3cxqUB7VsAY7oDllWMvnzpnrDsnEKgVxsgQMfvcT2PqRGw4y0Fei05j99++w3vvfce75CInqPkRZ5r/fr1yMhIx6qPVXpVOUPNgC92A0sPCI/LSCXAf8YBCwM0lVH+OAf87y+hx3tjQ2DySqCwVPOer/cCJz4DWv09ughjwEfbgeUhFT9zeFdAXlS/68VTVxfgvaFqfPN/X+GNN96AkZER75CIHqPLhuS51q9dhUk+ajS34h1J3fr9NPDf/ULiamoKzBkAtLAGlCrg0yBg16XK7ylWAON+Bjo4CWehLrbC9AfZwLfBmvn+vKRJXCIRhOFe2gKHo4SzNX32/jDg8ZMcHDhwgHcoRM9R8iLVysjIwLUb0RjbXb8qpJYqgc//FB5bGgMPfgHWzgYSftaM1Lxkr3AGVR5jwAgv4NLXwIqpwF+fal67kax5/PVezeOQfwMHPwTCvwTWza6f9dEmzSyBPu4SHD16lHcoRM9R8iLVunnzJgDA241zIHXsfoYwyjAADOognFE9ygdyi/C0QkpsCpCeW/m9bw3WPG5tLzTaBYBHcuGvQqU5u2pqCrxSrunTzP6ARRX3xvSNt4sSN65d4R0G0XN0z4tUKzdXOHpbmXAOpI7dzdA83hMhlKqkPAYcLCtOszWv+Nz475GfVWrhb/IjzeN+HoC43H1CsUi4NJlb+OKx64KmpkBOzhPeYRA9R8mLVMvERMha+cX6dcYgKzdIcJeW1Z9ZGhlUnmb4zB4jfubahXm5bv4Uz9QYV6qApOyax6mr8opAvc6TekfJi1TL3d0dgHA/p287zsHUofLDtZgZVbwXFf1QqPbt3LTqrq/+qcaljZmQ6HMLgcgEoUJI2dnXhXuAvPjl49d2Nx5K4O5JXUWR+kX3vEi1XFxc4ObihIORvCOpW+0c8HSQzHN3gKCLwqW+B9lA768Al/eALp8JFTtexOi/OypOfQLM3ySciWTLgf/bVxfRa7e8IuBUDDBo0OB/npmQl0DJizzX9JlzsPGsDHl61j7ph0nC/SrGgPG/As3eAtwWCGdMUgmw9v/bu/+YqO87juPPO+5bTgHlhxwKooAGKp5KZ6DC2lSQurSF1OiuJkvqVtxMaoIxWduoadJ0a0izxI3ZRLOw6LIxy6QqtalrF34Et04D4g8EVjqm+AMQTjnwrsfB97jbH98VZmwKIsdx5/uRfP/4Jt8v3/eXf175fu/9/by3wxNTfC/x3ivjrw8PVUP0DjC9DrVt49+CBauyOtDpFSwWi79LEUFOwkt8p+LiYjx6I29XBtEXykBuOvzzXVibrIXVHbsWVs+vgj/vhKeXT/1vJ0Rp7fRPJWn7ox6t8ePUz2HDymkpf1a6eRdKThko3rWbyMjIiU8Q4hHIqvJiQpWVlWzd+grHd4+/EgsmLhX+fVtrfZ/zLU0aj6J3UPuda3mQP3G5RyG3xIBNl0LD+YvMnRtEHT5iNiqXhg0xIYvFQk3NDraXHWZ5nJtVif6uaHoZFXx2T3HztS2Yeb2wu1zHxRsGGhpPSnCJGSFPXmJSXC4XL76wkctNZ/nrm26ylvn+mqv3TO649h6tuWKyAVS+E1YvmXpd06W9Byy/nfyxs/EePV54/bCOI2f0fFjxF7Zs2eL7iwohT15isoxGI5+e/hzLDzeT/341H+1ys3GVb695tW9yx33TFTjZ44en2EU43UbcgX2PzhHYXqanqimEEydPUFBQ4PuLCvE/8uQlHoqqqhS99mOOfljBGy96+aVl6l15InBdug4/Oqhw22Hko+NV5OXl+bsk8XiRScri4SiKwp/Kj1JW9nsO1s3h+79QaOvyd1ViprhHYf9pWPeOnriULC43t0pwCb+Q8BJTUlRURNOFS+giV5KxT8+uP+q46/B3VcKX/nYFMt5W2HfMwDvvvkd1bT2JiUHWvSMChoSXmLLU1FTONTRx8NDvqLwYTeobBko/g6GRic8VgaPlFhTsD+EH78PyjI20tLaxd+9eQkJCJj5ZCB+R37zEtLDb7ZSUlFD6m/3MmwPFz6vszIdoWZ81YJ35En71aQinL46y2pzOr0s/kFeEYrYol/AS06q3t5cDBw5w6OAHqMND/PQ5NzvyYEWCvysTkzGsQlUTlH6ucO4rlWdy1vHWnn0UFBSgm2hVYiFmjoSX8A2Hw0FZWRkHSvfTeaOL7DSF155V2bru/rEhYna40AlH6uHoWQP3nF4KC1/izbf2kJ2d7e/ShPg2El7CtzweD7W1tfzhyGFOnDiOjlFe/p6XTWs9vJChjSQR/tFyCz4+D8caFZo7VZ5MXcZPin7Gtm3bWLRokb/LE+K7SHiJmTMwMEBFRQXHKo5y5h9fYNDr2GDWsWmtm4KnHpxaLKaXexTOdcDHTVB1QaGjR2WhKZpNmy28+uo2cnJy/F2iEJMl4SX8o7+/n5qaGj45VUVV1UnsjiFSFirkp6vkmyFvpTZOXjyaq31Q3QLVrSFUt+qx2VWSly6m8OXNFBYWsn79egwG+cpcBBwJL+F/TqeT+vp66urqqK3+jEvNrXi9XjKSFbJTRshaBpkpkBY/PpVYPGjQCeevQcN/oPGqnr9/FcKdQZWYqHmsz91Abt4G8vPzSUsLorHY4nEl4SVmH5vNNhZmDee+4NLlK7iGR5gXZmBtso7MJJVViZC+GFbET/8Yk0Bwqx/auqDlprZUU2OnQnuXitcLi+NjyczK5plnnyM3N5c1a9ag18snnSKoSHiJ2U9VVZqbm2loaKCxsZGmxrN82d7BiOpGr9eRHPcE5gSV9HgPy+IgKRaSFkBiTGCvu9jvgM470GmFa1Zo74bWboW2Li8DDm3lXdOCKNZkZJD1dA6ZmZlkZmYSHx/v58qF8DkJLxGY3G43HR0dtLa20tbWRkvLFf7Vepmr127wtdMFgF6vIyFGIWmBlyXRKqZ5sDBSm68VG6E1iMTN1z6kNiozV7vta+i7B9Z72rDK24Pafu8gdNv0XO9X6Owb5Z5TCyidTseiuBjS0p5kxcrVmM1m0tPTMZvNxMTEzFzhQsweEl4i+FitVjo7O+/bbt64jrWvh56eHvqsdxly3b+GlSFER8RcA5FheiKMEG70Eh7qYb5xfLZIuBGU/1sRyahoU5i/YXdpHX0AI6N6HMMhDDj12F1gH/LicHmwOx+cVRIbE4kpdgGxpjgSEpNYsmQJSUlJY9vSpUsJDQ2d1v+REAFOwks8nhwOB93d3VitVvr7+3E4HNjtdmw2G3a7fWzfbrePnTM4cBfPqJZOHo+HoSEnYWHjLZFzwyIINWpfYBsMBiIiIoiKiiI8PJyIiIixLTIyEpPJRGxsLCaTSbr9hHh4El5CCCECjszzEkIIEXgkvIQQQgQcCS8hhBAB579RacvDgYKsnwAAAABJRU5ErkJggg==", + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Image(graph.get_graph().draw_png())" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'joke_graph': {'conversation': [AIMessage(content=\"*chuckles* Oh boy, looks like we've got a real fusilli one over here! I bet you've got a ton of pasta puns all penne'd up. But hey, orzo you thought - I'm a bit of an impasta myself! Though I am trying to diversify my joke portfolio... I've been told putting all my eggs in one basket is not a very gnocchi idea.\\n\\nBut hey, keep the cheesy jokes coming - I promise I won't get too tagliatelle the truth if they fall flat. After all, laughter is good for your elbows... or wait, is that the other body part? Ah well, I'm sure we'll both feel tortellini awesome after a good laugh either way!\")]}}\n", + "{'__end__': {'conversation': [('user', 'Tell a joke about pasta'), AIMessage(content=\"*chuckles* Oh boy, looks like we've got a real fusilli one over here! I bet you've got a ton of pasta puns all penne'd up. But hey, orzo you thought - I'm a bit of an impasta myself! Though I am trying to diversify my joke portfolio... I've been told putting all my eggs in one basket is not a very gnocchi idea.\\n\\nBut hey, keep the cheesy jokes coming - I promise I won't get too tagliatelle the truth if they fall flat. After all, laughter is good for your elbows... or wait, is that the other body part? Ah well, I'm sure we'll both feel tortellini awesome after a good laugh either way!\")]}}\n" + ] + } + ], + "source": [ + "for step in graph.stream({\"conversation\": [(\"user\", \"Tell a joke about pasta\")]}):\n", + " print(step)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'assistant': {'conversation': [AIMessage(content=\"I'm doing well, thanks for asking! As an AI assistant, I don't have feelings per se, but I'm functioning properly and ready to help out however I can. How are you doing today? Let me know if there are any questions I can assist with.\")]}}\n", + "{'__end__': {'conversation': [('user', 'How YOU doin?'), AIMessage(content=\"I'm doing well, thanks for asking! As an AI assistant, I don't have feelings per se, but I'm functioning properly and ready to help out however I can. How are you doing today? Let me know if there are any questions I can assist with.\")]}}\n" + ] + } + ], + "source": [ + "for step in graph.stream({\"conversation\": [(\"user\", \"How YOU doin?\")]}):\n", + " print(step)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}