kobkrit commited on
Commit
f370994
·
verified ·
1 Parent(s): f45dd84

model card: Thai showcase poster first, Doom demo after

Browse files
Files changed (1) hide show
  1. README.md +33 -24
README.md CHANGED
@@ -80,34 +80,16 @@ from transformers import AutoModel, AutoTokenizer
80
  model = AutoModel.from_pretrained("iapp/OpenThai-SystemOne", trust_remote_code=True)
81
  ```
82
 
83
- ## Demo: playing Doom, no vision, no text
84
 
85
- ![OpenThai-SystemOne playing Doom](https://huggingface.co/iapp/OpenThai-SystemOne/resolve/main/assets/doom_10s.gif)
86
 
87
- The model controls a Doom marine ([ViZDoom](https://github.com/Farama-Foundation/ViZDoom)) in real time. Every 4 game
88
- tics the engine's symbolic state is serialised to text, for example:
89
 
90
- ```text
91
- health 100/100 | ammo 50 | kills 1
92
- crosshair: empty; nearest visible enemy 39deg to the RIGHT
93
- enemies: Zombieman 5m right -39deg VISIBLE; ChaingunGuy 19m right -24deg; Zombieman 19m ahead -12deg
94
- items: GreenArmor 41m right -18deg
95
- depth ahead: 35/255 (obstacle near)
96
- last actions: ATTACK ATTACK ATTACK ATTACK
97
- ```
98
 
99
- and the model answers two typed questions in one forward pass: a `choice` over the 7 actions (the key that gets
100
- pressed) and a `noul` "is an enemy in the crosshair". About 41 ms per decision on one H100 (~24 decisions/s),
101
- 0 output tokens, and no Doom data in training: everything comes from reading the state and the option descriptions.
102
- It misses shots and dies on hard levels; the point is the speed and the calibrated probabilities, the same mechanics
103
- that route tickets or pick UI elements for an agent.
104
-
105
- Run it on your machine (iApp API key or the local weights, live HUD in Thai or English, optional recording):
106
- **https://github.com/iapp-technology/openthai-systemone-doom**
107
-
108
- ## Thai showcase (real v0.3 outputs, 2026-09-22, via the API)
109
-
110
- Seven everyday Thai tasks, each answered in one forward pass; probabilities are the model's actual output.
111
 
112
  **1. Support ticket triage** — state: *"แอปโอนเงินไม่ได้ตั้งแต่เมื่อคืน ขึ้นว่า error 502 ตลอด ลองลงใหม่แล้วก็ยังไม่หาย รบกวนช่วยด่วนนะครับ ต้องโอนค่าเทอมลูกพรุ่งนี้"*
113
 
@@ -140,6 +122,33 @@ Note on example 1's politeness flag: the ticket uses "รบกวน…นะ
140
  at 99%. Politeness judgement on formal Thai is a known gap and will get a targeted set in v0.4. We keep the miss here
141
  because a showcase that only shows hits is not useful.
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  ## Evaluation
144
 
145
  All numbers are zero-shot: the model sees only the state, the instructions and the option names/descriptions.
 
80
  model = AutoModel.from_pretrained("iapp/OpenThai-SystemOne", trust_remote_code=True)
81
  ```
82
 
83
+ ## Demos
84
 
85
+ ### Thai showcase (real v0.3 outputs via the API)
86
 
87
+ ![OpenThai-SystemOne Thai showcase: 7 everyday Thai tasks with the model's real probabilities](https://huggingface.co/iapp/OpenThai-SystemOne/resolve/main/assets/thai-showcase.png)
 
88
 
89
+ Seven everyday Thai tasks, each answered in one forward pass; probabilities are the model's actual output. Example 1 keeps a real miss (politeness) on purpose.
 
 
 
 
 
 
 
90
 
91
+ <details>
92
+ <summary>Full inputs, questions and outputs of the 7 examples</summary>
 
 
 
 
 
 
 
 
 
 
93
 
94
  **1. Support ticket triage** — state: *"แอปโอนเงินไม่ได้ตั้งแต่เมื่อคืน ขึ้นว่า error 502 ตลอด ลองลงใหม่แล้วก็ยังไม่หาย รบกวนช่วยด่วนนะครับ ต้องโอนค่าเทอมลูกพรุ่งนี้"*
95
 
 
122
  at 99%. Politeness judgement on formal Thai is a known gap and will get a targeted set in v0.4. We keep the miss here
123
  because a showcase that only shows hits is not useful.
124
 
125
+ </details>
126
+
127
+ ### Playing Doom, no vision, no text
128
+
129
+ ![OpenThai-SystemOne playing Doom](https://huggingface.co/iapp/OpenThai-SystemOne/resolve/main/assets/doom_10s.gif)
130
+
131
+ The model controls a Doom marine ([ViZDoom](https://github.com/Farama-Foundation/ViZDoom)) in real time. Every 4 game
132
+ tics the engine's symbolic state is serialised to text, for example:
133
+
134
+ ```text
135
+ health 100/100 | ammo 50 | kills 1
136
+ crosshair: empty; nearest visible enemy 39deg to the RIGHT
137
+ enemies: Zombieman 5m right -39deg VISIBLE; ChaingunGuy 19m right -24deg; Zombieman 19m ahead -12deg
138
+ items: GreenArmor 41m right -18deg
139
+ depth ahead: 35/255 (obstacle near)
140
+ last actions: ATTACK ATTACK ATTACK ATTACK
141
+ ```
142
+
143
+ and the model answers two typed questions in one forward pass: a `choice` over the 7 actions (the key that gets
144
+ pressed) and a `noul` "is an enemy in the crosshair". About 41 ms per decision on one H100 (~24 decisions/s),
145
+ 0 output tokens, and no Doom data in training: everything comes from reading the state and the option descriptions.
146
+ It misses shots and dies on hard levels; the point is the speed and the calibrated probabilities, the same mechanics
147
+ that route tickets or pick UI elements for an agent.
148
+
149
+ Run it on your machine (iApp API key or the local weights, live HUD in Thai or English, optional recording):
150
+ **https://github.com/iapp-technology/openthai-systemone-doom**
151
+
152
  ## Evaluation
153
 
154
  All numbers are zero-shot: the model sees only the state, the instructions and the option names/descriptions.