weatherQnA / app.py
eaglelandsonce's picture
Upload 2 files
0a3b0a1
import streamlit as st
from langchain.llms import OpenAI
from langchain.agents import load_tools, initialize_agent, AgentType
import os
# Set up Streamlit interface
st.title('Weather Q&A using Langchain')
# Adding the markdown message
st.markdown("""
I'm genuinely impressed. Leveraging prompt engineering, I was able to craft this program in just 5 minutes, and it's fully functional! All I did was instruct ChatGPT to integrate langchain and streamlit, set up inputs for the API keys, pose a weather-related question, and use the details from the [LangChain OpenWeatherMap link](https://python.langchain.com/docs/integrations/tools/openweathermap) as a coding and output guide. Now, envisioning a solution is all it takes. It's auto-magical! I may have been a terrible programmer, but I\'m an amazing prompt engineer, bless the Lord!
""")
st.sidebar.header('API Configuration')
# Input for OpenAI API key and OpenWeather API key in the Streamlit sidebar
os.environ["OPENAI_API_KEY"] = st.sidebar.text_input('OpenAI API Key:', value='', type='password')
os.environ["OPENWEATHERMAP_API_KEY"] = st.sidebar.text_input('OpenWeather API Key:', value='', type='password')
# Input for question about the weather
question = st.text_input('Ask a question about the weather (e.g., "What\'s the weather like in London?"):')
# Initialize Langchain's OpenAI and agent_chain only once API keys are provided
if os.environ["OPENAI_API_KEY"] and os.environ["OPENWEATHERMAP_API_KEY"]:
try:
llm = OpenAI(temperature=0)
tools = load_tools(["openweathermap-api"], llm)
agent_chain = initialize_agent(
tools=tools, llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
# If a question is provided, proceed to get an answer
if question:
response = agent_chain.run(question)
st.write(response)
except Exception as e:
st.warning("There was an error processing your request.")
st.write(f"Details: {e}")
st.write("Please provide more specific information. For example, you may need to provide the country sucn as Florence Kentucky US.")
else:
st.warning("Please provide your API keys in the left sidebar!")