diff --git a/examples/how-tos/stream-tokens.ipynb b/examples/how-tos/stream-tokens.ipynb index 55046f950..18ab9a6ca 100644 --- a/examples/how-tos/stream-tokens.ipynb +++ b/examples/how-tos/stream-tokens.ipynb @@ -83,10 +83,10 @@ "outputs": [], "source": [ "import { Annotation } from \"@langchain/langgraph\";\n", - "import { BaseMessage } from \"@langchain/core/messages\";\n", + "import type { BaseMessageLike } from \"@langchain/core/messages\";\n", "\n", "const StateAnnotation = Annotation.Root({\n", - " messages: Annotation({\n", + " messages: Annotation({\n", " reducer: (x, y) => x.concat(y),\n", " }),\n", "});" @@ -193,7 +193,6 @@ "const model = new ChatOpenAI({\n", " model: \"gpt-4o-mini\",\n", " temperature: 0,\n", - " streaming: true\n", "});" ] }, @@ -278,7 +277,7 @@ "outputs": [ { "data": { - "image/png": "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" + "image/png": "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" }, "metadata": {}, "output_type": "display_data" @@ -315,12 +314,12 @@ "

\n", "\n", "\n", - "For this method, you must be using an LLM that supports streaming as well and enable it when constructing the LLM (e.g. `new ChatOpenAI({ model: \"gpt-4o-mini\", streaming: true })`) or call `.stream` on the internal LLM call." + "For this method, you must be using an LLM that supports streaming as well (e.g. `new ChatOpenAI({ model: \"gpt-4o-mini\" })`) or call `.stream` on the internal LLM call." ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "id": "5af113ef", "metadata": {}, "outputs": [ @@ -378,6 +377,112 @@ "}" ] }, + { + "cell_type": "markdown", + "id": "1cd29662", + "metadata": {}, + "source": [ + "### Disabling streaming\n", + "\n", + "If you wish to disable streaming for a given node or model call, you can add a `\"nostream\"` tag. Here's an example where we add an initial node with an LLM call that will not be streamed in the final output:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "94209d4b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LOGGED UNSTREAMED MESSAGE I'm just a computer program, so I don't have feelings, but I'm here and ready to help you! How can I assist you today?\n", + "ai MESSAGE TOOL CALL CHUNK: \n", + "ai MESSAGE TOOL CALL CHUNK: {\"\n", + "ai MESSAGE TOOL CALL CHUNK: query\n", + "ai MESSAGE TOOL CALL CHUNK: \":\"\n", + "ai MESSAGE TOOL CALL CHUNK: current\n", + "ai MESSAGE TOOL CALL CHUNK: weather\n", + "ai MESSAGE TOOL CALL CHUNK: in\n", + "ai MESSAGE TOOL CALL CHUNK: Nepal\n", + "ai MESSAGE TOOL CALL CHUNK: \"}\n", + "ai MESSAGE CONTENT: \n", + "tool MESSAGE CONTENT: Cold, with a low of 3℃\n", + "ai MESSAGE CONTENT: \n", + "ai MESSAGE CONTENT: The\n", + "ai MESSAGE CONTENT: current\n", + "ai MESSAGE CONTENT: weather\n", + "ai MESSAGE CONTENT: in\n", + "ai MESSAGE CONTENT: Nepal\n", + "ai MESSAGE CONTENT: is\n", + "ai MESSAGE CONTENT: cold\n", + "ai MESSAGE CONTENT: ,\n", + "ai MESSAGE CONTENT: with\n", + "ai MESSAGE CONTENT: a\n", + "ai MESSAGE CONTENT: low\n", + "ai MESSAGE CONTENT: temperature\n", + "ai MESSAGE CONTENT: of\n", + "ai MESSAGE CONTENT: \n", + "ai MESSAGE CONTENT: 3\n", + "ai MESSAGE CONTENT: ℃\n", + "ai MESSAGE CONTENT: .\n", + "ai MESSAGE CONTENT: \n" + ] + } + ], + "source": [ + "import { RunnableLambda } from \"@langchain/core/runnables\";\n", + "\n", + "const unstreamed = async (_: typeof StateAnnotation.State) => {\n", + " const model = new ChatOpenAI({\n", + " model: \"gpt-4o-mini\",\n", + " temperature: 0,\n", + " });\n", + " const res = await model.invoke(\"How are you?\");\n", + " console.log(\"LOGGED UNSTREAMED MESSAGE\", res.content);\n", + " // Don't update the state, this is just to show a call that won't be streamed\n", + " return {};\n", + "}\n", + "\n", + "const agentWithNoStream = new StateGraph(StateAnnotation)\n", + " .addNode(\"unstreamed\",\n", + " // Add a \"nostream\" tag to the entire node\n", + " RunnableLambda.from(unstreamed).withConfig({\n", + " tags: [\"nostream\"]\n", + " })\n", + " )\n", + " .addNode(\"agent\", callModel)\n", + " .addNode(\"tools\", toolNode)\n", + " // Run the unstreamed node before the agent\n", + " .addEdge(\"__start__\", \"unstreamed\")\n", + " .addEdge(\"unstreamed\", \"agent\")\n", + " .addConditionalEdges(\"agent\", routeMessage)\n", + " .addEdge(\"tools\", \"agent\")\n", + " .compile();\n", + "\n", + "const stream = await agentWithNoStream.stream(\n", + " { messages: [{ role: \"user\", content: \"What's the current weather in Nepal?\" }] },\n", + " { streamMode: \"messages\" },\n", + ");\n", + "\n", + "for await (const [message, _metadata] of stream) {\n", + " if (isAIMessageChunk(message) && message.tool_call_chunks?.length) {\n", + " console.log(`${message.getType()} MESSAGE TOOL CALL CHUNK: ${message.tool_call_chunks[0].args}`);\n", + " } else {\n", + " console.log(`${message.getType()} MESSAGE CONTENT: ${message.content}`);\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "f307ce58", + "metadata": {}, + "source": [ + "If you removed the tag from the `\"unstreamed\"` node, the result of the model call within would also be in the final stream." + ] + }, { "cell_type": "markdown", "id": "f8332924", @@ -390,7 +495,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "id": "ec7c31a2", "metadata": {}, "outputs": [ @@ -402,7 +507,7 @@ " {\n", " name: 'search',\n", " args: '',\n", - " id: 'call_fNhlT6qSYWdJGPSYaVqLtTKO',\n", + " id: 'call_Qpd6frHt0yUYWynRbZEXF3le',\n", " index: 0,\n", " type: 'tool_call_chunk'\n", " }\n", @@ -489,14 +594,6 @@ " }\n", "}" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5d6f7346", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": {