Spaces:
Running
Running
# For reading credentials from the .env file | |
import os | |
from dotenv import load_dotenv | |
import streamlit as st | |
import webchat | |
# URL of the hosted LLMs is hardcoded because at this time all LLMs share the same endpoint | |
url = "https://us-south.ml.cloud.ibm.com" | |
# These global variables will be updated in get_credentials() function | |
watsonx_project_id = "" | |
# Replace with your IBM Cloud key | |
api_key = "" | |
def get_credentials(): | |
load_dotenv() | |
# Update the global variables that will be used for authentication in another function | |
globals()["api_key"] = os.getenv("api_key", None) | |
globals()["watsonx_project_id"] = os.getenv("project_id", None) | |
def main(): | |
# Get the API key and project id and update global variables | |
get_credentials() | |
# Use the full page instead of a narrow central column | |
st.set_page_config(layout="wide") | |
# Streamlit app title | |
st.title("🌠Demo of RAG with a Web page") | |
user_url = st.text_input('Provide a URL') | |
collection_name = st.text_input('Provide a unique name for this website (lower case). Use the same name for the same URL to avoid loading data multiple times.') | |
# UI component to enter the question | |
question = st.text_area('Question',height=100) | |
button_clicked = st.button("Answer the question") | |
st.subheader("Response") | |
# Invoke the LLM when the button is clicked | |
if button_clicked: | |
response = webchat.answer_questions_from_web(api_key,watsonx_project_id,user_url,question,collection_name) | |
st.write(response) | |
if __name__ == "__main__": | |
main() | |