diff --git a/examples/persistence.ipynb b/examples/persistence.ipynb index d0af576d1..2cb1ee988 100644 --- a/examples/persistence.ipynb +++ b/examples/persistence.ipynb @@ -22,12 +22,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": { - "tags": [] - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.3.2\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], "source": [ "!pip install --quiet -U langchain langchain_openai tavily-python" ] @@ -44,9 +52,7 @@ "cell_type": "code", "execution_count": 2, "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [ { "name": "stdin", @@ -100,9 +106,7 @@ "cell_type": "code", "execution_count": 1, "id": "d7ef57dd-5d6e-4ad3-9377-a92201c1310e", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langchain_community.tools.tavily_search import TavilySearchResults\n", @@ -124,9 +128,7 @@ "cell_type": "code", "execution_count": 2, "id": "5cf3331e-ccb3-41c8-aeb9-a840a94d41e7", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langgraph.prebuilt import ToolExecutor\n", @@ -154,9 +156,7 @@ "cell_type": "code", "execution_count": 3, "id": "892b54b9-75f0-4804-9ed0-88b5e5532989", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langchain_openai import ChatOpenAI\n", @@ -180,9 +180,7 @@ "cell_type": "code", "execution_count": 4, "id": "cd3cbae5-d92c-4559-a4aa-44721b80d107", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langchain_core.utils.function_calling import convert_to_openai_function\n", @@ -222,9 +220,7 @@ "cell_type": "code", "execution_count": 5, "id": "3b541bb9-900c-40d0-964d-7b5dfee30667", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langgraph.prebuilt import ToolInvocation\n", @@ -284,9 +280,7 @@ "cell_type": "code", "execution_count": 6, "id": "812b4e70-4956-4415-8880-db48b3dcbad2", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [], "source": [ "from langgraph.graph import MessageGraph, END\n", @@ -338,81 +332,25 @@ "To add in persistence, we pass in a checkpoint when compiling the graph" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "d2219e9d-a56f-4a93-b4b0-4c9adf3b1fd5", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "14964e27-3326-49ef-9fc9-d646af7f43f8", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "pool = AsyncConnectionPool(\n", - " # Example configuration\n", - " conninfo=\"postgresql://langchain:langchain@localhost:6024/langchain\",\n", - " max_size=20,\n", - ")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "15a565f9-639a-462e-b930-16468503ee2a", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "await pool.close()" - ] - }, { "cell_type": "code", "execution_count": 7, - "id": "d29cc0d4-5864-4a8c-8020-ce38f688d5c7", - "metadata": { - "tags": [] - }, + "id": "6845ed6a-d155-4105-9160-28849877248b", + "metadata": {}, "outputs": [], "source": [ "from langgraph.checkpoint.sqlite import SqliteSaver\n", - "from langchain_postgres import PostgresSaver, PickleCheckpointSerializer\n", - "from psycopg_pool import AsyncConnectionPool, ConnectionPool\n", - "from langchain_postgres import (\n", - " PostgresSaver, PickleCheckpointSerializer\n", - ")\n", - "\n", - "# pool = AsyncConnectionPool(\n", - "# # Example configuration\n", - "# conninfo=\"postgresql://langchain:langchain@localhost:6024/langc0\n", - "# hain\",\n", - "# max_size=20,\n", - "# )\n", - "\n", - "pool = ConnectionPool(\n", - " # Example configuration\n", - " conninfo=\"postgresql://langchain:langchain@localhost:6024/langchain\",\n", - " max_size=20,\n", - ")\n", - "\n", - "\n", - "PostgresSaver.create_tables(pool)\n", - "\n", - "memory = PostgresSaver(\n", - " serializer=PickleCheckpointSerializer(),\n", - " sync_connection=pool,\n", - ")\n", - "\n", - "# memory = SqliteSaver.from_conn_string(\":memory:\")\n", "\n", + "memory = SqliteSaver.from_conn_string(\":memory:\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "79d29875-8aa8-434c-9f20-1c58346a6249", + "metadata": {}, + "outputs": [], + "source": [ "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", "# meaning you can use it as you would any other runnable\n", @@ -431,17 +369,15 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "cfd140f0-a5a6-4697-8115-322242f197b5", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "content='Hello Bob! It seems like you mentioned your name twice. How can I assist you today?' response_metadata={'finish_reason': 'stop'} id='run-95013bc6-6893-47bb-9640-c9a32e6213be-0'\n" + "content='Hello Bob! How can I assist you today?' id='a34fcaf6-a812-47f8-921d-4ba57b8271cd'\n" ] } ], @@ -457,40 +393,15 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "16849d25-d86e-4984-b4d7-c92076d867d5", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'agent': AIMessage(content=\"I found a website for toothpaste products. You can visit [Colgate's website](https://www.colgate.com/en-us/products) to explore a range of dental care products, including toothpaste.\", response_metadata={'finish_reason': 'stop'}, id='run-4c5770e9-46ef-427a-958b-3453893e87b8-0')}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "event" - ] - }, - { - "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "08ae8246-11d5-40e1-8567-361e5bef8917", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "content='Your name is Bob! How can I help you, Bob?' response_metadata={'finish_reason': 'stop'} id='run-7b182ace-d276-48d5-b6f6-037614b4aa8e-0'\n" + "content='Your name is Bob. How can I help you, Bob?' id='dcf332e8-f9be-41c1-8a09-7a815a7de6d0'\n" ] } ], @@ -511,24 +422,20 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "273d56a8-f40f-4a51-a27f-7c6bb2bda0ba", - "metadata": { - "tags": [] - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "content='' additional_kwargs={'function_call': {'arguments': '{\"query\":\"toothpaste website\"}', 'name': 'tavily_search_results_json'}} response_metadata={'finish_reason': 'function_call'} id='run-c24abecf-e217-4553-9d53-a3c8ef258ecd-0'\n", - "content=\"[{'url': 'https://www.colgate.com/en-us/products', 'content': 'Get a brighter, whiter smile when you use Colgate Optic White toothpaste, mouthwash, and toothbrush products during your oral care routine. View Products Colgate Total 360ยบ'}]\" name='tavily_search_results_json' id='6ad0fc6f-94e2-449a-92a9-94d26fb444ec'\n", - "content=\"I found a website for toothpaste products. You can visit [Colgate's website](https://www.colgate.com/en-us/products) to explore a range of dental care products, including toothpaste.\" response_metadata={'finish_reason': 'stop'} id='run-4c5770e9-46ef-427a-958b-3453893e87b8-0'\n" + "content=\"I'm sorry, but I don't have access to your personal information, including your name. How can I assist you today?\" id='d7ef71f4-0393-4770-b8aa-969756791ec6'\n" ] } ], "source": [ - "inputs = HumanMessage(content=\"can you find website for toothpaste?\")\n", + "inputs = HumanMessage(content=\"what is my name?\")\n", "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"3\"}}):\n", " for v in event.values():\n", " print(v)" @@ -559,7 +466,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" + "version": "3.11.8" } }, "nbformat": 4,