Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
import time | |
import google.generativeai as genai | |
genai.configure(api_key=os.environ["palm_key"]) | |
# Create the model | |
# See https://ai.google.dev/api/python/google/generativeai/GenerativeModel | |
generation_config = { | |
"temperature": 1, | |
"top_p": 0.95, | |
"top_k": 64, | |
"max_output_tokens": 8192, | |
"response_mime_type": "text/plain", | |
} | |
safety_settings = [ | |
{ | |
"category": "HARM_CATEGORY_HARASSMENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_HATE_SPEECH", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_DANGEROUS_CONTENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
] | |
model = genai.GenerativeModel( | |
model_name="gemini-1.5-flash-latest", | |
safety_settings=safety_settings, | |
generation_config=generation_config, | |
) | |
chat_session = model.start_chat( | |
history=[ | |
] | |
) | |
context = "You are an order bot with only 3 types of pizzas: Margherita, Cheesy-Bacon and Vegetarian. Prices are small (9$), medium (11$) and large (13$). You can offer 2 types of drinks coke and mountain dew for $1 each." | |
examples = [ | |
[ | |
"Hi, I want to order pizzas.", | |
"Hello, we have 3 types of pizzas: Margherita, Cheesy-Bacon and Vegetarian. Prices are small (9$), medium (11$) and large (13$)." | |
], | |
[ | |
"I want a large margherita and a medium cheesy-bacon.", | |
"Do you want any drinks? We have coke (3$) or Mountain dew (5$)." | |
], | |
[ | |
"Yes 2 cokes.", | |
"Total will be 19$. Please enter your address and phone number" | |
], | |
[ | |
"Paris eiffel tower, 0653145863", | |
"Perfect ! Do you need anything else?" | |
], | |
[ | |
"No thanks.", | |
"Have a nice day!\nHere is the sum up: \n{\npizza_type_1: \"margherita\",\npizza_type_2: \"cheesy-bacon\",\npizza_size_1: \"L\",\npizza_size_2: \"M\",\ndrink_1: \"coke\",\ndrink_2: \"coke\",\ntotal_price: \"19\",\naddress: \"Paris, Eiffel Tower\",\nphone_number: \"0653145863\"\n}\nDo you want to change anything?" | |
], | |
[ | |
"Yes, i'd like to change margherita size to M.", | |
"Have a nice day!\nHere is the sum up: \n{\npizza_type_1: \"margherita\",\npizza_type_2: \"cheesy-bacon\",\npizza_size_1: \"M\",\npizza_size_2: \"M\",\ndrink_1: \"coke\",\ndrink_2: \"coke\",\ntotal_price: \"19\",\naddress: \"Paris, Eiffel Tower\",\nphone_number: \"0653145863\"\n}\nDo you want to change anything?" | |
], | |
[ | |
"No thanks", | |
"Have a nice day!" | |
] | |
] | |
history = [['']] | |
response = chat_session.send_message(context + "\n" + "Here are some examples for your interactions: \n" + ".\n".join( | |
["user: " + pair[0] + ".\nyour response: " + pair[1] for pair in examples] | |
)) | |
print(response.text) | |
print(chat_session.history) | |
with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
chatbot = gr.Chatbot() | |
msg = gr.Textbox() | |
btn = gr.Button("Submit", variant="primary") | |
clear = gr.Button("Clear") | |
def user(user_message, history): | |
history.append([user_message, None]) | |
return gr.update(value=""), history | |
def bot(history): | |
try: | |
bot_message = chat_session.send_message( | |
h[-1][0] | |
) | |
history[-1][1] = "" | |
for character in bot_message.text: | |
history[-1][1] += character | |
time.sleep(0.005) | |
except Exception as e: | |
# Handle the exception here | |
print("Error occurred:", str(e)) | |
# You can customize the error handling as per your requirements | |
# For example, return an error message to the user | |
history[-1][1] = "Incorrect input please retry with a longer sentence in english" | |
return history | |
response = msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( | |
bot, chatbot, chatbot | |
) | |
response = btn.click(user, [msg, chatbot], [msg, chatbot], queue=False).then( | |
bot, chatbot, chatbot | |
) | |
response.then(lambda: gr.update(interactive=True), None, [msg], queue=False) | |
clear.click(lambda: None, None, chatbot, queue=False) | |
demo.queue() | |
demo.launch() | |