Spaces:
Runtime error
Runtime error
| """Python file to serve as the frontend""" | |
| import streamlit as st | |
| from streamlit_chat import message | |
| import os | |
| import openai | |
| import time | |
| #OpenAI model deprecated from langchain | |
| #from langchain.llms import OpenAI | |
| #Import OpenAI Chat wrapper | |
| from langchain.chat_models import ChatOpenAI | |
| #Import Prompt Template | |
| from langchain.prompts import PromptTemplate | |
| #Import chains | |
| from langchain.chains import LLMChain | |
| #Import Sequential Chains | |
| from langchain.chains import SimpleSequentialChain | |
| def load_chain(api_key): | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.1) | |
| #user_in = input("Please describe your Python project in one to two sentences: ") | |
| first_prompt = PromptTemplate( | |
| input_variables=["user_in"], | |
| template= "Write the outline of the coding steps to develop the program {user_in} in five steps. Use Python3 and Be concise. \n\n" | |
| ) | |
| #First chain | |
| chain = LLMChain(llm=llm, prompt=first_prompt) | |
| second_prompt = PromptTemplate( | |
| input_variables=["program"], | |
| template= '''Write the python3 code for each step of the {program} described. Use python3 style. Be concise in the code and opinionated about framework choice.''' | |
| ) | |
| chain_two = LLMChain(llm=llm, prompt=second_prompt) | |
| overall_chain = SimpleSequentialChain(chains=[chain, chain_two], verbose=True) | |
| return overall_chain | |
| # From here down is all the StreamLit UI. | |
| st.set_page_config(page_title="Python Project Generator", page_icon=":robot:") | |
| st.header("Python Snippet Generator") | |
| st.write("Enter your OpenAI API key below (not stored between sessions):") | |
| openai_api_key = st.text_input("openai_api_key") | |
| if "generated" not in st.session_state: | |
| st.session_state["generated"] = [] | |
| if "past" not in st.session_state: | |
| st.session_state["past"] = [] | |
| def get_text(): | |
| user_input = st.text_input("Please describe your desired python project in 1-2 sentences. The output will be five steps including code.", key="input") | |
| return user_input | |
| user_input = get_text() | |
| if user_input: | |
| chain = load_chain(openai_api_key) | |
| with st.spinner('Wait for it...'): | |
| output = chain.run(input=user_input) | |
| time.sleep(5) | |
| st.success('Done!') | |
| st.session_state.past.append(user_input) | |
| st.session_state.generated.append(output) | |
| if st.session_state["generated"]: | |
| for i in range(len(st.session_state["generated"]) - 1, -1, -1): | |
| message(st.session_state["generated"][i], key=str(i)) | |
| message(st.session_state["past"][i], is_user=True, key=str(i) + "_user") |