|
from typing import List, Tuple |
|
|
|
import gradio as gr |
|
import google.generativeai as genai |
|
|
|
|
|
def predict(google_key: str, text_prompt: str, chatbot: List[Tuple[str, str]]): |
|
if not google_key: |
|
raise ValueError( |
|
"GOOGLE_API_KEY is not set. " |
|
"Please follow the instructions in the README to set it up.") |
|
|
|
genai.configure(api_key=google_key) |
|
model = genai.GenerativeModel('models/gemini-pro') |
|
response = model.generate_content(text_prompt, stream=True) |
|
response.resolve() |
|
chatbot.append((text_prompt, response.text)) |
|
return "", chatbot |
|
|
|
|
|
google_key_component = gr.Textbox( |
|
label="GOOGLE API KEY", |
|
value="", |
|
type="password", |
|
placeholder="...", |
|
info="You have to provide your own GPT4 keys for this app to function properly", |
|
) |
|
|
|
chatbot_component = gr.Chatbot(label='Gemini') |
|
text_prompt_component = gr.Textbox( |
|
placeholder="Hi there!", |
|
label="Type an input and press Enter" |
|
) |
|
run_button_component = gr.Button() |
|
|
|
with gr.Blocks() as demo: |
|
with gr.Column(): |
|
google_key_component.render() |
|
with gr.Row(): |
|
chatbot_component.render() |
|
text_prompt_component.render() |
|
run_button_component.render() |
|
|
|
run_button_component.click( |
|
fn=predict, |
|
inputs=[google_key_component, text_prompt_component, chatbot_component], |
|
outputs=[text_prompt_component, chatbot_component], |
|
) |
|
|
|
text_prompt_component.submit( |
|
fn=predict, |
|
inputs=[google_key_component, text_prompt_component, chatbot_component], |
|
outputs=[text_prompt_component, chatbot_component], |
|
) |
|
|
|
demo.queue(max_size=99).launch(debug=True) |
|
|