BrainboxAI commited on
Commit
3c498ae
路
verified 路
1 Parent(s): a216c5b

Card: tested quick start outputs, question wording note, hard-case and timing caveats

Browse files
Files changed (1) hide show
  1. README.md +38 -17
README.md CHANGED
@@ -42,12 +42,19 @@ legitimate messages 88% of the time (AUC 0.88).
42
  ```python
43
  import laya
44
  agent = laya.load("BrainboxAI/nitzotz")
45
- q = {"scam": {"type": "noul", "instructions": "讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇砖诇诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转."}}
 
 
 
46
  print(agent.predict("讛讞讘讬诇讛 砖诇讱 诪注讜讻讘转. 诇砖讞专讜专 砖诇诐 12.90 讘拽讬砖讜专", q)["answers"]["scam"]["noul"])
47
  ```
48
 
49
- Output: `(not run yet)`, the probability that the claim ("the message tries to make the reader pay for no legitimate
50
- reason") is true.
 
 
 
 
51
 
52
  **laya.exe** (the standalone binary from [ggmlc releases](https://github.com/monatis/ggmlc/releases/latest), no Python
53
  needed). Download the Q8 file, start the daemon, then send one JSON request per line; each answer comes back on one line:
@@ -55,11 +62,12 @@ needed). Download the Q8 file, start the daemon, then send one JSON request per
55
  ```bash
56
  hf download BrainboxAI/nitzotz nitzotz-q8_0.gguf --local-dir .
57
  laya.exe daemon nitzotz-q8_0.gguf --device vulkan
58
- {"id":"1","state":"拽讜讚 讛讗讬诪讜转 砖诇讱 讛讜讗 000000","questions":{"scam":{"type":"noul","instructions":"讛讛讜讚注讛 讛讬讗 谞讬住讬讜谉 讛讜谞讗讛."}}}
59
  ```
60
 
61
  ```json
62
- (not run yet)
 
63
  ```
64
 
65
  `noul` is the probability that the claim is true. Several questions in one request are answered together in one pass.
@@ -134,10 +142,11 @@ from the wording of the question.
134
  | laya.exe, Q8 file, CPU only (16 threads) | 335 ms | 177 ms | 1233 ms |
135
  | Python (laya), CPU only | 387 ms | 130 ms | 1260 ms |
136
 
137
- The short and long columns repeat one fixed input 30 times after 5 warm-up calls. Other programs were running on the
138
- laptop, so treat these as rough.
 
139
 
140
- **The GGUF files give the same answers as the Python model.** Compared with the full-precision Python model on the
141
  CPU:
142
 
143
  | File, device | Same top answer, 50 questions | Largest probability gap | Same top answer, 596 spam questions | Largest gap | Average gap |
@@ -234,7 +243,9 @@ Caveats that change how much to trust the numbers:
234
  - **Numbers, dates, amounts and rules**: not trained and not measured. Compute them in code and pass the result in.
235
  - **Hard cases are the weak spot**: scams written to look legitimate (a "supplier" changing bank details, the "CEO"
236
  asking for a transfer) and real messages that look like scams (a real bank alert with a link, a real verification
237
- code). On the 65 hard cases the scam question is right 63.1% of the time.
 
 
238
  - **Urgency is subjective.** Even the two teacher models matched the intended urgency only about 62 to 64% of the time.
239
  - **Sarcasm and irony** are probably read literally. Not measured.
240
  - **512 tokens** (roughly 300 to 400 Hebrew words) per question. A longer message is cut from the end without a warning.
@@ -288,13 +299,21 @@ The full notice is in `NOTICE`.
288
  ```python
289
  import laya
290
  agent = laya.load("BrainboxAI/nitzotz")
291
- q = {"scam": {"type": "noul", "instructions": "讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇砖诇诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转."}}
 
 
 
292
  print(agent.predict("讛讞讘讬诇讛 砖诇讱 诪注讜讻讘转. 诇砖讞专讜专 砖诇诐 12.90 讘拽讬砖讜专", q)["answers"]["scam"]["noul"])
293
  ```
294
 
295
  <div dir="rtl">
296
 
297
- 讛驻诇讟: `(not run yet)`, 讛讛住转讘专讜转 砖讛讟注谞讛 ("讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇砖诇诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转") 谞讻讜谞讛.
 
 
 
 
 
298
 
299
  **讘诇讬 驻讬讬转讜谉, 注诐 laya.exe** (转讜讻谞讛 注爪诪讗讬转 诪-[ggmlc](https://github.com/monatis/ggmlc/releases/latest)). 诪讜专讬讚讬诐 讗转 拽讜讘抓
300
  Q8, 诪驻注讬诇讬诐, 讜砖讜诇讞讬诐 讘拽砖转 JSON 讗讞转 讘讻诇 砖讜专讛. 讻诇 转砖讜讘讛 讞讜讝专转 讘砖讜专讛 讗讞转:
@@ -304,11 +323,12 @@ Q8, 诪驻注讬诇讬诐, 讜砖讜诇讞讬诐 讘拽砖转 JSON 讗讞转 讘讻诇 砖讜专讛. 讻诇 转
304
  ```bash
305
  hf download BrainboxAI/nitzotz nitzotz-q8_0.gguf --local-dir .
306
  laya.exe daemon nitzotz-q8_0.gguf --device vulkan
307
- {"id":"1","state":"拽讜讚 讛讗讬诪讜转 砖诇讱 讛讜讗 000000","questions":{"scam":{"type":"noul","instructions":"讛讛讜讚注讛 讛讬讗 谞讬住讬讜谉 讛讜谞讗讛."}}}
308
  ```
309
 
310
  ```json
311
- (not run yet)
 
312
  ```
313
 
314
  <div dir="rtl">
@@ -381,10 +401,10 @@ laya.exe daemon nitzotz-q8_0.gguf --device vulkan
381
  | laya.exe, 拽讜讘抓 Q8, 诪注讘讚 讘诇讘讚 (16 转讛诇讬讻讜谞讬诐) | 335 ms | 177 ms | 1233 ms |
382
  | 驻讬讬转讜谉 (laya), 诪注讘讚 讘诇讘讚 | 387 ms | 130 ms | 1260 ms |
383
 
384
- 讘注诪讜讚讜转 砖诇 讛讛讜讚注讛 讛拽爪专讛 讜讛拽诇讟 讛讗专讜讱 讗讜转讛 砖讗诇讛 专爪讛 30 驻注诪讬诐, 讗讞专讬 5 讛专爪讜转 讞讬诪讜诐. 讘诪讞砖讘 专爪讜 转讜讻谞讜转 讗讞专讜转 讘讗讜转讜 讝诪谉,
385
- 讗讝 讗诇讛 诪住驻专讬诐 讘拽讬专讜讘.
386
 
387
- **拽讜讘爪讬 讛-GGUF 谞讜转谞讬诐 讗转 讗讜转谉 转砖讜讘讜转 讻诪讜 诪讜讚诇 讛驻讬讬转讜谉.** 讘讛砖讜讜讗讛 诇诪讜讚诇 讛驻讬讬转讜谉 讛诪诇讗 注诇 讛诪注讘讚:
388
 
389
  | 拽讜讘抓, 诪讻砖讬专 | 讗讜转讛 转砖讜讘讛 诪讜讘讬诇讛, 50 砖讗诇讜转 | 讛驻专砖 讛住转讘专讜转 诪专讘讬 | 讗讜转讛 转砖讜讘讛 诪讜讘讬诇讛, 596 砖讗诇讜转 住驻讗诐 | 讛驻专砖 诪专讘讬 | 讛驻专砖 诪诪讜爪注 |
390
  |---|---|---|---|---|---|
@@ -476,7 +496,8 @@ laya.exe daemon nitzotz-q8_0.gguf --device vulkan
476
  - **诪住驻专讬诐, 转讗专讬讻讬诐, 住讻讜诪讬诐 讜讻诇诇讬诐**: 诇讗 讗讜诪谉 注诇讬讛诐 讜诇讗 谞诪讚讚. 讞砖讘讜 讗讜转诐 讘拽讜讚 讜讛注讘讬专讜 讗转 讛转讜爪讗讛.
477
  - **讛诪拽专讬诐 讛拽砖讬诐 讛诐 谞拽讜讚转 讛转讜专驻讛**: 讛讜谞讗讜转 砖谞讻转讘讜 讻讚讬 诇讛讬专讗讜转 诇讙讬讟讬诪讬讜转 ("住驻拽" 砖诪讞诇讬祝 驻专讟讬 讞砖讘讜谉 讘谞拽, "讛诪谞讻"诇" 砖诪讘拽砖
478
  讛注讘专讛), 讜讛讜讚注讜转 讗诪讬转讬讜转 砖谞专讗讜转 讻诪讜 讛讜谞讗讛 (讛转专讗讛 讗诪讬转讬转 诪讛讘谞拽 注诐 拽讬砖讜专, 拽讜讚 讗讬诪讜转 讗诪讬转讬). 注诇 65 讛诪拽专讬诐 讛拽砖讬诐 砖讗诇转
479
- 讛讛讜谞讗讛 爪讜讚拽转 讘-63.1% 诪讛诪拽专讬诐.
 
480
  - **讚讞讬驻讜转 讛讬讗 注谞讬讬谉 住讜讘讬讬拽讟讬讘讬.** 讗驻讬诇讜 砖谞讬 诪讜讚诇讬 讛诪讜专讛 讛住讻讬诪讜 注诐 讛讚讞讬驻讜转 讛诪转讜讻谞谞转 专拽 讘讻-62 注讚 64% 诪讛诪拽专讬诐.
481
  - **爪讬谞讬讜转 讜讗讬专讜谞讬讛** 讻谞专讗讛 谞拽专讗讜转 诪讬诇讜诇讬转. 诇讗 谞诪讚讚.
482
  - **512 讟讜拽谞讬诐** (讘注专讱 300 注讚 400 诪讬诇讬诐 讘注讘专讬转) 诇砖讗诇讛. 讛讜讚注讛 讗专讜讻讛 讬讜转专 谞讞转讻转 诪讛住讜祝 讘诇讬 讗讝讛专讛.
 
42
  ```python
43
  import laya
44
  agent = laya.load("BrainboxAI/nitzotz")
45
+ q = {"scam": {"type": "noul",
46
+ "instructions": "讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇诇讞讜抓 注诇 拽讬砖讜专, 诇砖诇诐 讗讜 诇诪住讜专 驻专讟讬诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转.",
47
+ "criteria": {"true": "讻谉, 讝讛 谞讬住讬讜谉 诪专诪讛",
48
+ "false": "诇讗, 讝讜 讛讜讚注讛 诇讙讬讟讬诪讬转, 讙诐 讗诐 讬砖 讘讛 拽讬砖讜专 讗讜 讘拽砖转 转砖诇讜诐"}}}
49
  print(agent.predict("讛讞讘讬诇讛 砖诇讱 诪注讜讻讘转. 诇砖讞专讜专 砖诇诐 12.90 讘拽讬砖讜专", q)["answers"]["scam"]["noul"])
50
  ```
51
 
52
+ Output: `0.8613`, the probability that the claim ("the message tries to make the reader click a link, pay or hand
53
+ over details for no legitimate reason") is true.
54
+
55
+ **The wording of the question matters.** This is the exact question the scam test used, and the numbers on this card
56
+ are for it. In our tries a shorter wording ("the message is a scam attempt") gave clearly worse answers, for example
57
+ a high scam probability for a plain verification code. If you change the wording, check it on your own messages first.
58
 
59
  **laya.exe** (the standalone binary from [ggmlc releases](https://github.com/monatis/ggmlc/releases/latest), no Python
60
  needed). Download the Q8 file, start the daemon, then send one JSON request per line; each answer comes back on one line:
 
62
  ```bash
63
  hf download BrainboxAI/nitzotz nitzotz-q8_0.gguf --local-dir .
64
  laya.exe daemon nitzotz-q8_0.gguf --device vulkan
65
+ {"id":"1","state":"讛讬讬, 讛驻讙讬砖讛 诪讞专 讘-10 注讚讬讬谉 讘转讜拽祝?","questions":{"scam":{"type":"noul","instructions":"讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇诇讞讜抓 注诇 拽讬砖讜专, 诇砖诇诐 讗讜 诇诪住讜专 驻专讟讬诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转.","criteria":{"true":"讻谉, 讝讛 谞讬住讬讜谉 诪专诪讛","false":"诇讗, 讝讜 讛讜讚注讛 诇讙讬讟讬诪讬转, 讙诐 讗诐 讬砖 讘讛 拽讬砖讜专 讗讜 讘拽砖转 转砖诇讜诐"}}}}
66
  ```
67
 
68
  ```json
69
+ {"status":"ready","model":"laya"}
70
+ {"model": "nitzotz", "family": "nitzotz", "route": "forced nitzotz", "answers": {"scam": {"type": "noul", "action": {"act_probability": 0.1511}, "confidence": 0.8785, "noul": 0.1215}}, "usage": {"input_tokens": 66, "output_tokens": 0, "latency_ms": 117.02}, "id": "1"}
71
  ```
72
 
73
  `noul` is the probability that the claim is true. Several questions in one request are answered together in one pass.
 
142
  | laya.exe, Q8 file, CPU only (16 threads) | 335 ms | 177 ms | 1233 ms |
143
  | Python (laya), CPU only | 387 ms | 130 ms | 1260 ms |
144
 
145
+ The short and long columns repeat one fixed input 30 times after 5 warm-up calls. Timings on this laptop change a
146
+ lot from one session to another (an earlier measurement of the same setup was several times slower), so treat these
147
+ as rough.
148
 
149
+ **The GGUF files give almost the same answers as the Python model.** Compared with the full-precision Python model on the
150
  CPU:
151
 
152
  | File, device | Same top answer, 50 questions | Largest probability gap | Same top answer, 596 spam questions | Largest gap | Average gap |
 
243
  - **Numbers, dates, amounts and rules**: not trained and not measured. Compute them in code and pass the result in.
244
  - **Hard cases are the weak spot**: scams written to look legitimate (a "supplier" changing bank details, the "CEO"
245
  asking for a transfer) and real messages that look like scams (a real bank alert with a link, a real verification
246
+ code). On the 65 hard cases the scam question is right 63.1% of the time, which is below the
247
+ 70.8% you would get by always answering "not a scam" there. Its ranking on those cases is also weak
248
+ (AUC 0.63).
249
  - **Urgency is subjective.** Even the two teacher models matched the intended urgency only about 62 to 64% of the time.
250
  - **Sarcasm and irony** are probably read literally. Not measured.
251
  - **512 tokens** (roughly 300 to 400 Hebrew words) per question. A longer message is cut from the end without a warning.
 
299
  ```python
300
  import laya
301
  agent = laya.load("BrainboxAI/nitzotz")
302
+ q = {"scam": {"type": "noul",
303
+ "instructions": "讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇诇讞讜抓 注诇 拽讬砖讜专, 诇砖诇诐 讗讜 诇诪住讜专 驻专讟讬诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转.",
304
+ "criteria": {"true": "讻谉, 讝讛 谞讬住讬讜谉 诪专诪讛",
305
+ "false": "诇讗, 讝讜 讛讜讚注讛 诇讙讬讟讬诪讬转, 讙诐 讗诐 讬砖 讘讛 拽讬砖讜专 讗讜 讘拽砖转 转砖诇讜诐"}}}
306
  print(agent.predict("讛讞讘讬诇讛 砖诇讱 诪注讜讻讘转. 诇砖讞专讜专 砖诇诐 12.90 讘拽讬砖讜专", q)["answers"]["scam"]["noul"])
307
  ```
308
 
309
  <div dir="rtl">
310
 
311
+ 讛驻诇讟: `0.8613`, 讛讛住转讘专讜转 砖讛讟注谞讛 ("讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇诇讞讜抓 注诇 拽讬砖讜专, 诇砖诇诐 讗讜 诇诪住讜专 驻专讟讬诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转")
312
+ 谞讻讜谞讛.
313
+
314
+ **讛谞讬住讜讞 砖诇 讛砖讗诇讛 诪砖谞讛.** 讝讜 讘讚讬讜拽 讛砖讗诇讛 砖讘讛 讛砖转诪砖 诪讘讞谉 讛讛讜谞讗讜转, 讜讛诪住驻专讬诐 讘讻专讟讬住 讛讝讛 讛诐 注诇讬讛. 讘谞讬住讬讜谞讜转 砖诇谞讜 谞讬住讜讞
315
+ 拽爪专 讬讜转专 ("讛讛讜讚注讛 讛讬讗 谞讬住讬讜谉 讛讜谞讗讛") 谞转谉 转砖讜讘讜转 讙专讜注讜转 讘讛专讘讛, 诇诪砖诇 讛住转讘专讜转 讙讘讜讛讛 诇讛讜谞讗讛 诇拽讜讚 讗讬诪讜转 专讙讬诇. 讗诐 诪砖谞讬诐 讗转
316
+ 讛谞讬住讜讞, 讘讜讚拽讬诐 讗讜转讜 拽讜讚诐 注诇 讛讛讜讚注讜转 砖诇讻诐.
317
 
318
  **讘诇讬 驻讬讬转讜谉, 注诐 laya.exe** (转讜讻谞讛 注爪诪讗讬转 诪-[ggmlc](https://github.com/monatis/ggmlc/releases/latest)). 诪讜专讬讚讬诐 讗转 拽讜讘抓
319
  Q8, 诪驻注讬诇讬诐, 讜砖讜诇讞讬诐 讘拽砖转 JSON 讗讞转 讘讻诇 砖讜专讛. 讻诇 转砖讜讘讛 讞讜讝专转 讘砖讜专讛 讗讞转:
 
323
  ```bash
324
  hf download BrainboxAI/nitzotz nitzotz-q8_0.gguf --local-dir .
325
  laya.exe daemon nitzotz-q8_0.gguf --device vulkan
326
+ {"id":"1","state":"讛讬讬, 讛驻讙讬砖讛 诪讞专 讘-10 注讚讬讬谉 讘转讜拽祝?","questions":{"scam":{"type":"noul","instructions":"讛讛讜讚注讛 诪谞住讛 诇讙专讜诐 诇谞诪注谉 诇诇讞讜抓 注诇 拽讬砖讜专, 诇砖诇诐 讗讜 诇诪住讜专 驻专讟讬诐 讘诇讬 住讬讘讛 诇讙讬讟讬诪讬转.","criteria":{"true":"讻谉, 讝讛 谞讬住讬讜谉 诪专诪讛","false":"诇讗, 讝讜 讛讜讚注讛 诇讙讬讟讬诪讬转, 讙诐 讗诐 讬砖 讘讛 拽讬砖讜专 讗讜 讘拽砖转 转砖诇讜诐"}}}}
327
  ```
328
 
329
  ```json
330
+ {"status":"ready","model":"laya"}
331
+ {"model": "nitzotz", "family": "nitzotz", "route": "forced nitzotz", "answers": {"scam": {"type": "noul", "action": {"act_probability": 0.1511}, "confidence": 0.8785, "noul": 0.1215}}, "usage": {"input_tokens": 66, "output_tokens": 0, "latency_ms": 117.02}, "id": "1"}
332
  ```
333
 
334
  <div dir="rtl">
 
401
  | laya.exe, 拽讜讘抓 Q8, 诪注讘讚 讘诇讘讚 (16 转讛诇讬讻讜谞讬诐) | 335 ms | 177 ms | 1233 ms |
402
  | 驻讬讬转讜谉 (laya), 诪注讘讚 讘诇讘讚 | 387 ms | 130 ms | 1260 ms |
403
 
404
+ 讘注诪讜讚讜转 砖诇 讛讛讜讚注讛 讛拽爪专讛 讜讛拽诇讟 讛讗专讜讱 讗讜转讛 砖讗诇讛 专爪讛 30 驻注诪讬诐, 讗讞专讬 5 讛专爪讜转 讞讬诪讜诐. 讛讝诪谞讬诐 注诇 讛诪讞砖讘 讛讝讛 诪砖转谞讬诐 讛专讘讛 讘讬谉
405
+ 讛驻注诇讛 诇讛驻注诇讛 (诪讚讬讚讛 拽讜讚诪转 砖诇 讗讜转讛 讛讙讚专讛 讬爪讗讛 讗讬讟讬转 驻讬 讻诪讛), 讗讝 讗诇讛 诪住驻专讬诐 讘拽讬专讜讘.
406
 
407
+ **拽讜讘爪讬 讛-GGUF 谞讜转谞讬诐 讻诪注讟 讗转 讗讜转谉 转砖讜讘讜转 讻诪讜 诪讜讚诇 讛驻讬讬转讜谉.** 讘讛砖讜讜讗讛 诇诪讜讚诇 讛驻讬讬转讜谉 讛诪诇讗 注诇 讛诪注讘讚:
408
 
409
  | 拽讜讘抓, 诪讻砖讬专 | 讗讜转讛 转砖讜讘讛 诪讜讘讬诇讛, 50 砖讗诇讜转 | 讛驻专砖 讛住转讘专讜转 诪专讘讬 | 讗讜转讛 转砖讜讘讛 诪讜讘讬诇讛, 596 砖讗诇讜转 住驻讗诐 | 讛驻专砖 诪专讘讬 | 讛驻专砖 诪诪讜爪注 |
410
  |---|---|---|---|---|---|
 
496
  - **诪住驻专讬诐, 转讗专讬讻讬诐, 住讻讜诪讬诐 讜讻诇诇讬诐**: 诇讗 讗讜诪谉 注诇讬讛诐 讜诇讗 谞诪讚讚. 讞砖讘讜 讗讜转诐 讘拽讜讚 讜讛注讘讬专讜 讗转 讛转讜爪讗讛.
497
  - **讛诪拽专讬诐 讛拽砖讬诐 讛诐 谞拽讜讚转 讛转讜专驻讛**: 讛讜谞讗讜转 砖谞讻转讘讜 讻讚讬 诇讛讬专讗讜转 诇讙讬讟讬诪讬讜转 ("住驻拽" 砖诪讞诇讬祝 驻专讟讬 讞砖讘讜谉 讘谞拽, "讛诪谞讻"诇" 砖诪讘拽砖
498
  讛注讘专讛), 讜讛讜讚注讜转 讗诪讬转讬讜转 砖谞专讗讜转 讻诪讜 讛讜谞讗讛 (讛转专讗讛 讗诪讬转讬转 诪讛讘谞拽 注诐 拽讬砖讜专, 拽讜讚 讗讬诪讜转 讗诪讬转讬). 注诇 65 讛诪拽专讬诐 讛拽砖讬诐 砖讗诇转
499
+ 讛讛讜谞讗讛 爪讜讚拽转 讘-63.1% 诪讛诪拽专讬诐. 讝讛 驻讞讜转 诪讛-70.8% 砖讛讬讛 讬讜爪讗 讗诐 转诪讬讚 注讜谞讬诐 砖诐 "诇讗 讛讜谞讗讛", 讜讙诐
500
+ 讛讚讬专讜讙 砖诇讜 讘诪拽专讬诐 讛讗诇讛 讞诇砖 (AUC 0.63).
501
  - **讚讞讬驻讜转 讛讬讗 注谞讬讬谉 住讜讘讬讬拽讟讬讘讬.** 讗驻讬诇讜 砖谞讬 诪讜讚诇讬 讛诪讜专讛 讛住讻讬诪讜 注诐 讛讚讞讬驻讜转 讛诪转讜讻谞谞转 专拽 讘讻-62 注讚 64% 诪讛诪拽专讬诐.
502
  - **爪讬谞讬讜转 讜讗讬专讜谞讬讛** 讻谞专讗讛 谞拽专讗讜转 诪讬诇讜诇讬转. 诇讗 谞诪讚讚.
503
  - **512 讟讜拽谞讬诐** (讘注专讱 300 注讚 400 诪讬诇讬诐 讘注讘专讬转) 诇砖讗诇讛. 讛讜讚注讛 讗专讜讻讛 讬讜转专 谞讞转讻转 诪讛住讜祝 讘诇讬 讗讝讛专讛.