From 79dffe20b2e50fcc3e04824232b020675603b8b4 Mon Sep 17 00:00:00 2001 From: Vadym Barda Date: Wed, 7 May 2025 16:06:28 -0400 Subject: [PATCH] docs: update multi agent multi-turn howto (#4582) Fixes #4554 --- .../multi-agent-multi-turn-convo.ipynb | 117 ++++++++---------- 1 file changed, 52 insertions(+), 65 deletions(-) diff --git a/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb b/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb index 336c6ab85..d1e454422 100644 --- a/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb +++ b/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb @@ -77,18 +77,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "0bcff5d4-130e-426d-9285-40d0f72c7cd3", "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], + "outputs": [], "source": [ "import getpass\n", "import os\n", @@ -207,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "aa4bdbff-9461-46cc-aee9-8a22d3c3d9ec", "metadata": {}, "outputs": [], @@ -221,6 +213,11 @@ "\n", "model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", "\n", + "\n", + "class MultiAgentState(MessagesState):\n", + " last_active_agent: str\n", + "\n", + "\n", "# Define travel advisor tools and ReAct agent\n", "travel_advisor_tools = [\n", " get_travel_recommendations,\n", @@ -238,12 +235,13 @@ "\n", "\n", "def call_travel_advisor(\n", - " state: MessagesState,\n", + " state: MultiAgentState,\n", ") -> Command[Literal[\"hotel_advisor\", \"human\"]]:\n", " # You can also add additional logic like changing the input to the agent / output from the agent, etc.\n", " # NOTE: we're invoking the ReAct agent with the full history of messages in the state\n", " response = travel_advisor.invoke(state)\n", - " return Command(update=response, goto=\"human\")\n", + " update = {**response, \"last_active_agent\": \"travel_advisor\"}\n", + " return Command(update=update, goto=\"human\")\n", "\n", "\n", "# Define hotel advisor tools and ReAct agent\n", @@ -263,26 +261,20 @@ "\n", "\n", "def call_hotel_advisor(\n", - " state: MessagesState,\n", + " state: MultiAgentState,\n", ") -> Command[Literal[\"travel_advisor\", \"human\"]]:\n", " response = hotel_advisor.invoke(state)\n", - " return Command(update=response, goto=\"human\")\n", + " update = {**response, \"last_active_agent\": \"hotel_advisor\"}\n", + " return Command(update=update, goto=\"human\")\n", "\n", "\n", "def human_node(\n", - " state: MessagesState, config\n", + " state: MultiAgentState, config\n", ") -> Command[Literal[\"hotel_advisor\", \"travel_advisor\", \"human\"]]:\n", " \"\"\"A node for collecting user input.\"\"\"\n", "\n", " user_input = interrupt(value=\"Ready for user input.\")\n", - "\n", - " # identify the last active agent\n", - " # (the last active node before returning to human)\n", - " langgraph_triggers = config[\"metadata\"][\"langgraph_triggers\"]\n", - " if len(langgraph_triggers) != 1:\n", - " raise AssertionError(\"Expected exactly 1 trigger in human node\")\n", - "\n", - " active_agent = langgraph_triggers[0].split(\":\")[1]\n", + " active_agent = state[\"last_active_agent\"]\n", "\n", " return Command(\n", " update={\n", @@ -297,7 +289,7 @@ " )\n", "\n", "\n", - "builder = StateGraph(MessagesState)\n", + "builder = StateGraph(MultiAgentState)\n", "builder.add_node(\"travel_advisor\", call_travel_advisor)\n", "builder.add_node(\"hotel_advisor\", call_hotel_advisor)\n", "\n", @@ -315,13 +307,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "d77921f6-599d-443f-8b15-56b1adafd3a8", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] @@ -348,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "id": "161e0cf1-d13a-4026-8f89-bdab67d1ad4d", "metadata": {}, "outputs": [ @@ -361,68 +353,63 @@ "\n", "User: {'messages': [{'role': 'user', 'content': 'i wanna go somewhere warm in the caribbean'}]}\n", "\n", - "travel_advisor: Based on the recommendations, I suggest considering Aruba! It's a fantastic Caribbean destination known for its perfect warm weather year-round, with average temperatures around 82°F (28°C). Aruba is famous for its pristine white-sand beaches, crystal-clear waters, and constant cooling trade winds.\n", + "travel_advisor: Based on the recommendations, Aruba would be an excellent choice for your Caribbean getaway! Aruba is known as \"One Happy Island\" and offers:\n", + "- Year-round warm weather with consistent temperatures around 82°F (28°C)\n", + "- Beautiful white sand beaches like Eagle Beach and Palm Beach\n", + "- Clear turquoise waters perfect for swimming and snorkeling\n", + "- Minimal rainfall and location outside the hurricane belt\n", + "- A blend of Caribbean and Dutch culture\n", + "- Great dining options and nightlife\n", + "- Various water sports and activities\n", "\n", - "Some highlights of Aruba include:\n", - "1. Beautiful Eagle Beach and Palm Beach\n", - "2. Excellent snorkeling and diving opportunities\n", - "3. Vibrant culture and dining scene\n", - "4. Consistent sunny weather (it's outside the hurricane belt!)\n", - "5. Great shopping and nightlife in Oranjestad\n", - "\n", - "Would you like me to help you explore more specific aspects of visiting Aruba? Or if you're interested in finding a hotel there, I can connect you with our hotel advisor who can provide detailed accommodation recommendations.\n", + "Would you like me to get some specific hotel recommendations in Aruba for your stay? I can transfer you to our hotel advisor who can help with accommodations.\n", "\n", "--- Conversation Turn 2 ---\n", "\n", "User: Command(resume='could you recommend a nice hotel in one of the areas and tell me which area it is.')\n", "\n", - "hotel_advisor: Based on the recommendations, I can suggest two excellent options in different areas:\n", + "hotel_advisor: Based on the recommendations, I can suggest two excellent options:\n", "\n", "1. The Ritz-Carlton, Aruba - Located in Palm Beach\n", - "This luxury resort is situated in the bustling Palm Beach area, known for its high-rise hotels and vibrant atmosphere. The Ritz offers world-class amenities, including a luxurious spa, multiple restaurants, and a casino. The location is perfect if you want to be close to shopping, dining, and nightlife.\n", + "- This luxury resort is situated in the vibrant Palm Beach area\n", + "- Known for its exceptional service and amenities\n", + "- Perfect if you want to be close to dining, shopping, and entertainment\n", + "- Features multiple restaurants, a casino, and a world-class spa\n", + "- Located on a pristine stretch of Palm Beach\n", "\n", "2. Bucuti & Tara Beach Resort - Located in Eagle Beach\n", - "This adults-only boutique resort is situated on the stunning Eagle Beach, which is wider and generally quieter than Palm Beach. It's perfect for those seeking a more peaceful, romantic atmosphere. The resort is known for its exceptional service and sustainability practices.\n", + "- An adults-only boutique resort on Eagle Beach\n", + "- Known for being more intimate and peaceful\n", + "- Award-winning for its sustainability practices\n", + "- Perfect for a romantic getaway or peaceful vacation\n", + "- Located on one of the most beautiful beaches in the Caribbean\n", "\n", - "Would you like more specific information about either of these hotels or their locations?\n", + "Would you like more specific information about either of these properties or their locations?\n", "\n", "--- Conversation Turn 3 ---\n", "\n", "User: Command(resume='i like the first one. could you recommend something to do near the hotel?')\n", "\n", - "travel_advisor: Near The Ritz-Carlton in Palm Beach, there are several excellent activities you can enjoy:\n", + "travel_advisor: Near the Ritz-Carlton in Palm Beach, here are some highly recommended activities:\n", "\n", - "1. Palm Beach Strip - Right outside the hotel, you can walk along this vibrant strip featuring:\n", - " - High-end shopping at luxury boutiques\n", - " - Various restaurants and bars\n", - " - The Paseo Herencia Shopping & Entertainment Center\n", - "\n", - "2. Water Activities (within walking distance):\n", - " - Snorkeling at the artificial reef\n", + "1. Visit the Palm Beach Plaza Mall - Just a short walk from the hotel, featuring shopping, dining, and entertainment\n", + "2. Try your luck at the Stellaris Casino - It's right in the Ritz-Carlton\n", + "3. Take a sunset sailing cruise - Many depart from the nearby pier\n", + "4. Visit the California Lighthouse - A scenic landmark just north of Palm Beach\n", + "5. Enjoy water sports at Palm Beach:\n", + " - Jet skiing\n", " - Parasailing\n", - " - Jet ski rentals\n", - " - Catamaran sailing trips\n", - " - Paddleboarding\n", + " - Snorkeling\n", + " - Stand-up paddleboarding\n", "\n", - "3. Nearby Attractions:\n", - " - Bubali Bird Sanctuary (5-minute drive)\n", - " - Butterfly Farm (10-minute walk)\n", - " - California Lighthouse (short drive)\n", - " - Visit the famous Stellaris Casino (located within the Ritz-Carlton)\n", - "\n", - "4. Local Culture:\n", - " - Visit the nearby fishing pier\n", - " - Take a short trip to local craft markets\n", - " - Evening sunset watching on the beach\n", - "\n", - "Would you like more specific information about any of these activities? I can also recommend some specific restaurants or shopping venues in the area!\n" + "Would you like more specific information about any of these activities or would you like to know about other options in the area?\n" ] } ], "source": [ "import uuid\n", "\n", - "thread_config = {\"configurable\": {\"thread_id\": uuid.uuid4()}}\n", + "thread_config = {\"configurable\": {\"thread_id\": str(uuid.uuid4())}}\n", "\n", "inputs = [\n", " # 1st round of conversation,\n",