Spaces:
Sleeping
Sleeping
# ----------------------------------------- | |
# LIBRARY IMPORTS | |
# ----------------------------------------- | |
# Streamlit is a library for creating web apps with Python. | |
import streamlit as st | |
# langchain.chat_models provides classes related to chat models. | |
from langchain.chat_models import ChatOpenAI | |
# langchain.schema provides schemas for system, human, and AI messages. | |
from langchain.schema import ( | |
AIMessage, | |
HumanMessage, | |
SystemMessage | |
) | |
# ----------------------------------------- | |
# STREAMLIT UI CONFIGURATION | |
# ----------------------------------------- | |
# Set the Streamlit page title and icon. | |
st.set_page_config(page_title="Langchain Prototype", page_icon=":robot:") | |
# Display a header for the application. | |
st.header("Hey, I'm your Chat GPT") | |
# Initialize the session state variable 'sessionMessages' if it doesn't exist. | |
# This variable will store the conversation. | |
if "sessionMessages" not in st.session_state: | |
st.session_state.sessionMessages = [ | |
SystemMessage(content="You are a helpful assistant.") | |
] | |
# ----------------------------------------- | |
# FUNCTION DEFINITIONS | |
# ----------------------------------------- | |
# This function fetches a response to a given question from the ChatOpenAI model. | |
def load_answer(question): | |
# Append the human's message to the session's message list. | |
st.session_state.sessionMessages.append(HumanMessage(content=question)) | |
# Get the assistant's response using the chat function. | |
assistant_answer = chat(st.session_state.sessionMessages) | |
# Append the assistant's message to the session's message list. | |
st.session_state.sessionMessages.append(AIMessage(content=assistant_answer.content)) | |
# Return the content of the assistant's answer. | |
return assistant_answer.content | |
# Function to get text input from the user via Streamlit's interface. | |
def get_text(): | |
input_text = st.text_input("You: ", key=input) | |
return input_text | |
# Initialize the ChatOpenAI model with temperature set to 0. | |
chat = ChatOpenAI(temperature=0) | |
# ----------------------------------------- | |
# STREAMLIT INTERACTION HANDLING | |
# ----------------------------------------- | |
# Get the user input from the Streamlit interface. | |
user_input = get_text() | |
# Display a button on the Streamlit page. | |
submit = st.button('Generate') | |
# If the 'Generate' button is clicked: | |
if submit: | |
# Fetch the response from the chat function. | |
response = load_answer(user_input) | |
# Display the response below the subheader "Answer:". | |
st.subheader("Answer:") | |
st.write(response, key=1) | |
# ----------------------------------------- | |
# END OF STREAMLIT APPLICATION | |
# ----------------------------------------- | |