Spaces:
Sleeping
Sleeping
File size: 5,483 Bytes
038f313 fab24df c5a20a4 038f313 db00df1 0ef95ea c6bdd15 038f313 0ef95ea 038f313 c58c098 038f313 27c8b8d 038f313 3a64d68 98674ca c5a20a4 038f313 0ef95ea f7c4208 901bafe 0ef95ea 038f313 c5a20a4 0ef95ea 901bafe 27c8b8d a05c183 27c8b8d 30153c5 0ef95ea 27c8b8d 30153c5 0ef95ea 27c8b8d 901bafe 27c8b8d 0ef95ea 27c8b8d 0ef95ea 2766a54 0ef95ea 901bafe b0cbd1c f7c4208 ca486cf 0ef95ea a8fc89d 32cb31c 901bafe fe8aa25 3be1fb9 fe8aa25 3be1fb9 901bafe fe8aa25 901bafe 0ef95ea 901bafe 0ef95ea 901bafe 2766a54 d356810 afc6022 901bafe a8fc89d b0cbd1c 0ef95ea b0cbd1c a8fc89d 30153c5 a8fc89d 198b116 30153c5 96900bb 198b116 b008d5e a8fc89d 30153c5 901bafe 50e8a6e 901bafe a8fc89d df1d189 f4bcff8 df1d189 b0cbd1c 8668b24 3be1fb9 465e83b 9d3a4a9 465e83b 9d3a4a9 198b116 3be1fb9 a8fc89d b0cbd1c 0ef95ea b0cbd1c 0ef95ea b0cbd1c 7bd3896 3be1fb9 a8fc89d 30153c5 a8fc89d 3be1fb9 a8fc89d 3be1fb9 769901b 77298b9 ec0dd4b 7e1eade |
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
import gradio as gr
from openai import OpenAI
import os
ACCESS_TOKEN = os.getenv("HF_TOKEN")
print("Access token loaded.")
client = OpenAI(
base_url="https://api-inference.huggingface.co/v1/",
api_key=ACCESS_TOKEN,
)
print("OpenAI client initialized.")
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
frequency_penalty,
seed,
custom_model
):
print(f"Received message: {message}")
print(f"History: {history}")
print(f"System message: {system_message}")
print(f"Max tokens: {max_tokens}, Temperature: {temperature}, Top-P: {top_p}")
print(f"Frequency Penalty: {frequency_penalty}, Seed: {seed}")
print(f"Selected model (custom_model): {custom_model}")
# Convert seed to None if -1 (meaning random)
if seed == -1:
seed = None
messages = [{"role": "system", "content": system_message}]
print("Initial messages array constructed.")
# Add conversation history to the context
for val in history:
user_part = val[0]
assistant_part = val[1]
if user_part:
messages.append({"role": "user", "content": user_part})
print(f"Added user message to context: {user_part}")
if assistant_part:
messages.append({"role": "assistant", "content": assistant_part})
print(f"Added assistant message to context: {assistant_part}")
# Append the latest user message
messages.append({"role": "user", "content": message})
print("Latest user message appended.")
# If user provided a model, use that; otherwise, fall back to a default model
model_to_use = custom_model.strip() if custom_model.strip() != "" else "meta-llama/Llama-3.1-8B-Instruct"
print(f"Model selected for inference: {model_to_use}")
# Start with an empty string to build the response as tokens stream in
response = ""
print("Sending request to OpenAI API.")
for message_chunk in client.chat.completions.create(
model=model_to_use,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
frequency_penalty=frequency_penalty,
seed=seed,
messages=messages,
):
token_text = message_chunk.choices[0].delta.content
print(f"Received token: {token_text}")
response += token_text
yield response
print("Completed response generation.")
# GRADIO UI
chatbot = gr.Chatbot(height=600, show_copy_button=True, placeholder="ChatGPT is initializing...", likeable=True, layout="panel")
print("Chatbot interface created.")
system_message_box = gr.Label(value="You can select Max Tokens, Temperature, Top-P, Seed")
max_tokens_slider = gr.Slider(
minimum=1024,
maximum=2048,
value=1024,
step=100,
label="Max new tokens"
)
temperature_slider = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.7,
step=0.1,
label="Temperature"
)
top_p_slider = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-P"
)
frequency_penalty_slider = gr.Slider(
minimum=-2.0,
maximum=2.0,
value=0.0,
step=0.1,
label="Frequency Penalty"
)
seed_slider = gr.Slider(
minimum=-1,
maximum=65535,
value=-1,
step=1,
label="Seed (-1 for random)"
)
# The custom_model_box is what the respond function sees as "custom_model"
custom_model_box = gr.Textbox(
value="meta-llama/Llama-3.2-3B-Instruct",
label="AI Mode is ",
# info="(Optional) Provide a custom Hugging Face model path. Overrides any selected featured model.",
info="meta-llama/Llama-3.2-3B-Instruct"
)
def set_custom_model_from_radio(selected):
"""
This function will get triggered whenever someone picks a model from the 'Featured Models' radio.
We will update the Custom Model text box with that selection automatically.
"""
print(f"Featured model selected: {selected}")
return selected
demo = gr.ChatInterface(
fn=respond,
additional_inputs=[
system_message_box,
max_tokens_slider,
temperature_slider,
top_p_slider,
frequency_penalty_slider,
seed_slider,
custom_model_box,
],
fill_height=True,
chatbot=chatbot,
theme="Nymbo/Nymbo_Theme",
)
print("Chat Interface object created.")
with demo:
with gr.Accordion("", open=False):
print("")
models_list = [
]
# print("")
featured_model_radio = gr.Radio(
value="meta-llama/Llama-3.2-3B-Instruct",
interactive=True
)
# print("Featured models radio button created.")
def filter_models(search_term):
print(f"Filtering models with search term: {search_term}")
filtered = [m for m in models_list if search_term.lower() in m.lower()]
print(f"Filtered models: {filtered}")
return gr.update(choices=filtered)
# print("Model search box change event linked.")
featured_model_radio.change(
fn=set_custom_model_from_radio,
inputs=featured_model_radio,
outputs=custom_model_box
)
# print("Featured model radio button change event linked.")
# print("Gradio interface initialized.")
if __name__ == "__main__":
print("Launching the ChatGPT-Llama.....")
demo.launch()
|