redael commited on
Commit
3b6ab63
·
verified ·
1 Parent(s): d17fd79

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -40
app.py CHANGED
@@ -1,62 +1,56 @@
1
  import os
2
  os.system('sh setup.sh')
3
  import gradio as gr
4
- import torch
5
- from transformers import GPT2LMHeadModel, GPT2Tokenizer
6
 
7
- # Load the model and tokenizer
8
- model_path = "final_model"
9
- tokenizer = GPT2Tokenizer.from_pretrained(model_path)
10
- model = GPT2LMHeadModel.from_pretrained(model_path)
11
 
12
- # Check if CUDA is available and use GPU if possible
13
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
14
- model.to(device)
15
 
16
- def generate_response(prompt, model, tokenizer, max_length=100, num_beams=5, temperature=0.5, top_p=0.9, repetition_penalty=4.0):
17
- # Prepare the prompt
18
- prompt = f"User: {prompt}\nAssistant:"
19
- inputs = tokenizer(prompt, return_tensors='pt', padding=True, truncation=True, max_length=512).to(device)
20
- outputs = model.generate(
21
- inputs['input_ids'],
22
- max_length=max_length,
23
- num_return_sequences=1,
24
- pad_token_id=tokenizer.eos_token_id,
25
- num_beams=num_beams,
 
 
 
26
  temperature=temperature,
27
  top_p=top_p,
28
- repetition_penalty=repetition_penalty,
29
- early_stopping=True
30
- )
31
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
32
-
33
- # Post-processing to clean up the response
34
- response = response.split("Assistant:")[-1].strip()
35
- response_lines = response.split('\n')
36
- clean_response = []
37
- for line in response_lines:
38
- if "User:" not in line and "Assistant:" not in line:
39
- clean_response.append(line)
40
- response = ' '.join(clean_response)
41
- return response.strip()
42
 
43
- def chat_interface(user_input, history):
44
- response = generate_response(user_input, model, tokenizer)
 
45
  history.append((user_input, response))
46
  return history, history
47
 
48
  with gr.Blocks() as demo:
49
  gr.Markdown("# Chatbot using GPT")
50
-
51
  chatbot = gr.Chatbot()
52
- message = gr.Textbox(placeholder="Type your question here...")
 
 
 
 
53
  state = gr.State([])
54
-
55
  with gr.Row():
56
  clear = gr.Button("Clear")
57
  submit = gr.Button("Send")
58
-
59
- submit.click(chat_interface, [message, state], [chatbot, state])
60
  clear.click(lambda: None, None, chatbot)
61
  clear.click(lambda: [], None, state)
62
 
 
1
  import os
2
  os.system('sh setup.sh')
3
  import gradio as gr
4
+ from huggingface_hub import InferenceClient
 
5
 
6
+ # Initialize the Hugging Face client
7
+ client = InferenceClient(model="redael/model_udc")
 
 
8
 
9
+ def generate_response(message, history, system_message, max_tokens, temperature, top_p):
10
+ messages = [{"role": "system", "content": system_message}]
 
11
 
12
+ for user_message, bot_message in history:
13
+ if user_message:
14
+ messages.append({"role": "user", "content": user_message})
15
+ if bot_message:
16
+ messages.append({"role": "assistant", "content": bot_message})
17
+
18
+ messages.append({"role": "user", "content": message})
19
+
20
+ response = ""
21
+ for token_message in client.chat_completion(
22
+ messages=messages,
23
+ max_tokens=max_tokens,
24
+ stream=True,
25
  temperature=temperature,
26
  top_p=top_p,
27
+ ):
28
+ token = token_message.choices[0].delta.content
29
+ response += token
30
+ yield response
 
 
 
 
 
 
 
 
 
 
31
 
32
+ def chat_interface(user_input, history, system_message, max_tokens, temperature, top_p):
33
+ response_generator = generate_response(user_input, history, system_message, max_tokens, temperature, top_p)
34
+ response = "".join([token for token in response_generator])
35
  history.append((user_input, response))
36
  return history, history
37
 
38
  with gr.Blocks() as demo:
39
  gr.Markdown("# Chatbot using GPT")
40
+
41
  chatbot = gr.Chatbot()
42
+ user_input = gr.Textbox(placeholder="Type your question here...", label="User Input")
43
+ system_message = gr.Textbox(value="You are a friendly chatbot.", label="System Message")
44
+ max_tokens = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max New Tokens")
45
+ temperature = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature")
46
+ top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (Nucleus Sampling)")
47
  state = gr.State([])
48
+
49
  with gr.Row():
50
  clear = gr.Button("Clear")
51
  submit = gr.Button("Send")
52
+
53
+ submit.click(chat_interface, [user_input, state, system_message, max_tokens, temperature, top_p], [chatbot, state])
54
  clear.click(lambda: None, None, chatbot)
55
  clear.click(lambda: [], None, state)
56