zizo66 commited on
Commit
0877c16
·
verified ·
1 Parent(s): 58aa69c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -15
app.py CHANGED
@@ -1,20 +1,85 @@
1
  import gradio as gr
2
- from transformers import AutoModelForCausalLM, AutoTokenizer
3
 
4
- # تحميل نموذج LLaMA
5
- model_name = "meta-llama/Llama-2-7b-chat-hf"
6
- tokenizer = AutoTokenizer.from_pretrained(model_name)
7
- model = AutoModelForCausalLM.from_pretrained(model_name)
8
 
9
- # دالة للمحادثة مع الذكاء الاصطناعي
10
- def chat_with_ai(user_input):
11
- inputs = tokenizer(user_input, return_tensors="pt")
12
- outputs = model.generate(**inputs, max_new_tokens=150)
13
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
14
- return response
15
 
16
- # إنشاء واجهة تفاعلية باستخدام Gradio
17
- iface = gr.Interface(fn=chat_with_ai, inputs="text", outputs="text", title="AI Language Tutor")
18
 
19
- # تشغيل التطبيق
20
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ from huggingface_hub import InferenceClient
3
 
4
+ """
5
+ For more information on huggingface_hub Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
6
+ """
7
+ client = InferenceClient("meta-llama/Llama-2-7b-chat-hf")
8
 
 
 
 
 
 
 
9
 
 
 
10
 
11
+ def respond(
12
+ message,
13
+ history: list[tuple[str, str]],
14
+ system_message,
15
+ max_tokens,
16
+ temperature,
17
+ top_p,
18
+ ):
19
+ messages = [{"role": "system", "content": system_message}]
20
+
21
+ for val in history:
22
+ if val[0]:
23
+ messages.append({"role": "user", "content": val[0]})
24
+ if val[1]:
25
+ messages.append({"role": "assistant", "content": val[1]})
26
+
27
+ messages.append({"role": "user", "content": message})
28
+
29
+ response = ""
30
+
31
+ for message in client.chat_completion(
32
+ messages,
33
+ max_tokens=max_tokens,
34
+ stream=True,
35
+ temperature=temperature,
36
+ top_p=top_p,
37
+ ):
38
+ token = message.choices[0].delta.content
39
+
40
+ response += token
41
+ yield response
42
+
43
+
44
+ """
45
+ For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
46
+ """
47
+ demo = gr.ChatInterface(
48
+ respond,
49
+ additional_inputs=[
50
+ gr.Textbox(value="You are a language tutor AI. Help users practice real-life conversations.", label="System message")
51
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
+ gr.Slider(
54
+ minimum=0.1,
55
+ maximum=1.0,
56
+ value=0.95,
57
+ step=0.05,
58
+ label="Top-p (nucleus sampling)",
59
+ ),
60
+ ],
61
+ )
62
+ scenarios = {
63
+ "restaurant": "You are in a restaurant. Help the user order food in English.",
64
+ "airport": "You are at an airport. Help the user check in and find their gate.",
65
+ "hotel": "You are in a hotel. Help the user book a room.",
66
+ "shopping": "You are in a store. Help the user ask for prices and sizes.",
67
+ }
68
+
69
+ def scenario_prompt(choice):
70
+ return scenarios.get(choice, "You are a language tutor AI. Help users practice real-life conversations.")
71
+
72
+ demo = gr.ChatInterface(
73
+ respond,
74
+ additional_inputs=[
75
+ gr.Dropdown(choices=list(scenarios.keys()), label="Choose a scenario", value="restaurant"),
76
+ gr.Textbox(value=scenario_prompt("restaurant"), label="System message"),
77
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
78
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
79
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
80
+ ],
81
+ )
82
+
83
+
84
+ if __name__ == "__main__":
85
+ demo.launch()