ddfws commited on
Commit
fa88a82
·
verified ·
1 Parent(s): 42c7973

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +118 -141
app.py CHANGED
@@ -2,37 +2,33 @@ import gradio as gr
2
  import spaces
3
  import torch
4
 
5
- from transformers import (
6
- AutoTokenizer,
7
- AutoModelForCausalLM
8
- )
9
 
10
 
11
 
12
- # ==========================
13
  # Model
14
- # ==========================
15
 
16
  MODEL_ID = "ddfws/Rezaeian-StatsAI"
17
 
18
 
19
-
20
  print("Loading tokenizer...")
21
 
 
22
  tokenizer = AutoTokenizer.from_pretrained(
23
  MODEL_ID,
24
  trust_remote_code=True
25
  )
26
 
27
 
28
-
29
  print("Loading model...")
30
 
31
 
32
  model = AutoModelForCausalLM.from_pretrained(
33
  MODEL_ID,
34
  device_map="auto",
35
- torch_dtype=torch.float16,
36
  trust_remote_code=True
37
  )
38
 
@@ -44,138 +40,128 @@ print("MODEL READY")
44
 
45
 
46
 
47
- # ==========================
48
- # Professional System Prompt
49
- # ==========================
50
 
51
 
52
  SYSTEM_PROMPT = """
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
- تمام روابط ریاضی را واضح با LaTeX بنویس.
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
- - آزمون Z
159
- - آزمون T
160
- - کای دو
161
 
 
162
 
163
- - رگرسیون
164
- - ANOVA
165
- - DOE
166
- - قابلیت اطمینان
167
 
 
168
 
169
- فرمول‌ها را مرتب بنویس.
170
- ترکیب فارسی و انگلی��ی ریاضی را خراب نکن.
171
- متغیرهای X,Y,μ,σ,P,E,Var را انگلیسی نگه دار.
 
 
 
 
172
 
173
  """
174
 
175
 
176
- # ==========================
177
- # Generation
178
- # ==========================
 
179
 
180
 
181
  @spaces.GPU
@@ -194,7 +180,8 @@ def generate(message, history):
194
 
195
  # فقط چند پیام آخر برای جلوگیری از پر شدن حافظه
196
 
197
- for user, assistant in history[-5:]:
 
198
 
