Skip to content

Commit

Permalink
Update examples
Browse files Browse the repository at this point in the history
  • Loading branch information
ahuang11 committed Jan 25, 2024
1 parent 322723c commit 2ab1e54
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 28 deletions.
33 changes: 6 additions & 27 deletions docs/examples/langchain/langchain_lcel.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,51 +3,30 @@
[LangChain Expression Language](https://python.langchain.com/docs/expression_language/) (LCEL).
"""

from operator import itemgetter

import panel as pn
from langchain.memory import ConversationSummaryBufferMemory
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI

pn.extension()

SYSTEM_PROMPT = "Try to be a silly comedian."


async def callback(contents, user, instance):
message = ""
inputs = {"input": contents}
async for token in chain.astream(inputs):
async for token in chain.astream(contents):
message += token
yield message
memory.save_context(inputs, {"output": message})


prompt = ChatPromptTemplate.from_template("Tell me a top-notch joke about {topic}")
model = ChatOpenAI(model="gpt-3.5-turbo")
memory = ConversationSummaryBufferMemory(return_messages=True, llm=model)
prompt = ChatPromptTemplate.from_messages(
[
("system", SYSTEM_PROMPT),
MessagesPlaceholder(variable_name="history"),
("human", "{input}"),
]
)
output_parser = StrOutputParser()
chain = (
RunnablePassthrough.assign(
history=RunnableLambda(memory.load_memory_variables) | itemgetter("history")
)
| prompt
| model
| output_parser
)
chain = {"topic": RunnablePassthrough()} | prompt | model | output_parser

chat_interface = pn.chat.ChatInterface(
pn.chat.ChatMessage(
"Offer a topic and ChatGPT will try to be funny!", user="System"
"Offer a topic and ChatGPT will respond with a joke!", user="System"
),
callback=callback,
callback_user="ChatGPT",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Demonstrates how to use the `ChatInterface` to create a chatbot using
[LangChain Expression Language](https://python.langchain.com/docs/expression_language/) (LCEL).
[LangChain Expression Language](https://python.langchain.com/docs/expression_language/) (LCEL)
with streaming and memory.
"""

from operator import itemgetter
Expand Down
8 changes: 8 additions & 0 deletions tests/ui/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,14 @@ def langchain_lcel(page: Page):
page.wait_for_timeout(5000)


def langchain_streaming_lcel_with_memory(page: Page):
chat = ChatInterface(page)
chat.send("Remember this number: 8. Be concise.")
page.wait_for_timeout(10000)
chat.send("What number did I just ask you to remember?")
page.wait_for_timeout(10000)


def mistral_and_llama(page: Page):
chat = ChatInterface(page)
chat.send("What do you think about HoloViz in a single sentence?")
Expand Down

0 comments on commit 2ab1e54

Please sign in to comment.