Sp1der0xtest commited on
Commit
85181dc
·
verified ·
1 Parent(s): 0d48b93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -37
app.py CHANGED
@@ -2,69 +2,47 @@ import streamlit as st
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
 
5
- # إعداد الصفحة
6
- st.set_page_config(page_title="Qwen-72B Chat", page_icon="🤖")
7
- st.title("💬 دردشة مع Qwen-72B العربي")
8
 
9
- # تحميل الموديل مرة واحدة فقط
10
- @st.cache_resource(show_spinner="جاري تحميل الموديل...")
11
  def load_model():
12
- model_name = "Qwen/Qwen-72B-Chat"
13
- tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
14
-
15
- model = AutoModelForCausalLM.from_pretrained(
16
- model_name,
17
- load_in_8bit=True,
18
- device_map="auto",
19
- trust_remote_code=True
20
- )
21
  return tokenizer, model
22
 
23
- # تحميل الموديل
24
  tokenizer, model = load_model()
25
 
26
- # واجهة المحادثة
27
  if "messages" not in st.session_state:
28
  st.session_state.messages = []
29
 
30
- # عرض الرسائل السابقة
31
  for message in st.session_state.messages:
32
  with st.chat_message(message["role"]):
33
  st.markdown(message["content"])
34
 
35
- # حقل الإدخال
36
- if prompt := st.chat_input("اكتب رسالتك هنا..."):
37
- # إضافة رسالة المستخدم
38
  st.session_state.messages.append({"role": "user", "content": prompt})
39
  with st.chat_message("user"):
40
  st.markdown(prompt)
41
 
42
- # توليد الرد
43
  with st.chat_message("assistant"):
44
  with st.spinner("جاري التفكير..."):
45
- # تحويل المحادثة لنص
46
- conversation = ""
47
- for msg in st.session_state.messages:
48
- if msg["role"] == "user":
49
- conversation += f"Human: {msg['content']}\n"
50
- else:
51
- conversation += f"Assistant: {msg['content']}\n"
52
- conversation += "Assistant: "
53
 
54
  # توليد الرد
55
- inputs = tokenizer(conversation, return_tensors="pt").to(model.device)
56
-
57
  with torch.no_grad():
58
  outputs = model.generate(
59
- **inputs,
60
- max_new_tokens=300,
61
- temperature=0.7,
62
  do_sample=True,
63
- pad_token_id=tokenizer.eos_token_id
64
  )
65
 
66
- response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
67
  st.markdown(response)
68
 
69
- # حفظ الرد
70
  st.session_state.messages.append({"role": "assistant", "content": response})
 
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
 
5
+ st.set_page_config(page_title="Chat with AI", page_icon="🤖")
6
+ st.title("💬 دردشة مع AI")
 
7
 
8
+ @st.cache_resource(show_spinner="جاري التحميل...")
 
9
  def load_model():
10
+ # نستخدم نسخة أصغر وأبسط
11
+ model_name = "microsoft/DialoGPT-large" # حجمه 1.3GB فقط
12
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
13
+ model = AutoModelForCausalLM.from_pretrained(model_name)
 
 
 
 
 
14
  return tokenizer, model
15
 
 
16
  tokenizer, model = load_model()
17
 
 
18
  if "messages" not in st.session_state:
19
  st.session_state.messages = []
20
 
 
21
  for message in st.session_state.messages:
22
  with st.chat_message(message["role"]):
23
  st.markdown(message["content"])
24
 
25
+ if prompt := st.chat_input("اكتب رسالتك..."):
 
 
26
  st.session_state.messages.append({"role": "user", "content": prompt})
27
  with st.chat_message("user"):
28
  st.markdown(prompt)
29
 
 
30
  with st.chat_message("assistant"):
31
  with st.spinner("جاري التفكير..."):
32
+ # تجهيز الإدخال
33
+ inputs = tokenizer.encode(prompt + tokenizer.eos_token, return_tensors="pt")
 
 
 
 
 
 
34
 
35
  # توليد الرد
 
 
36
  with torch.no_grad():
37
  outputs = model.generate(
38
+ inputs,
39
+ max_length=1000,
40
+ pad_token_id=tokenizer.eos_token_id,
41
  do_sample=True,
42
+ temperature=0.7
43
  )
44
 
45
+ response = tokenizer.decode(outputs[:, inputs.shape[-1]:][0], skip_special_tokens=True)
46
  st.markdown(response)
47
 
 
48
  st.session_state.messages.append({"role": "assistant", "content": response})