From f1eca30912dd7c91abd18781df606e43815acb71 Mon Sep 17 00:00:00 2001 From: Angel Igareta Date: Thu, 18 Apr 2024 12:19:45 +0200 Subject: [PATCH] Update visualization notebook to showcase new capabilities for mermaid rendering (syntax and PNG), as well as removing conditional nodes --- examples/graph.png | Bin 0 -> 59898 bytes examples/visualization.ipynb | 444 +++++++++++++++++++++++++++++------ 2 files changed, 378 insertions(+), 66 deletions(-) create mode 100644 examples/graph.png diff --git a/examples/graph.png b/examples/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7556d606350ebf4490827742bb8fc7f2aec25f4c GIT binary patch literal 59898 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 literal 0 HcmV?d00001 diff --git a/examples/visualization.ipynb b/examples/visualization.ipynb index e13755616..1766b3adc 100644 --- a/examples/visualization.ipynb +++ b/examples/visualization.ipynb @@ -24,154 +24,466 @@ { "cell_type": "code", "execution_count": 1, - "id": "efb7e3c0-c63f-40f6-93ce-19681d650fc2", - "metadata": {}, "outputs": [], "source": [ - "from langchain_openai import ChatOpenAI\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", - "from langgraph.prebuilt import chat_agent_executor\n", - "from langchain_core.messages import HumanMessage" - ] + "!pip install langchain-openai" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2024-04-18T12:18:27.746359Z", + "end_time": "2024-04-18T12:18:30.105332Z" + } + } }, { "cell_type": "code", "execution_count": 2, + "id": "efb7e3c0-c63f-40f6-93ce-19681d650fc2", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.106849Z", + "end_time": "2024-04-18T12:18:30.466861Z" + } + }, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langgraph.prebuilt import chat_agent_executor" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "a7025f33-3160-41cf-868b-17ebc916fb1d", "metadata": {}, "outputs": [], "source": [ - "tools = [TavilySearchResults(max_results=1)]\n", - "model = ChatOpenAI()" + "# Optional to not need .env\n", + "import os\n", + "os.environ['TAVILY_API_KEY']='foo'\n", + "os.environ['OPENAI_API_KEY'] = 'foo'\n", + "\n", + "tools=[TavilySearchResults(max_results=1)]\n", + "model=ChatOpenAI()" ] }, { "cell_type": "markdown", "id": "43064805-2ac9-4b5a-850c-a68dd7282350", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.469100Z", + "end_time": "2024-04-18T12:18:30.586216Z" + } + }, "source": [ "## Create executor\n", "\n", "We can now use the high level interface to create the executor" - ] + ], + "outputs": [], + "execution_count": 3 }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "32b4ae66-f667-4a8b-a602-503fd0effcd9", "metadata": {}, "outputs": [], "source": [ - "app = chat_agent_executor.create_function_calling_executor(model, tools)" + "app=chat_agent_executor.create_function_calling_executor(model, tools)" ] }, { "cell_type": "markdown", "id": "f4fc9378-b141-4b65-b86c-3afba77f7161", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.587191Z", + "end_time": "2024-04-18T12:18:30.605220Z" + } + }, "source": [ "## Ascii\n", "\n", "We can easily visualize this graph in ascii" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "ca9b980d-1f0a-4286-9157-a870e3d55134", - "metadata": {}, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " +-----------+ \n", - " | __start__ | \n", - " +-----------+ \n", - " * \n", - " * \n", - " * \n", - " +-------+ \n", - " | agent | \n", - " *+-------+* \n", - " ** *** \n", - " ** ** \n", - " ** ** \n", - "+-----------------------+ ** \n", - "| agent_should_continue | * \n", - "+-----------------------+ * \n", - " * ***** * \n", - " * **** * \n", - " * *** * \n", - " +---------+ +--------+ \n", - " | __end__ | | action | \n", - " +---------+ +--------+ \n" + " +-----------+ \n", + " | __start__ | \n", + " +-----------+ \n", + " * \n", + " * \n", + " * \n", + " +-------+ \n", + " | agent | \n", + " +-------+* \n", + " *** *** \n", + " * * \n", + " ** *** \n", + "+-----------------+ * \n", + "| should_continue | * \n", + "+-----------------+. * \n", + " . ..... * \n", + " . ... * \n", + " . ... * \n", + " +---------+ +--------+ \n", + " | __end__ | | action | \n", + " +---------+ +--------+ \n" ] } ], + "execution_count": 4 + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca9b980d-1f0a-4286-9157-a870e3d55134", + "metadata": {}, + "outputs": [], "source": [ "app.get_graph().print_ascii()" ] }, { "cell_type": "markdown", - "id": "324d40ed-b665-4416-88f1-5df161546cd9", - "metadata": {}, + "id": "edcd9ad2", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.609323Z", + "end_time": "2024-04-18T12:18:30.629307Z" + } + }, "source": [ - "## PNG\n", + "## Mermaid\n", "\n", - "We can also visualize this as a `.png`\n", - "\n", - "Note that this requires having graphviz installed" - ] + "We can also convert a graph class into Mermaid syntax." + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "%%{init: {'flowchart': {'curve': 'linear'}}}%%\n", + "graph TD;\n", + "\t__start__[__start__]:::startclass;\n", + "\t__end__[__end__]:::endclass;\n", + "\tagent([agent]):::otherclass;\n", + "\taction([action]):::otherclass;\n", + "\tshould_continue([should_continue]):::otherclass;\n", + "\t__start__ --> agent;\n", + "\taction --> agent;\n", + "\tagent --> should_continue;\n", + "\tshould_continue -. continue .-> action;\n", + "\tshould_continue -. end .-> __end__;\n", + "\tclassDef startclass fill:#ffdfba;\n", + "\tclassDef endclass fill:#baffc9;\n", + "\tclassDef otherclass fill:#fad7de;\n", + "\n" + ] + } + ], + "execution_count": 5 }, { "cell_type": "code", "execution_count": null, - "id": "d4234400-75cd-4b13-aeff-828f7fb68ab1", - "metadata": {}, + "id": "66007b2d", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:55.014109Z", + "end_time": "2024-04-18T12:16:55.036649Z" + } + }, "outputs": [], "source": [ - "# !pip install pygraphviz " + "print(app.get_graph().draw_mermaid())" ] }, + { + "cell_type": "markdown", + "id": "324d40ed-b665-4416-88f1-5df161546cd9", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.615432Z", + "end_time": "2024-04-18T12:18:30.629548Z" + } + }, + "source": [ + "## PNG\n", + "\n", + "If prefered, we could render the Graph into a `.png`. Here we could use three options:\n", + "\n", + "- Using graphviz (which requires `pip install graphviz`)\n", + "- Using Mermaid + Pyppeteer (requires `pip install pyppeteer`)\n", + "- Using Mermaid.ink API (does not require additional packages)" + ], + "outputs": [], + "execution_count": 6 + }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "ea909e33-6a72-4d9f-87bf-faab9ab578f1", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:55.021318Z", + "end_time": "2024-04-18T12:16:55.036774Z" + } + }, "outputs": [], "source": [ "from IPython.display import Image" ] }, + { + "cell_type": "markdown", + "id": "d821b2f6", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.620092Z", + "end_time": "2024-04-18T12:18:30.629629Z" + } + }, + "source": [ + "### Using Graphviz" + ], + "outputs": [], + "execution_count": 7 + }, { "cell_type": "code", - "execution_count": 7, - "id": "ee026342-f560-4ce0-ab43-1718bd19a366", - "metadata": {}, + "execution_count": 8, + "id": "d4234400-75cd-4b13-aeff-828f7fb68ab1", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.624386Z", + "end_time": "2024-04-18T12:18:30.870326Z" + } + }, "outputs": [ { "data": { - "image/png": "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", - "text/plain": [ - "" - ] + "text/plain": "", + "text/html": "" }, - "execution_count": 7, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "Image(app.get_graph().draw_png())" + "# !pip install pygraphviz" ] }, { "cell_type": "code", "execution_count": null, - "id": "e1b51a2b-128e-4925-94b6-311370be3718", - "metadata": {}, + "id": "ee026342-f560-4ce0-ab43-1718bd19a366", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:55.029258Z", + "end_time": "2024-04-18T12:16:55.261297Z" + } + }, + "outputs": [], + "source": [ + "Image(app.get_graph().draw_png())" + ] + }, + { + "cell_type": "markdown", + "id": "b9e767fc", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.871750Z", + "end_time": "2024-04-18T12:18:30.873950Z" + } + }, + "source": [ + "### Using Mermaid + Pyppeteer" + ], + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d403e1e7", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:30.876810Z", + "end_time": "2024-04-18T12:18:33.630723Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# !pip install pyppeteer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "058546ee", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:55.268313Z", + "end_time": "2024-04-18T12:16:57.848469Z" + } + }, + "outputs": [], + "source": [ + "from langchain_core.runnables.graph import CurveStyle, NodeColors, MermaidDrawMethod\n", + "\n", + "Image(app.get_graph().draw_mermaid_png(\n", + " curve_style=CurveStyle.LINEAR,\n", + " node_colors=NodeColors(start=\"#ffdfba\", end=\"#baffc9\", other=\"#fad7de\"),\n", + " wrap_label_n_words=9,\n", + " output_file_path=None,\n", + " draw_method=MermaidDrawMethod.PYPPETEER,\n", + " background_color=\"white\",\n", + " padding=10\n", + "))" + ] + }, + { + "cell_type": "markdown", + "id": "dc4b618c", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:33.633459Z", + "end_time": "2024-04-18T12:18:33.849053Z" + } + }, + "source": [], + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 11 + }, + { + "cell_type": "markdown", + "id": "2dd71a7c", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:57.852988Z", + "end_time": "2024-04-18T12:16:58.610115Z" + } + }, + "source": [ + "### Using Mermaid.Ink" + ], + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 12 + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "be37d419", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:33.851902Z", + "end_time": "2024-04-18T12:18:34.007726Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Image(app.get_graph().draw_mermaid_png(\n", + " draw_method=MermaidDrawMethod.API,\n", + "))" + ] + }, + { + "cell_type": "markdown", + "id": "e3079261", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:18:34.010816Z", + "end_time": "2024-04-18T12:18:35.651423Z" + } + }, + "source": [ + "## Excluding condition nodes\n", + "By default, condition nods like 'should_continue' will be added. In case you want to exclude these, you can use add_condition_nodes parameter" + ], + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 13 + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f2773dd", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:16:58.771228Z", + "end_time": "2024-04-18T12:17:00.428677Z" + } + }, + "outputs": [], + "source": [ + "Image(app.get_graph(add_condition_nodes=False).draw_mermaid_png(\n", + " draw_method=MermaidDrawMethod.API,\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36fbdc44", + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-18T12:05:15.456711Z", + "end_time": "2024-04-18T12:05:15.483115Z" + } + }, "outputs": [], "source": [] }