Spaces:
Sleeping
Sleeping
File size: 3,376 Bytes
7026716 0ec04e2 7026716 0ec04e2 e73ae5f 901d096 e3b4437 e73ae5f e3b4437 1561b35 7026716 e3b4437 0ec04e2 7026716 e73ae5f 7026716 0ec04e2 7026716 0ec04e2 901d096 e3b4437 0ec04e2 1561b35 0ec04e2 1561b35 68d296f e3b4437 1561b35 0ec04e2 e3b4437 0ec04e2 e3b4437 |
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import os
import gradio as gr
from openai import OpenAI
from typing import List, Tuple
# Define available models
AVAILABLE_MODELS = {
"DeepSeek V3 (Hyperbolic.xyz)": "deepseek-ai/DeepSeek-V3",
"DeepSeek V3 (HuggingFace.co)": "deepseek-ai/DeepSeek-V3",
"Llama3.3-70b-Instruct": "meta-llama/Llama-3.3-70B-Instruct",
"Llama3.1-8b-Instruct": "meta-llama/Meta-Llama-3.1-8B-Instruct",
}
HYPERB_ENDPOINT_URL = "https://api.hyperbolic.xyz/v1"
HF_ENDPOINT_URL = "https://huggingface.co/api/inference-proxy/together"
HYPERB_API_KEY = os.getenv('HYPERBOLIC_XYZ_KEY')
HF_API_KEY = os.getenv('HF_KEY')
PASSWORD = os.getenv("PASSWD") # Store the password in an environment variable
hyperb_client = OpenAI(base_url=HYPERB_ENDPOINT_URL, api_key=HYPERB_API_KEY)
hf_client = OpenAI(base_url=HF_ENDPOINT_URL, api_key=HF_API_KEY)
def respond(
message: str,
history: List[Tuple[str, str]],
system_message: str,
model_choice: str,
max_tokens: int,
temperature: float,
top_p: float,
):
messages = [{"role": "system", "content": system_message}]
for user_msg, assistant_msg in history:
if user_msg:
messages.append({"role": "user", "content": user_msg})
if assistant_msg:
messages.append({"role": "assistant", "content": assistant_msg})
messages.append({"role": "user", "content": message})
response = ""
if "(HuggingFace.co)" in model_choice:
this_client = hf_client
else:
this_client = hyperb_client
for chunk in this_client.chat.completions.create(
model=AVAILABLE_MODELS[model_choice], # Use the selected model
messages=messages,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
stream=True,
):
token = chunk.choices[0].delta.content or ""
response += token
yield response
def check_password(input_password):
if input_password == PASSWORD:
return gr.update(visible=False), gr.update(visible=True)
else:
return gr.update(value="", interactive=True), gr.update(visible=False)
with gr.Blocks() as demo:
with gr.Column():
password_input = gr.Textbox(
type="password", label="Enter Password", interactive=True
)
submit_button = gr.Button("Submit")
error_message = gr.Textbox(
label="Error", visible=False, interactive=False
)
with gr.Column(visible=False) as chat_interface:
chat = gr.ChatInterface(
respond,
api_name=False,
additional_inputs=[
gr.Textbox(value="You are a helpful assistant.", label="System message"),
gr.Dropdown(
choices=list(AVAILABLE_MODELS.keys()),
value=list(AVAILABLE_MODELS.keys())[0],
label="Select Model"
),
gr.Slider(minimum=1, maximum=30000, value=2048, step=100, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
],
)
submit_button.click(check_password, inputs=password_input, outputs=[password_input, chat_interface])
if __name__ == "__main__":
demo.launch(share=True) |