From 536c1c2bba650cec23afac2d69312d7a87957c02 Mon Sep 17 00:00:00 2001 From: Vadym Barda Date: Wed, 30 Apr 2025 15:55:55 -0400 Subject: [PATCH] docs: remove prebuilt how-tos and add redirects to agents tab (#4485) --- docs/_scripts/notebook_hooks.py | 6 + ...ate-react-agent-hitl_740bbaeb.msgpack.zlib | 1 - ...8-63e8-49e5-a08b-02dc907bed1d.msgpack.zlib | 1 - ...3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib | 1 - ...9-32fa-4611-9487-cf816ba2e147.msgpack.zlib | 1 - ...3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib | 1 - ...3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib | 1 - ...9-ffd1-4b36-86ec-cabb3357d929.msgpack.zlib | 1 - ...3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib | 1 - ...9-32fa-4611-9487-cf816ba2e147.msgpack.zlib | 1 - ...3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib | 1 - ...c-aac0-4ff4-ab69-60d399f75423.msgpack.zlib | 1 - docs/docs/agents/context.md | 4 +- docs/docs/agents/memory.md | 2 +- .../how-tos/create-react-agent-hitl.ipynb | 376 ------------------ .../how-tos/create-react-agent-memory.ipynb | 291 -------------- ...create-react-agent-structured-output.ipynb | 287 ------------- .../create-react-agent-system-prompt.ipynb | 231 ----------- docs/docs/how-tos/create-react-agent.ipynb | 300 -------------- docs/docs/how-tos/index.md | 16 +- 20 files changed, 13 insertions(+), 1511 deletions(-) delete mode 100644 docs/cassettes/create-react-agent-hitl_740bbaeb.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-hitl_83148e08-63e8-49e5-a08b-02dc907bed1d.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-hitl_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-memory_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-memory_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-structured-output_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-structured-output_d1386f99-ffd1-4b36-86ec-cabb3357d929.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent-system-prompt_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib delete mode 100644 docs/cassettes/create-react-agent_fa16de4c-aac0-4ff4-ab69-60d399f75423.msgpack.zlib delete mode 100644 docs/docs/how-tos/create-react-agent-hitl.ipynb delete mode 100644 docs/docs/how-tos/create-react-agent-memory.ipynb delete mode 100644 docs/docs/how-tos/create-react-agent-structured-output.ipynb delete mode 100644 docs/docs/how-tos/create-react-agent-system-prompt.ipynb delete mode 100644 docs/docs/how-tos/create-react-agent.ipynb diff --git a/docs/_scripts/notebook_hooks.py b/docs/_scripts/notebook_hooks.py index b2238669d..20955dbab 100644 --- a/docs/_scripts/notebook_hooks.py +++ b/docs/_scripts/notebook_hooks.py @@ -31,6 +31,12 @@ REDIRECT_MAP = { "cloud/concepts/api.md": "concepts/langgraph_server.md", "cloud/concepts/cloud.md": "concepts/langgraph_cloud.md", "cloud/faq/studio.md": "concepts/langgraph_studio.md#studio-faqs", + # prebuit redirects + "how-tos/create-react-agent.ipynb": "agents/agents.md#basic-configuration", + "how-tos/create-react-agent-memory.ipynb": "agents/memory.md", + "how-tos/create-react-agent-system-prompt.ipynb": "agents/context.md#prompts", + "how-tos/create-react-agent-hitl.ipynb": "agents/human-in-the-loop.md", + "how-tos/create-react-agent-structured-output.ipynb": "agents/agents.md#structured-output", # misc "prebuilt.md": "agents/prebuilt.md", "reference/prebuilt.md": "reference/agents.md" diff --git a/docs/cassettes/create-react-agent-hitl_740bbaeb.msgpack.zlib b/docs/cassettes/create-react-agent-hitl_740bbaeb.msgpack.zlib deleted file mode 100644 index 69ee91a28..000000000 --- a/docs/cassettes/create-react-agent-hitl_740bbaeb.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-hitl_83148e08-63e8-49e5-a08b-02dc907bed1d.msgpack.zlib b/docs/cassettes/create-react-agent-hitl_83148e08-63e8-49e5-a08b-02dc907bed1d.msgpack.zlib deleted file mode 100644 index 5a1999ae2..000000000 --- a/docs/cassettes/create-react-agent-hitl_83148e08-63e8-49e5-a08b-02dc907bed1d.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-hitl_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib b/docs/cassettes/create-react-agent-hitl_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib deleted file mode 100644 index db2b6b9f1..000000000 --- a/docs/cassettes/create-react-agent-hitl_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-memory_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib b/docs/cassettes/create-react-agent-memory_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib deleted file mode 100644 index 713afbaa3..000000000 --- a/docs/cassettes/create-react-agent-memory_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-memory_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib b/docs/cassettes/create-react-agent-memory_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib deleted file mode 100644 index 571c9fae2..000000000 --- a/docs/cassettes/create-react-agent-memory_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-structured-output_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib b/docs/cassettes/create-react-agent-structured-output_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib deleted file mode 100644 index 9e13c682c..000000000 --- a/docs/cassettes/create-react-agent-structured-output_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-structured-output_d1386f99-ffd1-4b36-86ec-cabb3357d929.msgpack.zlib b/docs/cassettes/create-react-agent-structured-output_d1386f99-ffd1-4b36-86ec-cabb3357d929.msgpack.zlib deleted file mode 100644 index c70a1af2f..000000000 --- a/docs/cassettes/create-react-agent-structured-output_d1386f99-ffd1-4b36-86ec-cabb3357d929.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent-system-prompt_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib b/docs/cassettes/create-react-agent-system-prompt_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib deleted file mode 100644 index 431250ccd..000000000 --- a/docs/cassettes/create-react-agent-system-prompt_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtV3l00/YdzzHOt7WUlrJlBYRhjwKRY9mOLScEmpMEkphcmHAZWfrZVmxLiiQ7cUhKIdB2DaWIc2XjCAkJpGmAEq5wdDCglCMwUsoLtBTeyvE4Bw8e0LBmPykOJINt7cZet7fqD1s//b739fv8ZlX7AC/QLBNcSzMi4AlShAthwaxqHuR7gSDOrvIA0clSlePMWdkVXp5uHuYURU6IioggOFrNcoAhaDXJeiJ8WATpJMQI+M65gSKm0sZS/tPBW6arPEAQCAcQVFHIpOkqkoW6GBEuVJlA4FiGQmgGSREJN00wqnBExbNuIO8KfkEEHlVJONKJyQL1DBEQ0QmQAkDAP17mT8+NH9WR2SsAXlUyBX7xsBRwy58cnIjqWZmIgUsM/gsiDwgPXNgJtwDgB6iPg3EQvbwsRKPWyN9Y1h0wXfRzinC7l1FCJct69B4FzWQIj0LgAKI1YJxMQwGB5GkuQKbKEQA0n4Y+sAik7OCGneU9hEymltk4gofyYGIERTjHw4DzIg3aliQt+pUXwHhlHyapGD8pswl2lex3u7HQSZpxqEpK5OjAvNI8oBRyRUBHStaWB0gRUpZMKal2AoKCmt+rdLKCKNV1zvd6giQBDCdgSJaC0qUPHUU0F45QwO4mRFAD08UAJSxSjQsADoXJ9YGqNi5pA8FxbppUHI3IE1imNpBeVLbkye0aOZkorCBGlOrN0IjYlIhxfliYDIKp9bhas6EQFUSCZtyw0FA3Ae2p4pT9HR03OIJ0QSFooOilqjbmuo40rCCtSSNIc1YnkQRPOqU1BO8x6Dd1/M57GZH2AKk6ftyT6gKbj9Xp1BimNm3sJFjwM6S0Rim/rZ2Ygcj7UZKFMqRyTV17fNyAcYhOqUKvw9fySvMIoLQKsoleYVYlzAU4crA60G6rzWPbk3g26OXKBJgXaVe20xuOaA1IFuAQrUarRzBdlB6LitQio9Oya+MDarKfmoaN2TzBCHaYisT2tFeTTi/jAlRN/FMTvktOOPRGNh82JgoKOVYAaMAqqXYCmtk2aNCUhE1t1YWyvINg6CJFrbROTiYcLDRTH9iGTSCLhMpRjyBV4DpdXWCnPc410C8NimlQDbZdrn0SlpVsOMfyIioAEo4x0S81h3uIQrmmYnRYpM6g0WiiYf+Rbi8Fsry2BNYDdQrRCMcDN0tQDYUonArATXtomATlNzAiYb1gkFmz7UkKkXUBRpDW6jRtz+6OJDyQNchuPBJUaYLPzqcTtcvSyjQmo6ahM5kAOhhUYfAI257cD4hYrRFqC9uJUZqSmgfDhRXY9EaT3Y7hlIHSYoAyYjgAlMmI47ZIkgLa9fFJaDxBOgGapVSbVJ2Qmx6blhJfkwVlx7OsiwYLTgeHWq2k3WrzxMTqeXOGL4czmtIyWH+cNkvILPLrHSnxGmciTxLjx/jiMvwZ2ny8MBbFjFqjLhLHMC2KqTVqTI2hXpeNsnk4Y77ZyGVmOEdb4rLZIh9lyY/jKREzGsfiLq0uV1B7uLwJbt5CZ+rcyT5f/hgaFxn1uAmcJUWtxe1GvTkxLdJmsiYkWUwFuQUwn3DSxkREI7AS4RwUYgL9gMJ+QOVu0Edh7d0QjVBKFcSoO8++aCQZnoFmxu2Phm0EywnAfzins2gRxKSzDGheBGPg9dFUTIprrDVRnZBfZM702ZykaTRlTMdzzGZx9OjsdCOBJdtyEiN9hIFPwzsEATPqUU0gDgaNHleK57Hp/6JVWyagHdsbNSvHEcwjwwoMbbdXZQEetpBUQ7pZLwXHOA+qYM4zY3Olepw06QgS1+I4YTKSRoAmWjI3tEt7NAwq5TNAOfVnVrUdOvuDGwaUdQ9SnlAxM63sjOalnS2WtwvmlfW5VHH/81eW1FPl6I6fubPmqkadGUOlJGvp7g9u7vfZpsdbug0867z4btLN3r1CVKWzgyLev7RYOr/0JLHsL/i3hyy3zntX9rv7QXHRVPYwe6Hsfo+Fb5bf6/b1t43f7POCwUXlOd2EsiNkxZilTWBEa+pQz8wxjld/OZEoxpvO65c17nX2P3E/KXzzucvIwI9D47pvr59OZoD7fXv3TruxuOdyskvcCavqJ7VL0rr8RtjrrxqR2nW+60JGZF0OeqH7nyceXqQb+taBLxvmNsanpx5aVDJj6vLPr6btr1gfMaRlC3am2bcpau433hOOprBDrv0txUmFVnP/ZS+EvJODbn1t5Yr5D3pfD13ea9qWtcOzd298bmk/7vyx6GTfqsbibpbCgtawhzcfOl6as3+nL/WstuHk+pLLmX0PXNk1/WAvvnz28KyyI5vZX4wO+2LH5pJVr99zTautm2veNXJ1HtW3/sU5RFXX+Y3sqlMrPi3fPbk4YYzuTmr9gDPHMi9lrrX1erto4fVJe5Yv/2TY0TnDjocNP71u5heVt0ZMVV+2mcnudXtGwSS1toYGzbPgzSNDg4KeJQoM+eqHRIGdWRmv292BhICHCTxA4VYA61lJwv2PAB8toyeVTGQlxqXFFSQnp3pITUp2AT8xlbPoLalxed8VFxK8w+uBVsnaVNMnK4hsMnyfLEO5yaoSlYzE/sbxFBHx0A6niNgAorSqX3Y8AP3anZL96OSP9btY/SNc/rfh8tmgXj8C5h8eMFeRCiCRmm//l+OR/wBSeOKyAIm/32Whzz+5LOj+Ry8Lkfj/42XBoH3mlwUDZYvEIu0au44kbEYMXhRwPU7KdwYDbjDYdX/3svAMQKiJMhkivx8IzX8MQhWMI47bwZx5rde1B33KPkwsff7Tj07+KvENffAsZA75833S5Iwh/dhjW4dHbymfYUy+slh19GVddOn7D5KDjm/ZFuI2JP125LY7h095Yp9XszNqVn7s8Vcfu3iqZeulr65/OaB0U+yeu0vCYtYxYTdKB22+NqTh19SirqeKc8MP75+you+gPwpjmfne2CZTdeL4I01u6eKFjG3EmfnnevZ/MeiN924990LJ2Bn5XZqvzb4z2Ba19+SDHkGDdgTHDrIlvmv53ZSDb+5aMCBrRsGqz7p1DR11uU9//AayIanGFdK7PPncvYhrE+5fPD3oRFGEfe25e439bv3BtOhP6oS6CwdX3tp8d7whZ/Cga28FrX6Fo57v8fumCa+3mgf8VGpZtfj2vIfTCleafYW5LXHpLSGrPgormOO40JqdMzavduEHXfJ7OksK8g82Dv1k2avs6s8srqvR7ww8TR/3rj2UuH3nUfbqzn1fzy8OacOOXW5fOZAL3/8KgLvW5A== \ No newline at end of file diff --git a/docs/cassettes/create-react-agent_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib b/docs/cassettes/create-react-agent_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib deleted file mode 100644 index 1fcec5f48..000000000 --- a/docs/cassettes/create-react-agent_187479f9-32fa-4611-9487-cf816ba2e147.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib b/docs/cassettes/create-react-agent_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib deleted file mode 100644 index b191648ae..000000000 --- a/docs/cassettes/create-react-agent_9ffff6c3-a4f5-47c9-b51d-97caaee85cd6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/create-react-agent_fa16de4c-aac0-4ff4-ab69-60d399f75423.msgpack.zlib b/docs/cassettes/create-react-agent_fa16de4c-aac0-4ff4-ab69-60d399f75423.msgpack.zlib deleted file mode 100644 index 2faaab3a8..000000000 --- a/docs/cassettes/create-react-agent_fa16de4c-aac0-4ff4-ab69-60d399f75423.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqVeAk8lN3b/42E7MlOCaXs2xi7bDN22RlbY4wxmMWMfY0KlW1UyFZRabEkhKSUhOxL1pF9za4s2d6pnuep/295/5/33Oc+93Wuc23nOt9zznwmOj8ASSCicViqAjTWD0mAI/woHSIpOp+A9PVHEv0uP8Qg/Txx7nlQfes8fwJ6kGrd088PT1SVkcEgCRg42l0ajfWWQWNQMkZWtmC4HQjvrodDIYPdMW5QFQUHeU9PBNYCa47WARvJm8khsDAfoxAcykg+CO+GsfVEoN1VPOxlfYws8FgEBhII19WxsdQjGuvaqnggFCwpupYe9sGebucNtCXs5VRC3KGQYHeIisd5XZXA8z6yeHMvnBIM4xOMULAw1rWDYGF2IFlj6F9fC5yRO1QlwM3AFPfXF6+L8vGwl7f1h1FsGEOIygg90D/9P226QSEh7to4oz99GurK+p1H63jCKPLuP2K0twxwkw8K+Tf+X3FQ+P4m1oqov3yDKb5/yehq+5mgZSUMKTYpct72cso/xrx++ETIWvrA0DreMDuYp7tdkKwhFIZ3gwYqGco7BMO8dDAwdBCRkmMfEztPH7idO46S6yATL0OKTzOig71ZiCXUFvNDB4E1+1vXz01Bx9NB3kcWaY0L/Bc/P3T+8GGEcfCCYRwCcRpabihdnA+OoHEy0BPth7zvhnMPrs33RMLdKXC5/MSGiCRIaaOQWD/SC3wwBR9Yqb/wQpSRl1ag1GJtBAKJ95PSxyJw7mgsilSICkHjJYXckR4+cD/kw1/DpDxxGfEnujgsFvkTeKQn3kgkXgrugw5APiIgiXgKFpGXHhL94H7+xOj7FFPIlsZ8DJJIhKOQuebGf0eUVP3DHpEoRTHlR8D5SGn7+OACpcwJaBQaS7onnkeJlfQQJKsCVlC8r0fxT6qx9vSXFJJXErJC4oXkZeUVheQUVBXAqnKKQlBT6zwzfRPSgHqoMNH/p11Xj792hrCqrKQwAYnHEfxc/XDCqsIIDyks0kdYUhgDD3KlBCWsqiSrqCwrG17wIxRKgqSsg/FI0hM0hjIo44VHogr/yowlHItCEkkP3IL9kMRCXTjCE/l3+KRiijUpioKGvBJYWVFW9qEVkkDZqKQnCB+cvzslgwRkoQmc6CdFQTbaA410J9VACGjKfGT/mI+SqqycqqLsj/n8lxQX60Kkfjm2+plhUp6BofVDCtNS24FUpoxQUYCD3JAIZQRYGSEHktK3s3xs+XPuUtY40sBOqDAS647HUQ4OorCqY6iwP8GHkpFfx4OTjJMMXJqSGunfIUsjcBgnmV/Zc5IJUNQiamCtQIp6toGn5HWMFLRhZnC8qZ2XNdwWZyqvGKBL4fooUxpKhfkjzYkEJXmi3yl5iK6uHNjQM4gAwqDlrC3QeBMPJCzE0kABAbMCm8nbYBQoMl4ILzu4tbKpmbUxmtLF+qoQrMyUIP4EP6Ix1s9e10gh0BqMhitA/ZF+qCCCgq594CkFPUoVDneWFEYRcP74/21179vCCcGkil8AkxT6F7AX/b32Jkgsys+TdB+sBAb93ENRFCwTKBL1gjsH/QejAJsRxBACUFEBABXlAQ7GqfoNdXVdz1uaQwxN9H8NNAKUckgWADAUcFhCdYTsHWBCdKO/NH4UOIKIB/57oUht9P6S7ZYC/u+FwR1JRFC+K5RXlEBxTjF5jEIfQ/2iz/yg3X7R6j/oQD+8H4U+/4MmWFvqUmh3Cn0G9Qft9geNwBN+yMdTaHWMjz/id9wAExJrY0X50lNeAYAIWAJQQOfH/H+J4HIBQPkbANAk/+a53QaAiisAwDP4myd6FwBYLwPAi/bfvN85wcMJ8J+sQ5SX2sMDANbyAYDZAQA4OgDgiOPfifgvsQn9jA0K4CgPCvABkBSOIYAFEIA0hZIHZAE5QOlgCNAFaKipf1RKOUSptPS0tIcO0R6hoztMz3SEiYnxCCMjM8tRNmYWdhZGRjYuNnaOY5ycnEys3Dxcx3iOHuM89sMIFQ1F5xAtAy0twzFmRuZj/+dyUAuw0wPbQC8NlTBAzU5Fw0518B4QpEyJEhoV1e91P0xHQ0t9iJ6KgTJsyQZQHaKiRE/LwsBwmO5nBqgpUzjMTnf0JIccF7ew9k36Y5zyFja2cF+/551d3SJKYB3rKNKNWzwgXUv/6JTSMtFTYoTUewqKVu4lb1coNvmpKN5oqP50SfFAe+gwHWVQgZ0Cb2oqBlp6app/BtlpDh09KadtYUnqPKYA971Hy8Ep4lbydiwqRXhl9WAQYKKhRMVOww5oAXtWenqH9M7p6dHGfPr4NW+mRN1/YA/twqeFhqlVLM0UtyfWm6BtioKlJgc7ZkAHwPfzsdRdY59nKrkq8B0C40vm5ZWR+WPBqU5O3AvZVYWuuCIP3+OEzaVIlP7rMw9z1iLjHHGBYeLvdpZ1uxy+5V+xd404E2KsWbZix7iswQpB9eQcGQufuTfb8v3Wtqbm9bsrTxmX61kNUb05nPDwrXtzkt+73zrJvPqqwXvHMkjiymZObJ7CvPmNiVlPdYrR1f+f0RuTW9/5WI88e717/mtquHeV1UnbHeMnAzHN0OCYc6NabnNbf9t0NobRmTkmGy2AlFHo4RcSeidv54+TMpUjcu+cDmjPn1MEz+axD1TdR8Xwbzxsgk/hE9Lypxa9KrMzBgwAldi7rEP4gOkRwpgY7Ese+ANDFDtXGTs7FTvb74Yrz87jRP7X13YibCwZ5agmDmeya0UK65cBTE9onPVUTS5R7l23aGvRnP2HhOasdklAo8vx+dAlduWb9bBiRr4hZq3YJKqYxzoKrf2lzTfaRS8vbd5JaJP21ZyTcHvWXc45n+wQRV5p+dDYEFoogo+EO6RymrRagby19Sqj6jFS72ZLlntuKxhuMwhyGpwsBN3OJzq27BvcQ3zWhVoG9GPBJ41tzs7fumexgiZnBe1dGDZMDL8tx9sqmAj2uCeR50k8HUdHB5U5B5tOzXF5UHPkfQAh53GCVsJ4UWYXpjDkk8Bn7oEggr9v7wxdjoEjoy7iymfjTJGsOQaqTEW1m5VnaYu0PMVVp17qtIX2bvcNYrjqpVSGGJ6NVcM50nekO5aUcJozeCUbk+BwVL7/CGP5RklXsPeLBTS/ctZ71ZBLS5rZc6cKZWeuaTTDlpomfCvRs+bZ55QrknpDcjAmCjyYyNQenj072lfhJj4cTJLK6dL6ogRIf2Pi+5jTKZD2tKyvnjR3Q9xGBMtMNRChRgIPrvPFxHf2levkKH2KrZ0T8YmXkXs/2stV89pBvToFTGYDhdFOfAYnBkmAxTurE6tc6tMnizUkJOMhzUf1+TMVSXJJxIzaGbn7qUdho/TO2KNzO5Vtcr75p7z53e7zSr7Q+IRppUkfsigVpDFExA0sem8PdeNZZZeHvfZMAuT5XFlvdtxO0Mj4MFkSbPKg2NU+d6OjlKnifipYF4GFpil55JwPFCgiMye70MddKk6+5yqh0yrhqxTyAuEn/35/pqQORbMWbZun65qzn3kZllZRYenwqPXsSPAJpqK4V8t7WDNcb8W8Qt2HjYwI40sRxpsYp6R0zCuC2SYkYGvgYyTsqxX5U/jqtvNVeWEZVfq4i3FxfzbRZ80CPMEZShvXgZk0q4q+lIczRKb8qgRyDvQrdkh2QTfUJKT4MozfdRLR5KVx6nL7Zx8dLlijxbXgQxdS+ARGzaWXfIcmxGEbShCVJM9QASUpPJl9iZMvkrWkI8X3BYHnfGRug2OYLyvRM3G14ptiZL+M3ifI6Yzp7rYDYHmtWS+voWfoXXTHCNd3x5tHz22cZo5a38e9P5YJXVk2xm/wy6ETNOK7Vx2Izmpy5bzAzYRaaWaa8AqN/fm6UdOkKw7LI7qbhr+ppZWtvVNS/F2XLSKpfcLE2yO+n3hpoda/UB4hPvp1HWSG6P+S7rg5ddo+1KyXd64kM4J1cK3/RkT2bg00+4euaBkOdt34qaILjfMEf2JPEIyXHOrOoVQEqUbFq1PTVDnRk+nY33ywg9ZmnjhSOvI6dunGb2p4bPW7oefnDnDP8LtUusMrE8Zl6j6jcrL+/JdK1sI7tNwG5nKOzDLzpl2XuNgZJKBkJjTdQEjUPIP0xA/UqhQewjLQBqozlKw81diZjZgLX6HOjo18Jc/r9BQ8UlLuPy6yVpJViN/KojdpUe5zPXMAXLnXIJG8Ul1R5/Zg5tG+J4GXx3lSp+1eJ2Rs5OzS3OLhJdHjti+ND7H3RivDEW7XlGLk4vkPlzFfpGnh/lgOf+Ci+m0s8RV7GYik19FbxjIKzFJ/fFZUmd6ab31UWLgnWlhIWJj63xrxHUnHiR1janPwJd7w2EycMyJwfTcH16u+caR4rXprv2vYseISb8Rl5gNg3f7zsuaImNnibqPkz5vnf2tsluxZp2gemCtor7jKTS72HADlE6rLFYFf1pM+wcU3pSrWortqzMHR2wmxMvvLvDMHwOZesr3Bv+L5zyY38JsH5FMz24XZ3lLOYCb5oWq1XHgyVqD3cEk9+b6P+TmWUaz2EPa4oP0NL9s+Y3YdjezeE3cv7Enjqs1R/rGzPFrGmUu9+80uWzO0N/xHNRDzGx/nlq31w0yLONsWda8mTmfzbJVSDb8q7S+Yrkn89no3v3cCE3vzOGu6jNuOWoHWubffnUYCnjBtPt7H6M5fqlv1+qDFpKA8X3P1kaSBW45Hon2+78LmDMKsbt820u7p877XKm9RD0j/MY7un6Puw8dEBobh3w+zdk3vlKdKuabWV6WgPK2uReG9Fy2ebatRm71tR6SrJ2wM12ZXkBOi8DdSxn3KDgBZB3k9/UntP2+pvxu7DJ7lqGCN6b3xCIUvj21inrYy7tYeAHecDwAb8c3JvWEXX8rpQS0sFfcDALP9bYj5qXm36epDwRK+TVIhickMSIRKMLl3M/mzx1IYuW5Y+7PFZ5HsytAnrKYfpDv5Ew6AXALpzMxRLbGQ/B3xvm1px2dqg+oTSx+z8SW8i9DGKmnJjYRt7lMf3P4j4NZ1KOFrzfRFfjIqALl4uk7T7X5f/v7Y7o3Y0vx60scFA+7krdiCcibVh/sVXWkgEdn+Qgc7Zq+wxLvCN9u+kf0LtFmUIbDZTWLmoEprEF6a/2JN0FOnmcd1sbAkkZSa5O7o4DUFflu+oVRe3qzFVwsJzw9Dwea7toffvPk4b/PktL/wpfEi7/Mz/uZscjQWXi9D1gTqjV7izN0k7WNubvXFRdKPcbWerB2QudVGm5XNGAAsEmTGXblBDeyJR6auQc2nXOMa5JntpKVubp9MaMkwKngq4UNXNbXTOE6/dg4nPa39/gCwaiv8FDKhdqO7a2yFRkyS0JBdmNlsW+2wmBAvn1FiINEqxMTP8ZGemYUO05r9eIvqnn+R57RCunaglKhk9KdHBa2ufQkXBnID9DZenNdoiPVRDZRU8MCKp46DNMv6Mna4H4GwON5AxgerXKHMWjdSyz2Xm5hzem0JC8bB47PdpU4apYY0mONHrlcWvpemRq0Hm7xSkSy6VurVkr5w/2vd9IVH4+euLtKkN46PqiofvlTpHfD1veoJhsNEcHpimjQUBOMLnF503fLMZWWvSMv0WDgVaXvRHGwZwA99TqbrGKhRyccHrFye+PrVOfGMLuG9lU1Ssmx5qbz2Sdq71IxJSnXhGw4ejXf+hIilrBLwZ9+lgGUjSXnneb6TJCQUsns9Zbzdc4REcPIQ/k/HVLGizDrNfnjgnvWTOhtySyM6vqV/IUA6bFHiaDsmJm+wr4eYJZpylulKAf/LC/Yql647ncN2pp0IMJfLtOEua803S7CbL3nSdERK7PnActRtV6MHm3MLL0JHPey6Hod//zodbrGX92SgWv/+hqPGioLEnPXrPf2l1cQXWnH2e6wIuggpm+RHO+UlH0Jedem0bme3DhESZwSvkmNSDtc+RH06Maiaau9ZltOMen0YGS6eNpL/28vtb9CNxAeZ5QLj0Mll6wMACTsATjWX/HZen9wwU26mGXIUfqreJkN+iKXcQ0Q0vn+ZXw2sTKc2uH6URvdqP6mknaXfv97fhuvq68p5PRj2mcMi/5q0sUNMe19zOYnrZaqB3bX6eOe00j6Qoxj4DKmAeHG+oSL9aJf9kp1gaquvfdy/HafXJ7J4umbYeqOqxCqlmHAljxeUDCYzUoUZ2svZq6oMWpzpAyZfSKNyluxUOqlZPSLpBVCNDj25Xv23kfkmDUwFbfoDhsfuNk010JNTliDZnx0/qkG41pNHh1+AOc1ZmZI7n3Ia3M8wZvUxYWZJgaY1rleEZs0cNc9KKbUtZBbvtCvmEIo+TT9x7XRMeQLNhQ66c8Dc84+U0BjXG+I0H7qAUTV2NqBbGP0HXjMzCh6+vi8X845xihsf0qEjubZJQuiBS9WbmsuzhOI1gVLfdaqPfM6uJpPBbTO3c42tg0MCfULFImOntC/8hFDvNP68x0n8oscDb48Yl4ejTRPMoS5AQEOTNCIQTVskKEAvKp2l0pz+JfcFlseNq6iJmfHY5RTI1iWVgaFtNZ39JJwdV+UzttG5Q4iw1yr3FqXwLGh+ttBrrI/yqAsG+TLDEYdelE2JJ1xNHyxR9T5PErOTTcNu0JMjD1Ph2YHacV3rFBUHCeP0jZq7qUvdlWTBuD099u/JxP/nztS/1rNfXqhITkorhUeKIgLV4K9rgz8y05JYntcQjy8ZrtwSPKV+SyJ9P2ipprPkbULobhqkY731Yx/1XmYLE0G2iStWu6EpdyVxkXCDVxwqF+FzALxY2ohllxWkaVCqz7srAu+gff3X7bzJwvApJPa8d8L2o0k9+wXdCrJmPO2kmepi2fNmhajjg0rvwlur5h0tVxklEEaI035B15aZ2idPEjOWnC/VIDli/ZIOBSTSBUAWY9pJRe7zNUFPtAXYII3wq/fiE5V+riggWMsqz/Q37vL65oOkMcgzerx6rx2r+PznNYML1JJZgi6Z7e6fO3WvSObLs2m120eEGlzeB3ypV5c5qi+h279KniZVSgh3jF7I5L7djKhmXL7vNNQxXHHBlD9bYXJRKInY0vGudsmqgwHGFyBQOPL70OiaBr3I6d644pNDFEx6DgUjPLp59mo+WwYOoEw57ZQeykh4VxjkflYsC3yXBX3Y8O1R+9HllaFr3zkU7pd+T+JUkjhLhziD3BrcSNZN38jeK3XprcR1ByS8FeT63J7wVv0BEUVE3AuKejCW+jBe9Ua4qWFXF0/Bko6YhxhbGsvA6jrxlaYSA2zv1SNyX85afvP69R6rtyHqnN/05ne+J4Gv3zgR+9DbjZBTdeHa2O26FVL2BhnSR8eykbYQoRUS1NU5csT3eOaJ3uw7/NHBhplqKTctcHwwtTEzkW7E9+4PqYlbVnFf+/fLFrbIHB9NBsg3H2FD1ZJ7eIMVpzPTnqUId95qWVsHH38HXsglE143Z5K7K68WHVUXnEjEQIzjPvnn+Ge4GqPEz20jZirSrgWRZ+2hZQV92FPpO9VcENVq4scGs2dBqnw4bhY1fodydF2LI7+haFWbdCh5ooqYNaPSRrxKzBo3FE0pt9G3Nn16/VTBdlRtRzfPtf4WpC/sFl6Xt8XphwIxyzhnUzlNZekURUM0xahfWJLtH8hrHy+H7gtNYMG86neWqi20RIf49VnHvFPfzb5RaV/LEtzOFWNts+Q0QWqcFxCPvVoZ2Fzs16DO8+qyTPWYlG2d8wev0DrR8HyHEx+NnULKdIV2p4h3/1p/llSviZKt0N50qjA2QwntTVgX9AA4InL/CdSRyuicSn4ph1gOyj+sS+Vu1ZLYY9E7n4bJx+7YREh6aKLAHeIaD99wy7kqXp+l7ajtvKLpXfJcTz/j56mpWiWJ8SlXkYDFG3Lsa1w3mBfoUi2vXdCNPX9O5MnyrPr97ULuSzXovcLbc++33YewgYSE4YpMYh8uwc0+yGFbpfuO3PXZAl+/0fbLDYMh0u8fsHOr/MiGRY1/wWinfRS88zpYLBJpWwyW8dpfM1wH5RHMK5X4U6gGYmNtpXz12YNJVU1Tj8bEVT9DpkI4HRfzyyUQF7adxqnjjT8ICjI2mxG42buDJkgTGzHJj3aznzqQk57zOrK8CS2WTGE9ffJNeUJNC067w1+N2lDDFvSt0qWu7loEhhjJOtz8bnW1NS/8Oy6veYOjQSlhc+51kky/NUFqhKap8smMIOO76HHo427D+Tu2SmqWdlW8Y0tG5h7yRewG/IIxgiN00uSRK5FnZ5Wolja5q18RPUciMmfX9q5AhcNYT48/zfKTYWz4x6qrwwdTvk3MAhmzNcKUcKKs3OLRnb+81HX1h2vH94CGNWVO2p3kMJfIhtk28oXXlcxGCL9gbGbjPeuS+O3sZF6EFtqrijk0QqQjluVSE15osYczZGXElRlh5LUx2Cj/tU5vtXTwY/ewBN3t+9H0y+hD/vwc9c01abbG5q9yceYF0jWGKcLSR0EhT1cRcusqr6MsFkFbVde277ueO8vyZNe+JawNd9c61DRC2u01mruDMe8Suf3OWIBar6CIEKmj5HkLnzHPDCFWDXsxO3E4bIdzBsu1+sUaoSyR3huyzsl57ZuMY3RB/06uNxi1oWO02su2IVdO2cdK1enrVC26IcWQYo26Wiln6aiel0fCErkkaYpb02qn7sm/nFQyHSOcbmf3REm4OHXB1gyG7lriSo4e/n5PrKu3FKQc+5AluVyXUTpCBjbJn5zY6pnFLwFb+YCRcJpmMX2hPoFie2Y3EREQyunLdwdqmvewh6c64FkqoulFd87WvUXnY/cK0DHn69oA6ePGrwrf9U4HsT9Rrkpu/Twu1QLiNs/3QX/nVFx/kKEcGgjqcgid8mYIWG0oBfqBQLGaQF/ymT7YGxt0QeKbN9FIU5BZD4g3SkFjU9KcqmhuapGvk4c9beHDun/w2ktarUbPr2kCRD7vGAGuD/rXA55+4iumb8rUtJMUl4fWHzK7kRFYPrX2qlEJ+74adRTS3JG+nV+qU9brzRfgfrU4tSoo0n2NSnJakKXBt3I2wCWi5C0mbIn+QlCoW+KVHpvVb6INhqft+qQEM/l6bUpOSAg4KJzzxR8Pr3LhHLj7da/mbC6ex3H7rAJ3SY/QY00dzPZCDSnmpW6VWCCbuaW5y/2nphsJ83Xv2pvasrbjXfU9fm/Pp9fJ7VnhDwJOnYmraqScJ3crS1MCjONShYhXr/PbKougl7zv74o0bkPdWXejXJ9Ej7eB+ttOtqtl6DmolrTztxPvnBj9TNeoJrK3Uv25vnUR5j+Imdt6uXDTgdtVJELSmXex7ZTsu3ebcfCw4v7Q+AvSvlsXT+lDub5u719XOQDMJjXHwmvsb1rkPo7zNska7U0xAPxFt2+JGX/Sjq1OfrShnaRsHDBgeXYgI6rvVf6aEtTquD3cl26I+3B2s0526TXViJ0hu5LW4+SNUC3zEYTZnmplLSAY2jQArQy/Bwq4dP1E/uCeVqhJB6n12tfWm67+4U3ejMDkNH9UeytZo+hL01Vn/0/mVU8hQ7BAx7UCq9WXe0GE22cVS7A59dPudeQ3C5dCIan9bFcduMVuDpO7tIkG5KiWwzPF79vOeJyu+5Kh6soAapQtQ11bQlfUI2yJVBEdCVdDJ7wzJkqwDXfVCraPcyAXV77YX+D1SK5Kb2u9UbSpsZfpFv7ChKb99Bi5UOQC/Uj7jD2IlRl0JZLF9zuhjcvk9BMOU6Gmlx6mtu+f0d+XmkSzelfBQhZLNsO+i2flKXWHy42Fv7mHmK2aKs97ZmUqMp1hxKaxZjA+o/JBKcVQY/KOKvmMtJbjeBlWPoZlh5Di3NAbU9aWf6VGXb814W5qY6Oxk6asbST/y6ADQD/7AMgnnMDXlI2PvdcztYhUNOkd0nfPju2rZJT09cwgGp3X0kgpu6j1QSRw0xrHmFF4pwEacPdZ/3ED6k9o76aOhUD3BO/YwCx/S1OOhACUy6iE3KvWaGKApZYcqSw58gPixGerMxli1FVPbfIXPmbjDISFd9/Camy2StK3s0bOPdrI2HWqD+uSuXssX8F0QEB/Pl5IM0g0jmNaGn1i71FMSpVgPLOy9mQpjEvbjc4vTB50VyWR7pHQfmeJIL0zE7Oy1XGJksq/ryxGVkYtMVXitFw4Z5LYzcK4RztKD9g/fL4YWLWkQQPr/NQmepEPLJpMZ/mCj4NbkwMCPzOIQnkc8ZW33xwh7eYFLM/0fx0Ztx+ffXuHN6nsm3PCvLA04cfvuYwZiHYhfrx0krPw3X5vYZELgmPnZWJmWcJb/s3jl9noSbkDsVdtOX2dOdBRU+RCY1jkyS9M5cSkqr5bxWrPLfY8R8irw8M9WDCzBhdoriVVOtUjb37kMe18+0bHwNXnsruFQld40i7zqdpxCzAH3OjzJG+w9tMzfsHXVMUq7g6e3j/xvCOX5OJy+ivulW/EhnlZzj9URRjx9NjTm/5SR0CcU+M4yE4D97L7juFvarUlM6bIoqfsTI9d2tUa/mUB15obizIFo0sJiIqNI3Rh5qFkLXhA099iOAv/y1WMLXkQBpmRyPKnTnTqu6iiVkHozXFg5LFdBYsiW2eZR073gKbLyNkcSKjBoEaBicbU3ZRADSdDNapSR+H3F0oqj0wzIY/0bxmSn5eZxivv5MN7dpGBfRzSGw8cnDWX4so1n78sp4+r9JSSRuij93Qv2H+8sFrFWzt1dPCxQBINebg2O3WOy7rPhiPEo8tL/5XNbHt0kPnYavjNVbs8TYYxrdj6DesHXEudCQ3qUzi1ThxniMJoDsdWmCtS/R/ZW2f1FnnIxDbjtq+O9S7xW2KX909wD5j/FjWyUIOABdZT1mvy6j0xKtHPh5QXDstfiVluBnmRPmwsj5TQ+L78LCxlY2dDDHk4V6Cnf/E//cVzMPA/5wHYgw== \ No newline at end of file diff --git a/docs/docs/agents/context.md b/docs/docs/agents/context.md index cd74ab297..f5d96306c 100644 --- a/docs/docs/agents/context.md +++ b/docs/docs/agents/context.md @@ -83,7 +83,7 @@ agent.invoke({ For context that spans *across* conversations or sessions, LangGraph allows access to **long-term memory** via a `store`. This can be used to read or update persistent facts (e.g., user profiles, preferences, prior interactions). For more, see the [Memory guide](./memory.md). -## Customizing Prompts with Context +## Customizing Prompts with Context { #prompts } Prompts define how the agent behaves. To incorporate runtime context, you can dynamically generate prompts based on the agent's state or config. @@ -162,7 +162,7 @@ Common use cases: }) ``` -## Accessing Context in Tools +## Accessing Context in Tools { #tools } Tools can access context through special parameter **annotations**. diff --git a/docs/docs/agents/memory.md b/docs/docs/agents/memory.md index 3c6268859..640e48c8c 100644 --- a/docs/docs/agents/memory.md +++ b/docs/docs/agents/memory.md @@ -411,7 +411,7 @@ store.get(("users",), "user_123").value ### Semantic search -LangGraph also allows you to do [search](https://langchain-ai.github.io/langgraph/how-tos/memory/semantic-search/#using-in-create-react-agent) for items in long-term memory by semantic similarity. +LangGraph also allows you to [search](https://langchain-ai.github.io/langgraph/how-tos/memory/semantic-search/#using-in-create-react-agent) for items in long-term memory by semantic similarity. ### Prebuilt memory tools diff --git a/docs/docs/how-tos/create-react-agent-hitl.ipynb b/docs/docs/how-tos/create-react-agent-hitl.ipynb deleted file mode 100644 index e698b8bf2..000000000 --- a/docs/docs/how-tos/create-react-agent-hitl.ipynb +++ /dev/null @@ -1,376 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "992c4695-ec4f-428d-bd05-fb3b5fbd70f4", - "metadata": {}, - "source": [ - "# How to add human-in-the-loop processes to the prebuilt ReAct agent\n", - "\n", - "
\n", - "

Prerequisites

\n", - "

\n", - " This guide assumes familiarity with the following:\n", - "

\n", - "

\n", - "
\n", - "\n", - "This guide will show how to add human-in-the-loop processes to the prebuilt ReAct agent. Please see [this tutorial](../create-react-agent) for how to get started with the prebuilt ReAct agent\n", - "\n", - "You can add a a breakpoint before tools are called by passing `interrupt_before=[\"tools\"]` to `create_react_agent`. Note that you need to be using a checkpointer for this to work." - ] - }, - { - "cell_type": "markdown", - "id": "7be3889f-3c17-4fa1-bd2b-84114a2c7247", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a213e11a-5c62-4ddb-a707-490d91add383", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "23a1885c-04ab-4750-aefa-105891fddf3e", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "d4c5c054", - "metadata": {}, - "source": [ - "
\n", - "

Set up LangSmith for LangGraph development

\n", - "

\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "03c0f089-070c-4cd4-87e0-6c51f2477b82", - "metadata": {}, - "source": [ - "## Code" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "7a154152-973e-4b5d-aa13-48c617744a4c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we initialize the model we want to use.\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "\n", - "\n", - "# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)\n", - "from typing import Literal\n", - "\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(location: str):\n", - " \"\"\"Use this to get weather information from a given location.\"\"\"\n", - " if location.lower() in [\"nyc\", \"new york\"]:\n", - " return \"It might be cloudy in nyc\"\n", - " elif location.lower() in [\"sf\", \"san francisco\"]:\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown Location\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "\n", - "# We need a checkpointer to enable human-in-the-loop patterns\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "# Define the graph\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "graph = create_react_agent(\n", - " model, tools=tools, interrupt_before=[\"tools\"], checkpointer=memory\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "00407425-506d-4ffd-9c86-987921d8c844", - "metadata": {}, - "source": [ - "## Usage\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "16636975-5f2d-4dc7-ab8e-d0bea0830a28", - "metadata": {}, - "outputs": [], - "source": [ - "def print_stream(stream):\n", - " \"\"\"A utility to pretty print the stream.\"\"\"\n", - " for s in stream:\n", - " message = s[\"messages\"][-1]\n", - " if isinstance(message, tuple):\n", - " print(message)\n", - " else:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9ffff6c3-a4f5-47c9-b51d-97caaee85cd6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what is the weather in SF, CA?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_YjOKDkgMGgUZUpKIasYk1AdK)\n", - " Call ID: call_YjOKDkgMGgUZUpKIasYk1AdK\n", - " Args:\n", - " location: SF, CA\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"42\"}}\n", - "inputs = {\"messages\": [(\"user\", \"what is the weather in SF, CA?\")]}\n", - "\n", - "print_stream(graph.stream(inputs, config, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "markdown", - "id": "ca40a719", - "metadata": {}, - "source": [ - "We can verify that our graph stopped at the right place:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3decf001-7228-4ed5-8779-2b9ed98a74ea", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Next step: ('tools',)\n" - ] - } - ], - "source": [ - "snapshot = graph.get_state(config)\n", - "print(\"Next step: \", snapshot.next)" - ] - }, - { - "cell_type": "markdown", - "id": "7de6ca78", - "metadata": {}, - "source": [ - "Now we can either approve or edit the tool call before proceeding to the next node. If we wanted to approve the tool call, we would simply continue streaming the graph with `None` input. If we wanted to edit the tool call we need to update the state to have the correct tool call, and then after the update has been applied we can continue.\n", - "\n", - "We can try resuming and we will see an error arise:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "740bbaeb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_YjOKDkgMGgUZUpKIasYk1AdK)\n", - " Call ID: call_YjOKDkgMGgUZUpKIasYk1AdK\n", - " Args:\n", - " location: SF, CA\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "Error: AssertionError('Unknown Location')\n", - " Please fix your mistakes.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_CLu9ofeBhtWF2oheBspxXkfE)\n", - " Call ID: call_CLu9ofeBhtWF2oheBspxXkfE\n", - " Args:\n", - " location: San Francisco, CA\n" - ] - } - ], - "source": [ - "print_stream(graph.stream(None, config, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "markdown", - "id": "c1cf5950", - "metadata": {}, - "source": [ - "This error arose because our tool argument of \"San Francisco, CA\" is not a location our tool recognizes.\n", - "\n", - "Let's show how we would edit the tool call to search for \"San Francisco\" instead of \"San Francisco, CA\" - since our tool as written treats \"San Francisco, CA\" as an unknown location. We will update the state and then resume streaming the graph and should see no errors arise:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "1c81ed9f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '42',\n", - " 'checkpoint_ns': '',\n", - " 'checkpoint_id': '1ef801d1-5b93-6bb9-8004-a088af1f9cec'}}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "state = graph.get_state(config)\n", - "\n", - "last_message = state.values[\"messages\"][-1]\n", - "last_message.tool_calls[0][\"args\"] = {\"location\": \"San Francisco\"}\n", - "\n", - "graph.update_state(config, {\"messages\": [last_message]})" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "83148e08-63e8-49e5-a08b-02dc907bed1d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_CLu9ofeBhtWF2oheBspxXkfE)\n", - " Call ID: call_CLu9ofeBhtWF2oheBspxXkfE\n", - " Args:\n", - " location: San Francisco\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It's always sunny in sf\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The weather in San Francisco is currently sunny.\n" - ] - } - ], - "source": [ - "print_stream(graph.stream(None, config, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "markdown", - "id": "8202a5f9", - "metadata": {}, - "source": [ - "Fantastic! Our graph updated properly to query the weather in San Francisco and got the correct \"It's always sunny in sf\" response from the tool, and then responded to the user accordingly." - ] - } - ], - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/create-react-agent-memory.ipynb b/docs/docs/how-tos/create-react-agent-memory.ipynb deleted file mode 100644 index 2c19130a9..000000000 --- a/docs/docs/how-tos/create-react-agent-memory.ipynb +++ /dev/null @@ -1,291 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "992c4695-ec4f-428d-bd05-fb3b5fbd70f4", - "metadata": {}, - "source": [ - "# How to add thread-level memory to a ReAct Agent\n", - "\n", - "
\n", - "

Prerequisites

\n", - "

\n", - " This guide assumes familiarity with the following:\n", - "

\n", - "

\n", - "
\n", - "\n", - "This guide will show how to add memory to the prebuilt ReAct agent. Please see [this tutorial](../create-react-agent) for how to get started with the prebuilt ReAct agent\n", - "\n", - "We can add memory to the agent, by passing a [checkpointer](https://langchain-ai.github.io/langgraph/reference/checkpoints/) to the [create_react_agent](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.chat_agent_executor.create_react_agent) function." - ] - }, - { - "cell_type": "markdown", - "id": "7be3889f-3c17-4fa1-bd2b-84114a2c7247", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a213e11a-5c62-4ddb-a707-490d91add383", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "23a1885c-04ab-4750-aefa-105891fddf3e", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "87a00ce9", - "metadata": {}, - "source": [ - "
\n", - "

Set up LangSmith for LangGraph development

\n", - "

\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "03c0f089-070c-4cd4-87e0-6c51f2477b82", - "metadata": {}, - "source": [ - "## Code" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7a154152-973e-4b5d-aa13-48c617744a4c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we initialize the model we want to use.\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "\n", - "\n", - "# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)\n", - "\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(location: str) -> str:\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if any([city in location.lower() for city in [\"nyc\", \"new york city\"]]):\n", - " return \"It might be cloudy in nyc\"\n", - " elif any([city in location.lower() for city in [\"sf\", \"san francisco\"]]):\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " return f\"I am not sure what the weather is in {location}\"\n", - "\n", - "\n", - "tools = [get_weather]\n", - "\n", - "# We can add \"chat memory\" to the graph with LangGraph's checkpointer\n", - "# to retain the chat context between interactions\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "# Define the graph\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "graph = create_react_agent(model, tools=tools, checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "00407425-506d-4ffd-9c86-987921d8c844", - "metadata": {}, - "source": [ - "## Usage\n", - "\n", - "Let's interact with it multiple times to show that it can remember" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "16636975-5f2d-4dc7-ab8e-d0bea0830a28", - "metadata": {}, - "outputs": [], - "source": [ - "def print_stream(stream):\n", - " for s in stream:\n", - " message = s[\"messages\"][-1]\n", - " if isinstance(message, tuple):\n", - " print(message)\n", - " else:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "9ffff6c3-a4f5-47c9-b51d-97caaee85cd6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "What's the weather in NYC?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_xM1suIq26KXvRFqJIvLVGfqG)\n", - " Call ID: call_xM1suIq26KXvRFqJIvLVGfqG\n", - " Args:\n", - " city: nyc\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It might be cloudy in nyc\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The weather in NYC might be cloudy.\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "inputs = {\"messages\": [(\"user\", \"What's the weather in NYC?\")]}\n", - "\n", - "print_stream(graph.stream(inputs, config=config, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "markdown", - "id": "838a043f-90ad-4e69-9d1d-6e22db2c346c", - "metadata": {}, - "source": [ - "Notice that when we pass the same thread ID, the chat history is preserved." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "187479f9-32fa-4611-9487-cf816ba2e147", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "What's it known for?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "New York City (NYC) is known for a variety of iconic landmarks, cultural institutions, and vibrant neighborhoods. Some of the most notable aspects include:\n", - "\n", - "1. **Statue of Liberty**: A symbol of freedom and democracy.\n", - "2. **Times Square**: Known for its bright lights, Broadway theaters, and bustling atmosphere.\n", - "3. **Central Park**: A large urban park offering a green oasis in the middle of the city.\n", - "4. **Empire State Building**: An iconic skyscraper with an observation deck offering panoramic views of the city.\n", - "5. **Broadway**: Famous for its world-class theater productions.\n", - "6. **Wall Street**: The financial hub of the United States.\n", - "7. **Museums**: Including the Metropolitan Museum of Art, the Museum of Modern Art (MoMA), and the American Museum of Natural History.\n", - "8. **Diverse Cuisine**: A melting pot of culinary experiences from around the world.\n", - "9. **Cultural Diversity**: A rich tapestry of cultures, languages, and traditions.\n", - "10. **Fashion**: A global fashion capital, home to New York Fashion Week.\n", - "\n", - "These are just a few highlights of what makes NYC a unique and vibrant city.\n" - ] - } - ], - "source": [ - "inputs = {\"messages\": [(\"user\", \"What's it known for?\")]}\n", - "print_stream(graph.stream(inputs, config=config, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c461eb47-b4f9-406f-8923-c68db7c5687f", - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/create-react-agent-structured-output.ipynb b/docs/docs/how-tos/create-react-agent-structured-output.ipynb deleted file mode 100644 index 5ae44681d..000000000 --- a/docs/docs/how-tos/create-react-agent-structured-output.ipynb +++ /dev/null @@ -1,287 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "992c4695-ec4f-428d-bd05-fb3b5fbd70f4", - "metadata": {}, - "source": [ - "# How to return structured output from the prebuilt ReAct agent\n", - "\n", - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Agent Architectures](../../concepts/agentic_concepts/)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - " - [Tools](https://python.langchain.com/docs/concepts/tools/)\n", - " - [Structured Output](https://python.langchain.com/docs/concepts/structured_outputs/)\n", - "\n", - "To return structured output from the prebuilt ReAct agent you can provide a `response_format` parameter with the desired output schema to [create_react_agent][langgraph.prebuilt.chat_agent_executor.create_react_agent]:\n", - "\n", - "```python\n", - "class ResponseFormat(BaseModel):\n", - " \"\"\"Respond to the user in this format.\"\"\"\n", - " my_special_output: str\n", - "\n", - "\n", - "graph = create_react_agent(\n", - " model,\n", - " tools=tools,\n", - " # specify the schema for the structured output using `response_format` parameter\n", - " response_format=ResponseFormat\n", - ")\n", - "```\n", - "\n", - "Prebuilt ReAct makes an additional LLM call at the end of the ReAct loop to produce a structured output response. Please see [this guide](../react-agent-structured-output) to learn about other strategies for returning structured outputs from a tool-calling agent." - ] - }, - { - "cell_type": "markdown", - "id": "7be3889f-3c17-4fa1-bd2b-84114a2c7247", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a213e11a-5c62-4ddb-a707-490d91add383", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "23a1885c-04ab-4750-aefa-105891fddf3e", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "87a00ce9", - "metadata": {}, - "source": [ - "
\n", - "

Set up LangSmith for LangGraph development

\n", - "

\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "03c0f089-070c-4cd4-87e0-6c51f2477b82", - "metadata": {}, - "source": [ - "## Code" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7a154152-973e-4b5d-aa13-48c617744a4c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we initialize the model we want to use.\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "\n", - "# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)\n", - "\n", - "from typing import Literal\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: Literal[\"nyc\", \"sf\"]):\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if city == \"nyc\":\n", - " return \"It might be cloudy in nyc\"\n", - " elif city == \"sf\":\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown city\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "\n", - "# Define the structured output schema\n", - "\n", - "from pydantic import BaseModel, Field\n", - "\n", - "\n", - "class WeatherResponse(BaseModel):\n", - " \"\"\"Respond to the user in this format.\"\"\"\n", - "\n", - " conditions: str = Field(description=\"Weather conditions\")\n", - "\n", - "\n", - "# Define the graph\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "graph = create_react_agent(\n", - " model,\n", - " tools=tools,\n", - " # specify the schema for the structured output using `response_format` parameter\n", - " response_format=WeatherResponse,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "00407425-506d-4ffd-9c86-987921d8c844", - "metadata": {}, - "source": [ - "## Usage\n", - "\n", - "Let's now test our agent:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9ffff6c3-a4f5-47c9-b51d-97caaee85cd6", - "metadata": {}, - "outputs": [], - "source": [ - "inputs = {\"messages\": [(\"user\", \"What's the weather in NYC?\")]}\n", - "response = graph.invoke(inputs)" - ] - }, - { - "cell_type": "markdown", - "id": "50e273a0-fbdb-4eee-89ca-580fbfb52daf", - "metadata": {}, - "source": [ - "You can see that the agent output contains a `structured_response` key with the structured output conforming to the specified `WeatherResponse` schema, in addition to the message history under `messages` key." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "300748d4-0ed2-470d-8dbc-7c14231e73b8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "WeatherResponse(conditions='cloudy')" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response[\"structured_response\"]" - ] - }, - { - "cell_type": "markdown", - "id": "bd9e3487-2cec-44cf-9472-0a51eebeddff", - "metadata": {}, - "source": [ - "### Customizing prompt" - ] - }, - { - "cell_type": "markdown", - "id": "a608548d-77fc-4d7a-845c-32ae9ec0489a", - "metadata": {}, - "source": [ - "You might need to further customize the second LLM call for the structured output generation and provide a system prompt. To do so, you can pass a tuple (prompt, schema):" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d1386f99-ffd1-4b36-86ec-cabb3357d929", - "metadata": {}, - "outputs": [], - "source": [ - "graph = create_react_agent(\n", - " model,\n", - " tools=tools,\n", - " # specify both the system prompt and the schema for the structured output\n", - " response_format=(\"Always return capitalized weather conditions\", WeatherResponse),\n", - ")\n", - "\n", - "inputs = {\"messages\": [(\"user\", \"What's the weather in NYC?\")]}\n", - "response = graph.invoke(inputs)" - ] - }, - { - "cell_type": "markdown", - "id": "91f34991-b406-4fd2-a776-4dd03e3dc3dd", - "metadata": {}, - "source": [ - "You can verify that the structured response now contains a capitalized value:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "ba43a67f-127c-45e7-982c-a8210d97a3ed", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "WeatherResponse(conditions='Cloudy')" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response[\"structured_response\"]" - ] - } - ], - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/create-react-agent-system-prompt.ipynb b/docs/docs/how-tos/create-react-agent-system-prompt.ipynb deleted file mode 100644 index a3965eb10..000000000 --- a/docs/docs/how-tos/create-react-agent-system-prompt.ipynb +++ /dev/null @@ -1,231 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "992c4695-ec4f-428d-bd05-fb3b5fbd70f4", - "metadata": {}, - "source": [ - "# How to add a custom system prompt to the prebuilt ReAct agent\n", - "\n", - "\n", - "
\n", - "

Prerequisites

\n", - "

\n", - " This guide assumes familiarity with the following:\n", - "

\n", - "

\n", - "
\n", - "\n", - "This tutorial will show how to add a custom system prompt to the [prebuilt ReAct agent](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.chat_agent_executor.create_react_agent). Please see [this tutorial](../create-react-agent) for how to get started with the prebuilt ReAct agent\n", - "\n", - "You can add a custom system prompt by passing a string to the `prompt` param.\n" - ] - }, - { - "cell_type": "markdown", - "id": "7be3889f-3c17-4fa1-bd2b-84114a2c7247", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a213e11a-5c62-4ddb-a707-490d91add383", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "23a1885c-04ab-4750-aefa-105891fddf3e", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "715867c6", - "metadata": {}, - "source": [ - "
\n", - "

Set up LangSmith for LangGraph development

\n", - "

\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "03c0f089-070c-4cd4-87e0-6c51f2477b82", - "metadata": {}, - "source": [ - "## Code" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "7a154152-973e-4b5d-aa13-48c617744a4c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we initialize the model we want to use.\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "\n", - "\n", - "# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)\n", - "\n", - "from typing import Literal\n", - "\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: Literal[\"nyc\", \"sf\"]):\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if city == \"nyc\":\n", - " return \"It might be cloudy in nyc\"\n", - " elif city == \"sf\":\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown city\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "\n", - "# We can add our system prompt here\n", - "\n", - "prompt = \"Respond in Italian\"\n", - "\n", - "# Define the graph\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "graph = create_react_agent(model, tools=tools, prompt=prompt)" - ] - }, - { - "cell_type": "markdown", - "id": "00407425-506d-4ffd-9c86-987921d8c844", - "metadata": {}, - "source": [ - "## Usage\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "16636975-5f2d-4dc7-ab8e-d0bea0830a28", - "metadata": {}, - "outputs": [], - "source": [ - "def print_stream(stream):\n", - " for s in stream:\n", - " message = s[\"messages\"][-1]\n", - " if isinstance(message, tuple):\n", - " print(message)\n", - " else:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9ffff6c3-a4f5-47c9-b51d-97caaee85cd6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "What's the weather in NYC?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_b02uzBRrIm2uciJa8zDXCDxT)\n", - " Call ID: call_b02uzBRrIm2uciJa8zDXCDxT\n", - " Args:\n", - " city: nyc\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It might be cloudy in nyc\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "A New York potrebbe essere nuvoloso.\n" - ] - } - ], - "source": [ - "inputs = {\"messages\": [(\"user\", \"What's the weather in NYC?\")]}\n", - "\n", - "print_stream(graph.stream(inputs, stream_mode=\"values\"))" - ] - } - ], - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/create-react-agent.ipynb b/docs/docs/how-tos/create-react-agent.ipynb deleted file mode 100644 index 90d2875cb..000000000 --- a/docs/docs/how-tos/create-react-agent.ipynb +++ /dev/null @@ -1,300 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "992c4695-ec4f-428d-bd05-fb3b5fbd70f4", - "metadata": {}, - "source": [ - "# How to use the pre-built ReAct agent" - ] - }, - { - "cell_type": "markdown", - "id": "e0fcced0-9767-412f-90f9-7f3cd618ff90", - "metadata": {}, - "source": [ - "
\n", - "

Prerequisites

\n", - "

\n", - " This guide assumes familiarity with the following:\n", - "

\n", - "

\n", - "
\n", - "\n", - "In this how-to we'll create a simple [ReAct](https://arxiv.org/abs/2210.03629) agent app that can check the weather. The app consists of an agent (LLM) and tools. As we interact with the app, we will first call the agent (LLM) to decide if we should use tools. Then we will run a loop: \n", - "\n", - "1. If the agent said to take an action (i.e. call tool), we'll run the tools and pass the results back to the agent\n", - "2. If the agent did not ask to run tools, we will finish (respond to the user)\n", - "\n", - "
\n", - "

Prebuilt Agent

\n", - "

\n", - "Please note that here will we use a prebuilt agent. One of the big benefits of LangGraph is that you can easily create your own agent architectures. So while it's fine to start here to build an agent quickly, we would strongly recommend learning how to build your own agent so that you can take full advantage of LangGraph.\n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "7be3889f-3c17-4fa1-bd2b-84114a2c7247", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a213e11a-5c62-4ddb-a707-490d91add383", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "23a1885c-04ab-4750-aefa-105891fddf3e", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "035b920d", - "metadata": {}, - "source": [ - "
\n", - "

Set up LangSmith for LangGraph development

\n", - "

\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "03c0f089-070c-4cd4-87e0-6c51f2477b82", - "metadata": {}, - "source": [ - "## Code" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "7a154152-973e-4b5d-aa13-48c617744a4c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we initialize the model we want to use.\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "\n", - "\n", - "# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)\n", - "\n", - "from typing import Literal\n", - "\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: Literal[\"nyc\", \"sf\"]):\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if city == \"nyc\":\n", - " return \"It might be cloudy in nyc\"\n", - " elif city == \"sf\":\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown city\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "\n", - "\n", - "# Define the graph\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "graph = create_react_agent(model, tools=tools)" - ] - }, - { - "cell_type": "markdown", - "id": "00407425-506d-4ffd-9c86-987921d8c844", - "metadata": {}, - "source": [ - "## Usage\n", - "\n", - "First, let's visualize the graph we just created" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "fa16de4c-aac0-4ff4-ab69-60d399f75423", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "16636975-5f2d-4dc7-ab8e-d0bea0830a28", - "metadata": {}, - "outputs": [], - "source": [ - "def print_stream(stream):\n", - " for s in stream:\n", - " message = s[\"messages\"][-1]\n", - " if isinstance(message, tuple):\n", - " print(message)\n", - " else:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "9d187d6b-0fb6-4860-8771-160c3cf403c6", - "metadata": {}, - "source": [ - "Let's run the app with an input that needs a tool call" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9ffff6c3-a4f5-47c9-b51d-97caaee85cd6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what is the weather in sf\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_weather (call_zVvnU9DKr6jsNnluFIl59mHb)\n", - " Call ID: call_zVvnU9DKr6jsNnluFIl59mHb\n", - " Args:\n", - " city: sf\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It's always sunny in sf\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The weather in San Francisco is currently sunny.\n" - ] - } - ], - "source": [ - "inputs = {\"messages\": [(\"user\", \"what is the weather in sf\")]}\n", - "print_stream(graph.stream(inputs, stream_mode=\"values\"))" - ] - }, - { - "cell_type": "markdown", - "id": "838a043f-90ad-4e69-9d1d-6e22db2c346c", - "metadata": {}, - "source": [ - "Now let's try a question that doesn't need tools" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "187479f9-32fa-4611-9487-cf816ba2e147", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "who built you?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.\n" - ] - } - ], - "source": [ - "inputs = {\"messages\": [(\"user\", \"who built you?\")]}\n", - "print_stream(graph.stream(inputs, stream_mode=\"values\"))" - ] - } - ], - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/index.md b/docs/docs/how-tos/index.md index 031ed46f1..5b3816182 100644 --- a/docs/docs/how-tos/index.md +++ b/docs/docs/how-tos/index.md @@ -151,21 +151,13 @@ See the below guide for how to integrate with other frameworks using the [Functi - [How to integrate LangGraph (functional API) with AutoGen, CrewAI, and other frameworks](autogen-integration-functional.ipynb) -### Prebuilt ReAct Agent +### Prebuilt Agent -The LangGraph [prebuilt ReAct agent](../reference/agents.md#langgraph.prebuilt.chat_agent_executor.create_react_agent) is pre-built implementation of a [tool calling agent](../concepts/agentic_concepts.md#tool-calling-agent). +LangGraph comes with a [prebuilt][langgraph.prebuilt.chat_agent_executor.create_react_agent] implementation of a [tool calling agent](../concepts/agentic_concepts.md#tool-calling-agent). See [Agents](../agents/overview.md) guides for more information. -One of the big benefits of LangGraph is that you can easily create your own agent architectures. So while it's fine to start here to build an agent quickly, we would strongly recommend learning how to build your own agent so that you can take full advantage of LangGraph. +!!! tip -These guides show how to use the prebuilt ReAct agent: - -- [How to use the pre-built ReAct agent](create-react-agent.ipynb) -- [How to add thread-level memory to a ReAct Agent](create-react-agent-memory.ipynb) -- [How to add a custom system prompt to a ReAct agent](create-react-agent-system-prompt.ipynb) -- [How to add human-in-the-loop processes to a ReAct agent](create-react-agent-hitl.ipynb) -- [How to return structured output from a ReAct agent](create-react-agent-structured-output.ipynb) -- [How to add semantic search for long-term memory to a ReAct agent](memory/semantic-search.ipynb#using-in-create-react-agent) -- [How to manage message history in a ReAct agent](create-react-agent-manage-message-history.ipynb) + One of the big benefits of LangGraph is that you can easily create your own agent architectures. So while it's fine to start here to build an agent quickly, we would strongly recommend learning how to build your own agent so that you can take full advantage of LangGraph. Interested in further customizing the ReAct agent? This guide provides an overview of its underlying implementation to help you customize for your own needs: