cactus-demo / app.py
mcnaughtonadm's picture
Adding submission button and gemini model option
72f4061
raw
history blame
1.69 kB
import os
import gradio as gr
from cactus.agent import Cactus
from huggingface_hub import InferenceClient
MODEL_API_KEY_MAP = {
"gpt-3.5-turbo": "OPENAI_API_KEY",
"gpt-4": "OPENAI_API_KEY",
"gemini-pro": "GOOGLE_API_KEY",
"claude-3-haiku-20240307": "ANTHROPIC_API_KEY",
"claude-3-opus-20240229": "ANTHROPIC_API_KEY",
"claude-3-sonnet-20240229": "ANTHROPIC_API_KEY",
}
def agent_fn(prompt, model_name, api_key=None):
env_key_name = MODEL_API_KEY_MAP.get(model_name)
if env_key_name:
if api_key:
os.environ[env_key_name] = api_key
else:
return f"Error: API key not found for {model_name}. Please provide it."
try:
cactus_model = Cactus(model_name, model_type="api")
response = cactus_model.run(prompt)
return response
except Exception as e:
return f"Error: {e}"
with gr.Blocks() as iface:
with gr.Row():
model_name_dropdown = gr.Dropdown(
list(MODEL_API_KEY_MAP.keys()), label="Select Model"
)
api_key_input = gr.Textbox(label="Enter API Key", type="password")
prompt_input = gr.Textbox(
lines=2, placeholder="Enter your cheminformatics question..."
)
with gr.Row():
submit_button = gr.Button("Submit")
response_output = gr.Textbox(label="Agent Response")
# Event Triggers
model_name_dropdown.change(
lambda x: gr.update(visible=MODEL_API_KEY_MAP.get(x) is not None),
model_name_dropdown,
api_key_input,
)
submit_button.click(
agent_fn,
[prompt_input, model_name_dropdown, api_key_input],
response_output,
)
iface.launch()