Spaces:
Runtime error
Runtime error
File size: 3,085 Bytes
5df5de8 0877c16 5df5de8 f25bc2b 0877c16 5df5de8 f25bc2b da7db39 5df5de8 da7db39 5df5de8 f25bc2b a532daf 3c9e9a9 0877c16 a532daf 0877c16 a532daf 0877c16 3c9e9a9 0877c16 a532daf 0877c16 1187ba7 3c9e9a9 a532daf f25bc2b 0877c16 f25bc2b 0877c16 da7db39 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
# تحميل نموذج LLaMA من Hugging Face
client = InferenceClient("meta-llama/Llama-2-7b-chat-hf")
# قائمة السيناريوهات المتاحة
scenarios = {
"restaurant": "You are in a restaurant. Help the user order food in English.",
"airport": "You are at an airport. Help the user check in and find their gate.",
"hotel": "You are in a hotel. Help the user book a room.",
"shopping": "You are in a store. Help the user ask for prices and sizes.",
}
# دالة لاختيار السيناريو المناسب
def scenario_prompt(choice):
return scenarios.get(choice, "You are a language tutor AI. Help users practice real-life conversations.")
# دالة للمحادثة مع الذكاء الاصطناعي
def respond(*args):
"""
نتوقع أن يتم تمرير 7 معاملات بالترتيب التالي:
0: message
1: history
2: scenario (من قائمة الاختيارات)
3: system_message (قيمة مُدخلة، لكن سنستخدم scenario لتحديدها)
4: max_tokens
5: temperature
6: top_p
"""
# التأكد من وجود العدد الكافي من المعاملات:
if len(args) < 7:
return "Insufficient arguments provided."
message = args[0]
history = args[1]
scenario = args[2]
# تجاهل system_message المُمرر واستبداله بالرسالة المناسبة للسيناريو:
system_message = scenario_prompt(scenario)
max_tokens = args[4]
temperature = args[5]
top_p = args[6]
messages = [{"role": "system", "content": system_message}]
# إذا كان history يحتوي على محادثات سابقة:
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 = ""
for m in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = m.choices[0].delta.content
response += token
yield response
# واجهة `Gradio` للتفاعل مع المستخدم
demo = gr.ChatInterface(
respond,
chatbot=gr.Chatbot(type="messages"), # إصلاح التحذير باستخدام `type="messages"`
additional_inputs=[
gr.Dropdown(choices=list(scenarios.keys()), label="Choose a scenario", value="restaurant"),
gr.Textbox(value=scenario_prompt("restaurant"), label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, 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)"),
],
)
if __name__ == "__main__":
demo.launch()
|