mirror of
https://github.com/hwchase17/langchain
synced 2024-10-29 17:07:25 +00:00
c28990d871
A new implementation of `StreamlitCallbackHandler`. It formats Agent thoughts into Streamlit expanders. You can see the handler in action here: https://langchain-mrkl.streamlit.app/ Per a discussion with Harrison, we'll be adding a `StreamlitCallbackHandler` implementation to an upcoming [Streamlit](https://github.com/streamlit/streamlit) release as well, and will be updating it as we add new LLM- and LangChain-specific features to Streamlit. The idea with this PR is that the LangChain `StreamlitCallbackHandler` will "auto-update" in a way that keeps it forward- (and backward-) compatible with Streamlit. If the user has an older Streamlit version installed, the LangChain `StreamlitCallbackHandler` will be used; if they have a newer Streamlit version that has an updated `StreamlitCallbackHandler`, that implementation will be used instead. (I'm opening this as a draft to get the conversation going and make sure we're on the same page. We're really excited to land this into LangChain!) #### Who can review? @agola11, @hwchase17
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
"""Integration tests for the StreamlitCallbackHandler module."""
|
|
|
|
import pytest
|
|
|
|
from langchain.agents import AgentType, initialize_agent, load_tools
|
|
|
|
# Import the internal StreamlitCallbackHandler from its module - and not from
|
|
# the `langchain.callbacks.streamlit` package - so that we don't end up using
|
|
# Streamlit's externally-provided callback handler.
|
|
from langchain.callbacks.streamlit.streamlit_callback_handler import (
|
|
StreamlitCallbackHandler,
|
|
)
|
|
from langchain.llms import OpenAI
|
|
|
|
|
|
@pytest.mark.requires("streamlit")
|
|
def test_streamlit_callback_agent() -> None:
|
|
import streamlit as st
|
|
|
|
streamlit_callback = StreamlitCallbackHandler(st.container())
|
|
|
|
llm = OpenAI(temperature=0)
|
|
tools = load_tools(["serpapi", "llm-math"], llm=llm)
|
|
agent = initialize_agent(
|
|
tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
|
|
)
|
|
agent.run(
|
|
"Who is Olivia Wilde's boyfriend? "
|
|
"What is his current age raised to the 0.23 power?",
|
|
callbacks=[streamlit_callback],
|
|
)
|