-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathstreamlit_app.py
More file actions
71 lines (55 loc) · 2.06 KB
/
streamlit_app.py
File metadata and controls
71 lines (55 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import streamlit as st
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.chains import SequentialChain
def generate_baby_names(gender: str,nationality:str) -> list[str]:
"""
Generate a list of 5 baby names
Parameters:
gender (str): gender of baby
nationailty (str) : nationailty of baby
Returns:
list: list of baby names
"""
prompt_template_name = PromptTemplate(
input_variables=['gender', 'nationality'],
template="""I want to find a name for a {nationality} {gender} baby.
Suggest top 5 popular names for the baby.
Return it as a comma separated list """
)
name_chain = LLMChain(llm=llm,
prompt=prompt_template_name,
output_key='baby_names')
chain = SequentialChain(
chains=[name_chain],
input_variables=['gender', 'nationality'],
output_variables=['baby_names']
)
response = chain({'gender': gender,
'nationality': nationality})
return response
# main code
st.title('Baby Name Generator')
# get open AI key from user
with st.sidebar:
openai_api_key = st.text_input("OpenAI API Key", key="chatbot_api_key", type="password")
if not openai_api_key:
st.info("Please add your OpenAI API key to continue.")
st.stop()
# initialize Open AI
import os
os.environ['OPENAI_API_KEY'] = openai_api_key
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature = 0.6)
# ask user for what they want
gender = st.selectbox("Choose a gender",
("Girl", "Boy"))
nationality = st.selectbox("Choose the nationality",
("American", "Indian", "Chinese"))
# get the answer from LLM
if gender and nationality:
response = generate_baby_names(gender, nationality)
baby_names = response['baby_names'].strip().split(",")
st.write("** Top 5 Baby Names **")
for name in baby_names:
st.write("--", name)