From 232908a46d6371ff3d65381966ffe4831545cb25 Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Tue, 11 Jun 2024 11:03:52 -0700 Subject: [PATCH] docs[patch]: Adds streaming conceptual doc (#22760) CC @hwchase17 @baskaryan --- docs/docs/concepts.mdx | 118 ++++++++++++++++++++++++++++++- docs/static/img/tokenization.png | Bin 0 -> 73203 bytes 2 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 docs/static/img/tokenization.png diff --git a/docs/docs/concepts.mdx b/docs/docs/concepts.mdx index f34ea78d65913a..1af9fbe3b87c9b 100644 --- a/docs/docs/concepts.mdx +++ b/docs/docs/concepts.mdx @@ -140,7 +140,7 @@ Although the underlying models are messages in, message out, the LangChain wrapp When a string is passed in as input, it is converted to a HumanMessage and then passed to the underlying model. -LangChain does not provide any ChatModels, rather we rely on third party integrations. +LangChain does not host any Chat Models, rather we rely on third party integrations. We have some standardized parameters when constructing ChatModels: - `model`: the name of the model @@ -159,10 +159,10 @@ For specifics on how to use chat models, see the [relevant how-to guides here](/ Language models that takes a string as input and returns a string. -These are traditionally older models (newer models generally are `ChatModels`, see below). +These are traditionally older models (newer models generally are [Chat Models](/docs/concepts/#chat-models), see below). Although the underlying models are string in, string out, the LangChain wrappers also allow these models to take messages as input. -This makes them interchangeable with ChatModels. +This gives them the same interface as [Chat Models](/docs/concepts/#chat-models). When messages are passed in as input, they will be formatted into a string under the hood before being passed to the underlying model. LangChain does not provide any LLMs, rather we rely on third party integrations. @@ -596,6 +596,118 @@ For specifics on how to use callbacks, see the [relevant how-to guides here](/do ## Techniques +### Streaming + +Individual LLM calls often run for much longer than traditional resource requests. +This compounds when you build more complex chains or agents that require multiple reasoning steps. + +Fortunately, LLMs generate output iteratively, which means it's possible to show sensible intermediate results +before the final response is ready. Consuming output as soon as it becomes available has therefore become a vital part of the UX +around building apps with LLMs to help alleviate latency issues, and LangChain aims to have first-class support for streaming. + +Below, we'll discuss some concepts and considerations around streaming in LangChain. + +#### Tokens + +The unit that most model providers use to measure input and output is via a unit called a **token**. +Tokens are the basic units that language models read and generate when processing or producing text. +The exact definition of a token can vary depending on the specific way the model was trained - +for instance, in English, a token could be a single word like "apple", or a part of a word like "app". +The below example shows how OpenAI models tokenize `LangChain is cool!`: + +![](/img/tokenization.png) + +You can see that it gets split into 5 different tokens, and that the boundaries between tokens are not exactly the same as word boundaries. + +The reason language models use tokens rather than something more immediately intuitive like "characters" +has to do with how they process and understand text. At a high-level, language models iteratively predict their next generated output based on +the initial input and their previous generations. Training the model using tokens language models to handle linguistic +units (like words or subwords) that carry meaning, rather than individual characters, which makes it easier for the model +to learn and understand the structure of the language, including grammar and context. +Furthermore, using tokens can also improve efficiency, since the model processes fewer units of text compared to character-level processing. + +When you send a model a prompt, the words and characters in the prompt are encoded into tokens using a **tokenizer**. +The model then streams back generated output tokens, which the tokenizer decodes into human-readable text. + +#### Callbacks + +The lowest level way to stream outputs from LLMs in LangChain is via the [callbacks](/docs/concepts/#callbacks) system. You can pass a +callback handler that handles the [`on_llm_new_token`](https://api.python.langchain.com/en/latest/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_new_token) event into LangChain components. When that component is invoked, any +[LLM](/docs/concepts/#llms) or [chat model](/docs/concepts/#chat-models) contained in the component calls +the callback with the generated token. Within the callback, you could pipe the tokens into some other destination, e.g. a HTTP response. +You can also handle the [`on_llm_end`](https://api.python.langchain.com/en/latest/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_end) event to perform any necessary cleanup. + +You can see [this how-to section](/docs/how_to/#callbacks) for more specifics on using callbacks. + +Callbacks were the first technique for streaming introduced in LangChain. While powerful and generalizable, +they can be unwieldy for developers. For example: + +- You need to explicitly initialize and manage some aggregator or other stream to collect results. +- The execution order isn't explicitly guaranteed, and you could theoretically have a callback run after the `.invoke()` method finishes. +- Providers would often make you pass an additional parameter to stream outputs instead of returning them all at once. +- You would often ignore the result of the actual model call in favor of callback results. + +#### `.stream()` + +LangChain also includes the `.stream()` method as a more ergonomic streaming interface. +`.stream()` returns an iterator, which you can consume with a simple `for` loop. Here's an example with a chat model: + +```python +from langchain_anthropic import ChatAnthropic + +model = ChatAnthropic(model="claude-3-sonnet-20240229") + +for chunk in model.stream("what color is the sky?"): + print(chunk.content, end="|", flush=True) +``` + +For models (or other components) that don't support streaming natively, this iterator would just yield a single chunk, but +you could still use the same general pattern. Using `.stream()` will also automatically call the model in streaming mode +without the need to provide additional config. + +The type of each outputted chunk depends on the type of component - for example, chat models yield [`AIMessageChunks`](https://api.python.langchain.com/en/latest/messages/langchain_core.messages.ai.AIMessageChunk.html). +Because this method is part of [LangChain Expression Language](/docs/concepts/#langchain-expression-language-lcel), +you can handle formatting differences from different outputs using an [output parser](/docs/concepts/#output-parsers) to transform +each yielded chunk. + +You can check out [this guide](/docs/how_to/streaming/#using-stream) for more detail on how to use `.stream()`. + +#### `.astream_events()` + +While the `.stream()` method is easier to use than callbacks, it only returns one type of value. This is fine for single LLM calls, +but as you build more complex chains of several LLM calls together, you may want to use the intermediate values of +the chain alongside the final output - for example, returning sources alongside the final generation when building a chat +over documents app. + +There are ways to do this using the aforementioned callbacks, or by constructing your chain in such a way that it passes intermediate +values to the end with something like [`.assign()`](/docs/how_to/passthrough/), but LangChain also includes an +`.astream_events()` method that combines the flexibility of callbacks with the ergonomics of `.stream()`. When called, it returns an iterator +which yields [various types of events](/docs/how_to/streaming/#event-reference) that you can filter and process according +to the needs of your project. + +Here's one small example that prints just events containing streamed chat model output: + +```python +from langchain_core.output_parsers import StrOutputParser +from langchain_core.prompts import ChatPromptTemplate +from langchain_anthropic import ChatAnthropic + +model = ChatAnthropic(model="claude-3-sonnet-20240229") + +prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") +parser = StrOutputParser() +chain = prompt | model | parser + +async for event in chain.astream_events({"topic": "parrot"}, version="v2"): + kind = event["event"] + if kind == "on_chat_model_stream": + print(event, end="|", flush=True) +``` + +You can roughly think of it as an iterator over callback events (though the format differs) - and you can use it on almost all LangChain components! + +See [this guide](/docs/how_to/streaming/#using-stream-events) for more detailed information on how to use `.astream_events()`. + ### Function/tool calling :::info diff --git a/docs/static/img/tokenization.png b/docs/static/img/tokenization.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca4bf7d20b146a7cb6b889d7f93775daba3bd06 GIT binary patch literal 73203 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 z�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 literal 0 HcmV?d00001