Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -49,8 +49,6 @@ def respond(
|
|
49 |
top_p,
|
50 |
frequency_penalty,
|
51 |
seed,
|
52 |
-
provider,
|
53 |
-
custom_api_key,
|
54 |
custom_model,
|
55 |
model_search_term,
|
56 |
selected_model
|
@@ -61,23 +59,13 @@ def respond(
|
|
61 |
print(f"System message: {system_message}")
|
62 |
print(f"Max tokens: {max_tokens}, Temperature: {temperature}, Top-P: {top_p}")
|
63 |
print(f"Frequency Penalty: {frequency_penalty}, Seed: {seed}")
|
64 |
-
print(f"Selected provider: {provider}")
|
65 |
-
print(f"Custom API Key provided: {bool(custom_api_key.strip())}")
|
66 |
print(f"Selected model (custom_model): {custom_model}")
|
67 |
print(f"Model search term: {model_search_term}")
|
68 |
print(f"Selected model from radio: {selected_model}")
|
69 |
|
70 |
-
#
|
71 |
-
|
72 |
-
|
73 |
-
if custom_api_key.strip() != "":
|
74 |
-
print("USING CUSTOM API KEY: BYOK token provided by user is being used for authentication")
|
75 |
-
else:
|
76 |
-
print("USING DEFAULT API KEY: Environment variable HF_TOKEN is being used for authentication")
|
77 |
-
|
78 |
-
# Initialize the Inference Client with the provider and appropriate token
|
79 |
-
client = InferenceClient(token=token_to_use, provider=provider)
|
80 |
-
print(f"Hugging Face Inference Client initialized with {provider} provider.")
|
81 |
|
82 |
# Convert seed to None if -1 (meaning random)
|
83 |
if seed == -1:
|
@@ -167,7 +155,7 @@ def respond(
|
|
167 |
|
168 |
# Start with an empty string to build the response as tokens stream in
|
169 |
response = ""
|
170 |
-
print(f"Sending request to
|
171 |
|
172 |
# Prepare parameters for the chat completion request
|
173 |
parameters = {
|
@@ -211,19 +199,13 @@ def respond(
|
|
211 |
|
212 |
print("Completed response generation.")
|
213 |
|
214 |
-
# Function to validate provider selection based on BYOK
|
215 |
-
def validate_provider(api_key, provider):
|
216 |
-
if not api_key.strip() and provider != "hf-inference":
|
217 |
-
return gr.update(value="hf-inference")
|
218 |
-
return gr.update(value=provider)
|
219 |
-
|
220 |
# GRADIO UI
|
221 |
with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
222 |
# Create the chatbot component
|
223 |
chatbot = gr.Chatbot(
|
224 |
height=600,
|
225 |
show_copy_button=True,
|
226 |
-
placeholder="Select a model and begin chatting. Now supports
|
227 |
layout="panel"
|
228 |
)
|
229 |
print("Chatbot interface created.")
|
@@ -238,8 +220,6 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
238 |
file_count="multiple",
|
239 |
sources=["upload"]
|
240 |
)
|
241 |
-
|
242 |
-
# Note: We're removing the separate submit button since MultimodalTextbox has its own
|
243 |
|
244 |
# Create accordion for settings
|
245 |
with gr.Accordion("Settings", open=False):
|
@@ -294,34 +274,6 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
294 |
label="Seed (-1 for random)"
|
295 |
)
|
296 |
|
297 |
-
# Provider selection
|
298 |
-
providers_list = [
|
299 |
-
"hf-inference", # Default Hugging Face Inference
|
300 |
-
"cerebras", # Cerebras provider
|
301 |
-
"together", # Together AI
|
302 |
-
"sambanova", # SambaNova
|
303 |
-
"novita", # Novita AI
|
304 |
-
"cohere", # Cohere
|
305 |
-
"fireworks-ai", # Fireworks AI
|
306 |
-
"hyperbolic", # Hyperbolic
|
307 |
-
"nebius", # Nebius
|
308 |
-
]
|
309 |
-
|
310 |
-
provider_radio = gr.Radio(
|
311 |
-
choices=providers_list,
|
312 |
-
value="hf-inference",
|
313 |
-
label="Inference Provider",
|
314 |
-
)
|
315 |
-
|
316 |
-
# New BYOK textbox
|
317 |
-
byok_textbox = gr.Textbox(
|
318 |
-
value="",
|
319 |
-
label="BYOK (Bring Your Own Key)",
|
320 |
-
info="Enter a custom Hugging Face API key here. When empty, only 'hf-inference' provider can be used.",
|
321 |
-
placeholder="Enter your Hugging Face API token",
|
322 |
-
type="password" # Hide the API key for security
|
323 |
-
)
|
324 |
-
|
325 |
# Custom model box
|
326 |
custom_model_box = gr.Textbox(
|
327 |
value="",
|
@@ -434,7 +386,7 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
434 |
return history
|
435 |
|
436 |
# Define bot response function
|
437 |
-
def bot(history, system_msg, max_tokens, temperature, top_p, freq_penalty, seed,
|
438 |
# Check if history is valid
|
439 |
if not history or len(history) == 0:
|
440 |
print("No history to process")
|
@@ -481,8 +433,6 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
481 |
top_p,
|
482 |
freq_penalty,
|
483 |
seed,
|
484 |
-
provider,
|
485 |
-
api_key,
|
486 |
custom_model,
|
487 |
search_term,
|
488 |
selected_model
|
@@ -501,8 +451,6 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
501 |
top_p,
|
502 |
freq_penalty,
|
503 |
seed,
|
504 |
-
provider,
|
505 |
-
api_key,
|
506 |
custom_model,
|
507 |
search_term,
|
508 |
selected_model
|
@@ -519,7 +467,7 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
519 |
).then(
|
520 |
bot,
|
521 |
[chatbot, system_message_box, max_tokens_slider, temperature_slider, top_p_slider,
|
522 |
-
frequency_penalty_slider, seed_slider,
|
523 |
model_search_box, featured_model_radio],
|
524 |
[chatbot]
|
525 |
).then(
|
@@ -543,22 +491,6 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
|
543 |
outputs=custom_model_box
|
544 |
)
|
545 |
print("Featured model radio button change event linked.")
|
546 |
-
|
547 |
-
# Connect the BYOK textbox to validate provider selection
|
548 |
-
byok_textbox.change(
|
549 |
-
fn=validate_provider,
|
550 |
-
inputs=[byok_textbox, provider_radio],
|
551 |
-
outputs=provider_radio
|
552 |
-
)
|
553 |
-
print("BYOK textbox change event linked.")
|
554 |
-
|
555 |
-
# Also validate provider when the radio changes to ensure consistency
|
556 |
-
provider_radio.change(
|
557 |
-
fn=validate_provider,
|
558 |
-
inputs=[byok_textbox, provider_radio],
|
559 |
-
outputs=provider_radio
|
560 |
-
)
|
561 |
-
print("Provider radio button change event linked.")
|
562 |
|
563 |
print("Gradio interface initialized.")
|
564 |
|
|
|
49 |
top_p,
|
50 |
frequency_penalty,
|
51 |
seed,
|
|
|
|
|
52 |
custom_model,
|
53 |
model_search_term,
|
54 |
selected_model
|
|
|
59 |
print(f"System message: {system_message}")
|
60 |
print(f"Max tokens: {max_tokens}, Temperature: {temperature}, Top-P: {top_p}")
|
61 |
print(f"Frequency Penalty: {frequency_penalty}, Seed: {seed}")
|
|
|
|
|
62 |
print(f"Selected model (custom_model): {custom_model}")
|
63 |
print(f"Model search term: {model_search_term}")
|
64 |
print(f"Selected model from radio: {selected_model}")
|
65 |
|
66 |
+
# Initialize the Inference Client with default HF inference
|
67 |
+
client = InferenceClient(token=ACCESS_TOKEN)
|
68 |
+
print(f"Hugging Face Inference Client initialized with standard HF inference.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
# Convert seed to None if -1 (meaning random)
|
71 |
if seed == -1:
|
|
|
155 |
|
156 |
# Start with an empty string to build the response as tokens stream in
|
157 |
response = ""
|
158 |
+
print(f"Sending request to Hugging Face inference.")
|
159 |
|
160 |
# Prepare parameters for the chat completion request
|
161 |
parameters = {
|
|
|
199 |
|
200 |
print("Completed response generation.")
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
# GRADIO UI
|
203 |
with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo:
|
204 |
# Create the chatbot component
|
205 |
chatbot = gr.Chatbot(
|
206 |
height=600,
|
207 |
show_copy_button=True,
|
208 |
+
placeholder="Select a model and begin chatting. Now supports multimodal inputs.",
|
209 |
layout="panel"
|
210 |
)
|
211 |
print("Chatbot interface created.")
|
|
|
220 |
file_count="multiple",
|
221 |
sources=["upload"]
|
222 |
)
|
|
|
|
|
223 |
|
224 |
# Create accordion for settings
|
225 |
with gr.Accordion("Settings", open=False):
|
|
|
274 |
label="Seed (-1 for random)"
|
275 |
)
|
276 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
277 |
# Custom model box
|
278 |
custom_model_box = gr.Textbox(
|
279 |
value="",
|
|
|
386 |
return history
|
387 |
|
388 |
# Define bot response function
|
389 |
+
def bot(history, system_msg, max_tokens, temperature, top_p, freq_penalty, seed, custom_model, search_term, selected_model):
|
390 |
# Check if history is valid
|
391 |
if not history or len(history) == 0:
|
392 |
print("No history to process")
|
|
|
433 |
top_p,
|
434 |
freq_penalty,
|
435 |
seed,
|
|
|
|
|
436 |
custom_model,
|
437 |
search_term,
|
438 |
selected_model
|
|
|
451 |
top_p,
|
452 |
freq_penalty,
|
453 |
seed,
|
|
|
|
|
454 |
custom_model,
|
455 |
search_term,
|
456 |
selected_model
|
|
|
467 |
).then(
|
468 |
bot,
|
469 |
[chatbot, system_message_box, max_tokens_slider, temperature_slider, top_p_slider,
|
470 |
+
frequency_penalty_slider, seed_slider, custom_model_box,
|
471 |
model_search_box, featured_model_radio],
|
472 |
[chatbot]
|
473 |
).then(
|
|
|
491 |
outputs=custom_model_box
|
492 |
)
|
493 |
print("Featured model radio button change event linked.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
494 |
|
495 |
print("Gradio interface initialized.")
|
496 |
|