Spaces:
Configuration error
Configuration error
| """ Program Aided Language model: Helps with math problems | |
| This example was adapted from Data Professor Github repo | |
| It uses streamlit to create a web app that uses OpenAI API to generate responses to math questions | |
| Langchain is used to chain the responses to create a coherent response using PALChain module | |
| """ | |
| import streamlit as st | |
| from langchain.llms import OpenAI | |
| from langchain.chains import PALChain | |
| from langchain.chains.llm import LLMChain | |
| # set page config | |
| # Add title and description | |
| st.set_page_config(page_title="๐ฆ๐ Program Aided Language model") | |
| st.title("๐ฆ๐๐งฎ Program Aided Language Model: Helps with math problems") | |
| st.markdown( | |
| """This example was adapted from Data Professor Github [repo](https://github.com/dataprofessor/langchain-quickstart/blob/master/streamlit_app.py)""" | |
| ) | |
| st.markdown( | |
| """Paper: [Program-Aided Language Models for Program Synthesis](https://arxiv.org/pdf/2211.10435.pdf)""" | |
| ) | |
| st.markdown( | |
| """Credit: [Sam Witteven](https://www.youtube.com/playlist?list=PL8motc6AQftk1Bs42EW45kwYbyJ4jOdiZ)""" | |
| ) | |
| # sidebar for OpenAI API key & model selection | |
| openai_api_key = st.sidebar.text_input("Enter your OpenAI API key", type="password") | |
| select_instruct_model = st.sidebar.selectbox( | |
| "Select Instruction Model", | |
| ("text-davinci-003", "gpt-3.5-turbo-instruct"), | |
| ) | |
| def generate_response(input_text): | |
| """ | |
| Generates response to input text using PALChain | |
| Parameters | |
| ---------- | |
| input_text : str | |
| Input text to generate response for using PALChain | |
| Returns | |
| ------- | |
| None | |
| Example | |
| ------- | |
| >>> generate_response("Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?") | |
| """ | |
| llm = OpenAI( | |
| temperature=0, | |
| openai_api_key=openai_api_key, | |
| max_tokens=512, | |
| model=select_instruct_model, | |
| ) | |
| pal_chain = PALChain.from_math_prompt(llm, verbose=True) | |
| st.markdown(pal_chain.run(input_text)) | |
| # Start a new form named "my_form" | |
| with st.form("my_form"): | |
| # Create a text area for the user to input a math question. The text area is pre-filled with a default question. | |
| text = st.text_area( | |
| "Enter math question:", | |
| "Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?", | |
| ) | |
| # Create a submit button for the form. When the button is clicked, the form is submitted and the page reruns from the top. | |
| submitted = st.form_submit_button("Submit") | |
| # Check if the OpenAI API key is not valid (it should start with "sk-"). If it's not valid, display a warning message. | |
| if not openai_api_key.startswith("sk-"): | |
| st.warning("Please enter your OpenAI API key!", icon="โ ") | |
| # If the form is submitted and the OpenAI API key is valid, generate a response to the user's question. | |
| if submitted and openai_api_key.startswith("sk-"): | |
| generate_response(text) | |