import gradio as gr
import json, os, vertexai
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
credentials = os.environ["CREDENTIALS"]
project = os.environ["PROJECT"]
config = {
"max_output_tokens": 1000,
"model": "gemini-1.5-pro-preview-0514",
"temperature": 0.1,
"top_k": 40,
"top_p": 1.0,
}
credentials = json.loads(credentials)
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_info(credentials)
if credentials.expired:
credentials.refresh(Request())
vertexai.init(location = "us-central1",
credentials = credentials,
project = project
)
from vertexai.preview.generative_models import GenerativeModel
generation_model = GenerativeModel(config["model"])
def invoke(prompt):
if not prompt:
raise gr.Error("Prompt is required.")
raise gr.Error("Please clone and bring your own credentials.")
completion = ""
try:
completion = generation_model.generate_content(prompt,
generation_config = {
"max_output_tokens": config["max_output_tokens"],
"temperature": config["temperature"],
"top_k": config["top_k"],
"top_p": config["top_p"]})
if (completion.text != None):
completion = completion.text
except Exception as e:
completion = e
raise gr.Error(e)
return completion
description = """Gradio UI using the Google Vertex AI SDK
with Gemini 1.5 Pro model."""
gr.close_all()
demo = gr.Interface(fn = invoke,
inputs = [gr.Textbox(label = "Prompt", value = "If I dry one shirt in the sun, it takes 1 hour. How long do 3 shirts take?", lines = 1)],
outputs = [gr.Markdown(label = "Completion", value = os.environ["COMPLETION"])],
description = description)
demo.launch()