From ef7983e818c9620496110dcc72641525e6d1502d Mon Sep 17 00:00:00 2001 From: Aaron Jimenez Date: Mon, 18 Mar 2024 20:15:14 -0800 Subject: [PATCH] core: Updated docstring for Context class (#19079) - **Description:** Improves the docstring for `class Context` by providing an overview and an example. - **Issue:** #18803 --- .../langchain_core/beta/runnables/context.py | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/libs/core/langchain_core/beta/runnables/context.py b/libs/core/langchain_core/beta/runnables/context.py index ed78c6856bc44..13767e352dd5a 100644 --- a/libs/core/langchain_core/beta/runnables/context.py +++ b/libs/core/langchain_core/beta/runnables/context.py @@ -307,7 +307,46 @@ async def ainvoke( class Context: - """Context for a runnable.""" + """ + Context for a runnable. + + The `Context` class provides methods for creating context scopes, + getters, and setters within a runnable. It allows for managing + and accessing contextual information throughout the execution + of a program. + + Example: + .. code-block:: python + + from langchain_core.beta.runnables.context import Context + from langchain_core.runnables.passthrough import RunnablePassthrough + from langchain_core.prompts.prompt import PromptTemplate + from langchain_core.output_parsers.string import StrOutputParser + from tests.unit_tests.fake.llm import FakeListLLM + + chain = ( + Context.setter("input") + | { + "context": RunnablePassthrough() + | Context.setter("context"), + "question": RunnablePassthrough(), + } + | PromptTemplate.from_template("{context} {question}") + | FakeListLLM(responses=["hello"]) + | StrOutputParser() + | { + "result": RunnablePassthrough(), + "context": Context.getter("context"), + "input": Context.getter("input"), + } + ) + + # Use the chain + output = chain.invoke("What's your name?") + print(output["result"]) # Output: "hello" + print(output["context"]) # Output: "What's your name?" + print(output["input"]) # Output: "What's your name? + """ @staticmethod def create_scope(scope: str, /) -> "PrefixContext":