mirror of
https://github.com/hwchase17/langchain
synced 2024-11-10 01:10:59 +00:00
ed58eeb9c5
Moved the following modules to new package langchain-community in a backwards compatible fashion: ``` mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community ``` Moved the following to core ``` mv langchain/langchain/utils/json_schema.py core/langchain_core/utils mv langchain/langchain/utils/html.py core/langchain_core/utils mv langchain/langchain/utils/strings.py core/langchain_core/utils cat langchain/langchain/utils/env.py >> core/langchain_core/utils/env.py rm langchain/langchain/utils/env.py ``` See .scripts/community_split/script_integrations.sh for all changes
83 lines
3.1 KiB
Python
83 lines
3.1 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Optional
|
|
|
|
from langchain_core.callbacks import BaseCallbackHandler
|
|
|
|
from langchain_community.callbacks.streamlit.streamlit_callback_handler import (
|
|
LLMThoughtLabeler as LLMThoughtLabeler,
|
|
)
|
|
from langchain_community.callbacks.streamlit.streamlit_callback_handler import (
|
|
StreamlitCallbackHandler as _InternalStreamlitCallbackHandler,
|
|
)
|
|
|
|
if TYPE_CHECKING:
|
|
from streamlit.delta_generator import DeltaGenerator
|
|
|
|
|
|
def StreamlitCallbackHandler(
|
|
parent_container: DeltaGenerator,
|
|
*,
|
|
max_thought_containers: int = 4,
|
|
expand_new_thoughts: bool = True,
|
|
collapse_completed_thoughts: bool = True,
|
|
thought_labeler: Optional[LLMThoughtLabeler] = None,
|
|
) -> BaseCallbackHandler:
|
|
"""Callback Handler that writes to a Streamlit app.
|
|
|
|
This CallbackHandler is geared towards
|
|
use with a LangChain Agent; it displays the Agent's LLM and tool-usage "thoughts"
|
|
inside a series of Streamlit expanders.
|
|
|
|
Parameters
|
|
----------
|
|
parent_container
|
|
The `st.container` that will contain all the Streamlit elements that the
|
|
Handler creates.
|
|
max_thought_containers
|
|
The max number of completed LLM thought containers to show at once. When this
|
|
threshold is reached, a new thought will cause the oldest thoughts to be
|
|
collapsed into a "History" expander. Defaults to 4.
|
|
expand_new_thoughts
|
|
Each LLM "thought" gets its own `st.expander`. This param controls whether that
|
|
expander is expanded by default. Defaults to True.
|
|
collapse_completed_thoughts
|
|
If True, LLM thought expanders will be collapsed when completed.
|
|
Defaults to True.
|
|
thought_labeler
|
|
An optional custom LLMThoughtLabeler instance. If unspecified, the handler
|
|
will use the default thought labeling logic. Defaults to None.
|
|
|
|
Returns
|
|
-------
|
|
A new StreamlitCallbackHandler instance.
|
|
|
|
Note that this is an "auto-updating" API: if the installed version of Streamlit
|
|
has a more recent StreamlitCallbackHandler implementation, an instance of that class
|
|
will be used.
|
|
|
|
"""
|
|
# If we're using a version of Streamlit that implements StreamlitCallbackHandler,
|
|
# delegate to it instead of using our built-in handler. The official handler is
|
|
# guaranteed to support the same set of kwargs.
|
|
try:
|
|
from streamlit.external.langchain import (
|
|
StreamlitCallbackHandler as OfficialStreamlitCallbackHandler, # type: ignore # noqa: 501
|
|
)
|
|
|
|
return OfficialStreamlitCallbackHandler(
|
|
parent_container,
|
|
max_thought_containers=max_thought_containers,
|
|
expand_new_thoughts=expand_new_thoughts,
|
|
collapse_completed_thoughts=collapse_completed_thoughts,
|
|
thought_labeler=thought_labeler,
|
|
)
|
|
except ImportError:
|
|
return _InternalStreamlitCallbackHandler(
|
|
parent_container,
|
|
max_thought_containers=max_thought_containers,
|
|
expand_new_thoughts=expand_new_thoughts,
|
|
collapse_completed_thoughts=collapse_completed_thoughts,
|
|
thought_labeler=thought_labeler,
|
|
)
|