199
  messages.append(
200
  {
@@ -256,27 +243,24 @@ def generate(message, history):
256
 
257
  with torch.no_grad():
258
 
 
259
  output = model.generate(
260
 
261
  **inputs,
262
 
263
 
264
- # جواب طولانی
265
 
266
  max_new_tokens=4096,
267
 
268
 
269
- # حداقل حجم پاسخ
270
-
271
- min_new_tokens=700,
272
-
273
 
274
- # مناسب ریاضی
275
 
276
  temperature=0.25,
277
 
278
 
279
- top_p=0.95,
280
 
281
 
282
  do_sample=True,
@@ -312,67 +296,68 @@ def generate(message, history):
312
 
313
 
314
 
315
- # ==========================
316
- # Interface
317
- # ==========================
318
 
319
 
320
  css = """
321
 
322
- .gradio-container{
323
 
324
- direction:rtl;
325
 
326
- max-width:1400px!important;
327
 
328
  }
329
 
330
 
331
- .message{
332
 
333
- direction:rtl!important;
334
 
335
- text-align:right!important;
336
 
337
- font-family:Tahoma,Arial!important;
338
 
339
- font-size:18px!important;
340
 
341
- line-height:2.2!important;
342
 
343
  }
344
 
345
 
346
- .markdown-body{
347
-
348
- direction:rtl!important;
349
 
350
- text-align:right!important;
351
-
352
- }
353
 
 
354
 
 
355
 
356
- textarea{
357
 
358
- direction:rtl!important;
359
 
360
- text-align:right!important;
361
 
362
- font-size:18px!important;
363
 
364
  }
365
 
366
 
 
367
 
368
- footer{
369
 
370
- display:none!important;
371
 
372
- }
 
 
373
 
374
 
375
- """
 
 
 
376
 
377
 
378
  demo = gr.ChatInterface(
@@ -387,40 +372,32 @@ demo = gr.ChatInterface(
387
 
388
  دستیار هوشمند آمار و احتمال مهندسی
389
 
390
- سطح آموزشی:
391
  کارشناسی مهندسی
392
 
393
- حل مسائل به سبک استاد دانشگاه:
394
-
395
- ✓ توضیح مفهوم
396
- ✓ فرمول‌ها
397
- ✓ حل مرحله‌ای
398
- ✓ مثال مشابه
399
- ✓ نکات امتحانی
400
 
401
- """,
402
 
 
403
 
404
- chatbot=gr.Chatbot(
405
 
406
- height=1200,
407
 
408
- rtl=True,
409
 
410
- show_copy_button=True,
411
 
412
- render_markdown=True
413
 
414
- ),
415
 
416
 
417
  textbox=gr.Textbox(
418
 
419
- placeholder="سؤال آمار و احتمال خود را وارد کنید ...",
420
-
421
- lines=4,
422
 
423
- rtl=True
424
 
425
  ),
426
 
@@ -431,9 +408,9 @@ demo = gr.ChatInterface(
431
 
432
 
433
 
434
- # ==========================
435
  # Run
436
- # ==========================
437
 
438
 
439
  demo.launch(
 
2
  import spaces
3
  import torch
4
 
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM
 
 
 
6
 
7
 
8
 
9
+ # =========================
10
  # Model
11
+ # =========================
12
 
13
  MODEL_ID = "ddfws/Rezaeian-StatsAI"
14
 
15
 
 
16
  print("Loading tokenizer...")
17
 
18
+
19
  tokenizer = AutoTokenizer.from_pretrained(
20
  MODEL_ID,
21
  trust_remote_code=True
22
  )
23
 
24
 
 
25
  print("Loading model...")
26
 
27
 
28
  model = AutoModelForCausalLM.from_pretrained(
29
  MODEL_ID,
30
  device_map="auto",
31
+ dtype=torch.float16,
32
  trust_remote_code=True
33
  )
34
 
 
40
 
41
 
42
 
43
+ # =========================
44
+ # Professional Prompt
45
+ # =========================
46
 
47
 
48
  SYSTEM_PROMPT = """
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
+ ANOVA
77
+ رگرسیون
78
 
 
 
 
 
 
 
79
 
80
+ ۲- توضیح مفهوم
81
 
82
+ قبل از حل، مفهوم را آموزشی توضیح بده.
83
 
84
 
85
+ ۳- فرمول‌ها
86
 
87
+ فرمول‌های مورد نیاز را با LaTeX بنویس.
 
 
88
 
89
 
90
+ ۴- حل مرحله به مرحله
91
 
92
+ تمام محاسبات را نمایش بده.
93
 
94
 
95
+ ۵- مثال مشابه
96
 
97
+ یک مثال مهندسی مشابه ارائه کن و حل کن.
98
 
99
 
100
+ ۶- نکات مهم
101
 
102
+ اشتباهات رایج دانشجویان و نکات امتحانی را توضیح بده.
 
 
 
 
103
 
 
104
 
105
+ ۷- نتیجه نهایی
106
 
 
107
 
108
+ موضوعات:
109
 
110
+ Probability
111
 
112
+ Bayes theorem
113
 
114
+ Random variables
115
 
116
+ Discrete distributions
117
 
118
+ Continuous distributions
119
 
120
+ Binomial
121
 
122
+ Poisson
123
 
124
+ Normal
125
 
126
+ Exponential
127
 
128
+ Gamma
129
 
130
+ Expectation
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
 
132
+ Variance
133
 
134
+ Covariance
 
 
 
135
 
136
+ Sampling
137
 
138
+ CLT
 
 
139
 
140
+ Confidence interval
141
 
142
+ Hypothesis testing
 
 
 
 
 
143
 
144
+ Regression
145
 
146
+ ANOVA
 
 
 
147
 
148
+ Reliability
149
 
150
+
151
+ فرمول‌ها را مرتب نگه دار.
152
+
153
+ متغیرهای ریاضی مثل:
154
+ X Y μ σ P E Var
155
+
156
+ را انگلیسی نگه دار.
157
 
158
  """
159
 
160
 
161
+
162
+ # =========================
163
+ # Generate
164
+ # =========================
165
 
166
 
167
  @spaces.GPU
 
180
 
181
  # فقط چند پیام آخر برای جلوگیری از پر شدن حافظه
182
 
183
+ for user, assistant in history[-4:]:
184
+
185
 
186
  messages.append(
187
  {
 
243
 
244
  with torch.no_grad():
245
 
246
+
247
  output = model.generate(
248
 
249
  **inputs,
250
 
251
 
252
+ # جواب بلند دانشگاهی
253
 
254
  max_new_tokens=4096,
255
 
256
 
257
+ min_new_tokens=500,
 
 
 
258
 
 
259
 
260
  temperature=0.25,
261
 
262
 
263
+ top_p=0.9,
264
 
265
 
266
  do_sample=True,
 
296
 
297
 
298
 
299
+ # =========================
300
+ # CSS
301
+ # =========================
302
 
303
 
304
  css = """
305
 
306
+ .gradio-container {
307
 
308
+ direction: rtl;
309
 
310
+ max-width: 1400px !important;
311
 
312
  }
313
 
314
 
315
+ .message {
316
 
317
+ direction: rtl !important;
318
 
319
+ text-align:right !important;
320
 
321
+ font-family:Tahoma,Arial;
322
 
323
+ font-size:18px !important;
324
 
325
+ line-height:2.2 !important;
326
 
327
  }
328
 
329
 
330
+ textarea {
 
 
331
 
332
+ direction:rtl !important;
 
 
333
 
334
+ text-align:right !important;
335
 
336
+ font-size:18px !important;
337
 
338
+ }
339
 
 
340
 
341
+ footer {
342
 
343
+ display:none !important;
344
 
345
  }
346
 
347
 
348
+ """
349
 
 
350
 
 
351
 
352
+ # =========================
353
+ # Interface
354
+ # =========================
355
 
356
 
357
+ chatbot = gr.Chatbot(
358
+ height=1000
359
+ )
360
+
361
 
362
 
363
  demo = gr.ChatInterface(
 
372
 
373
  دستیار هوشمند آمار و احتمال مهندسی
374
 
375
+ سطح:
376
  کارشناسی مهندسی
377
 
378
+ حل تشریحی مانند استاد دانشگاه:
 
 
 
 
 
 
379
 
380
+ ✓ توضیح مفهوم
381
 
382
+ ✓ فرمول
383
 
384
+ ✓ حل مرحله‌ای
385
 
386
+ ✓ مثال مشابه
387
 
388
+ ✓ نکات امتحانی
389
 
390
+ """,
391
 
 
392
 
393
+ chatbot=chatbot,
394
 
395
 
396
  textbox=gr.Textbox(
397
 
398
+ placeholder="سؤال آمار و احتمال خود را وارد کنید",
 
 
399
 
400
+ lines=4
401
 
402
  ),
403
 
 
408
 
409
 
410
 
411
+ # =========================
412
  # Run
413
+ # =========================
414
 
415
 
416
  demo.launch(