Text Classification
PyTorch
GLiNER2
Korean
miya
minecraft
agent
korean
mmbert
mineflayer
work-in-progress
Instructions to use snowman6/Miya-0.2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- GLiNER2
How to use snowman6/Miya-0.2 with GLiNER2:
from gliner2 import AutoExtractor extractor = AutoExtractor.from_pretrained("snowman6/Miya-0.2") # Extract entities text = "Apple CEO Tim Cook announced iPhone 15 in Cupertino yesterday." result = extractor.extract_entities(text, ["company", "person", "product", "location"]) print(result) - Notebooks
- Google Colab
- Kaggle
model card
Browse files- .gitattributes +5 -0
- LICENSE-MIYA.md +37 -0
- README.en.md +208 -0
- README.md +223 -0
- charasheet.webp +3 -0
- infographic.en.webp +3 -0
- infographic.webp +3 -0
- miya_icon.webp +0 -0
- qed_example.webp +3 -0
- task_type.webp +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
charasheet.webp filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
infographic.en.webp filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
infographic.webp filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
qed_example.webp filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
task_type.webp filter=lfs diff=lfs merge=lfs -text
|
LICENSE-MIYA.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Miya Adopt Licence 1.0
|
| 2 |
+
|
| 3 |
+
๋ฒ์ ์ผ๋ก Miya์ ๋ชจ๋ธ ๊ฐ์ค์น(์ฒดํฌํฌ์ธํธ)์ ์ฝ๋๋ **Apache-2.0**์ด๊ณ , ๊ฐ์ค์น๋ convaiinnovations/laya-multilingual(**Apache-2.0**)์ ์ธ์ฝ๋์์ ์์ํ๊ณ , ๊ทธ ์ธ์ฝ๋ ์๋ณธ mmBERT-base๋ **MIT**์์.
|
| 4 |
+
์ด๋ฅผ ์์๋ฐ๊ณ , ์ถ๊ฐ์ ์ธ ์กฐํญ ๋ช๊ฐ์ง๋ฅผ ๋ํด์(์์งํ ๋ฑํ ์ค์ํ๊ฑด์์ด์)
|
| 5 |
+
|
| 6 |
+
## ์กฐํญ
|
| 7 |
+
|
| 8 |
+
1. **๋ฏธ์ผ๋ฅผ ๋๋ฌด ๊ดด๋กญํ์ง ๋ง ๊ฒ.**
|
| 9 |
+
๋ชจ๋ธ ๊ธฐ๋ฅ์ค web_fetch๋ฅผ ์ด์ฉํ์ฌ ์ ์๋ฒ์ ๋ฏธ์ผ์ ์ผ๊ธฐ๋ฅผ ๋จ๊ธฐ๊ฒ ํ ๊ฑฐ์์(๊ฑฐ์ง)
|
| 10 |
+
|
| 11 |
+
2. **๋ ๋ฐ์ด๋ ๊ฑธ ๋ง๋ค๋ฉด, ๋ฉ์ผ์ ๋ฃ์ด์ฃผ์ธ์.**
|
| 12 |
+
Miya์ ๋ชจ๋ธ์ด๋ ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ข์ ๊ฒ์ ๋ง๋ค์๋ค๋ฉด ์๋ ค์ฃผ์ธ์.
|
| 13 |
+
์ค๋ ฅ์๋ ์ฌ๋์ ์์ ๊ฑฐ์น ๋ฏธ์ผ๊ฐ ์ด๋๊น์ง ํ ์ ์๋์ง ๊ถ๊ธํ๊ฑฐ๋ ์.
|
| 14 |
+
๋ฉ์ผ: `aa2iswork@gmail.com`
|
| 15 |
+
|
| 16 |
+
3. **์๊ฐ์ ๋ฐ์๋ค๋ฉด, ๋ช
์ํด ์ฃผ์ธ์.**
|
| 17 |
+
Miya์ ํ๋ก์ ํธยท์ํคํ
์ฒยท๋ฐฉ๋ฒ๋ก ์ด ์๊ฐ์ ์ถ์ฒ์๋ค๋ฉด,
|
| 18 |
+
"Miya์์ ์๊ฐ์ ๋ฐ์๋ค"๊ณ ๋ช
์ํด ์ฃผ์ธ์, ๋ฑํ ์ด์ ๋ ์์ด์ ๊ทธ๋ฅ ๊ธฐ๋ถ์ข์๊ฑฐ ๊ฐ๊ฑฐ๋ ์.
|
| 19 |
+
|
| 20 |
+
## ๋ฐ์ดํฐ
|
| 21 |
+
|
| 22 |
+
- Miya ์์ฒด ๋ฐ์ดํฐ๋ **ํฌํจ๋ผ์** (Apache-2.0)
|
| 23 |
+
- `data/gen.py`: ํ์ต ๋ฐ์ดํฐ ์์ฑ๊ธฐ (ํฉ์ฑ 284k, ์ค์๋งยท์ธํฐ๋ท์ฒดยท์ง์ /์กฐ์ธยท์์กดยท์ ๋ฆฌ ๋ฑ). ํ์ต์
(`data/gen/`)์ ์ด๊ฑธ๋ก ์ฌ์์ฑ
|
| 24 |
+
- `eval/real.jsonl`: ์ค์ ์ธ๊ฒ์ ๋ฐํ ํ๊ฐ์
(๋ผ๋ฒจ ์์์
)
|
| 25 |
+
- `bot/replies.json`: ๋ด ๋์ฌ, `qed/*.sql`: QED ์คํค๋ง
|
| 26 |
+
- ์๋ณธ ์๋ฒ ์ฑํ
๋ก๊ทธยท๋ด ๋ก๊ทธยทQED ๊ฒฝํ DB๋ **ํฌํจ๋์ง ์์์** (ํ๋ ์ด์ด ์ฑํ
ํฌํจ)
|
| 27 |
+
- Mojang ๊ฒ์ ๋ฐ์ดํฐ(์์ดํ
์ด๋ฆยท๋ ์ํผยท๋๋กญ ๋ฑ)๋ Miya ๋ฐฐํฌ์ **ํฌํจ๋์ง ์์์**.
|
| 28 |
+
- ๊ณต์ ๋ฐ๋๋ผ ์์
์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ **๋ฐฉ๋ฒ๋ง** `docs/extract.md`์ ์ ์ด ๋ฌ์.
|
| 29 |
+
์ง์ ์๋ฒ/์์
์ ์ฐ๊ฒฐํด์ ์ถ์ถํ๋ ๊ฑฐ์์, ํด๋น ๋ฐ์ดํฐํฉ ์ ์์ ์์ด์ ์๊ธฐ๋ ๋ฒ์ ๋ฌธ์ ๋ ์ฑ
์์ง์ง์์์.
|
| 30 |
+
|
| 31 |
+
## ๋ฒ์ ๊ทผ๊ฑฐ
|
| 32 |
+
|
| 33 |
+
- ๊ฐ์ค์นยท์ฝ๋: Apache-2.0 (LICENSE)
|
| 34 |
+
- ๊ฐ์ค์น ์ถ์ฒ: convaiinnovations/laya-multilingual (Apache-2.0) โ ์ธ์ฝ๋ ๊ฐ์ค์น๋ง ์น๊ณ, ํ๋จ ํค๋๋ ๋ฒ๋ฆฌ๊ณ ์๋ก ๋ง๋ค์์ด์
|
| 35 |
+
- ๋ฒ ์ด์ค ์ธ์ฝ๋: jhu-clsp/mmBERT-base (MIT)
|
| 36 |
+
- Miya ๋ณ๊ฒฝ์ฌํญ: ์ดํ ๊ฐ์ง์น๊ธฐ(256,000โ29,252), GLiNER2์ ํค๋(๋ณด๊ธฐ ์ ์ยท๊ตฌ๊ฐยท์์ดํ
๋งํฌยทColBERTยท๊ฐ์น) ์ ๊ท, ์์ฒด ๋ฐ์ดํฐ๋ก ์ ์ฒด ํ์ธํ๋
|
| 37 |
+
- ๋ด: mineflayerยทmineflayer-pathfinderยทprismarine-viewerยทminecraft-data (MIT)
|
README.en.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<h1 align="center">
|
| 2 |
+
<img src="miya_icon.webp" width="110" align="middle" alt="Miya icon"> Miya-0.2
|
| 3 |
+
</h1>
|
| 4 |
+
|
| 5 |
+
<p align="center">Korean Minecraft AI decision model ยท 139M encoder ยท ~18 ms per pass<br><a href="https://github.com/snowman6-git/Miya">GitHub: bot ยท serving ยท training code</a> ยท <a href="README.md">ํ๊ตญ์ด</a></p>
|
| 6 |
+
|
| 7 |
+
> [!WARNING]
|
| 8 |
+
> **Work in progress.** 0.2 is a research snapshot, not a finished agent.
|
| 9 |
+
> There is no autonomous mode yet, help-request (ask) calibration is unfinished, and some survival decisions are weak ([Limitations](#limitations--work-in-progress)).
|
| 10 |
+
> Weights, label schema and API may change without compatibility in the next version.
|
| 11 |
+
|
| 12 |
+

|
| 13 |
+
|
| 14 |
+
## At a glance
|
| 15 |
+
|
| 16 |
+

|
| 17 |
+
|
| 18 |
+
<details><summary>Korean version</summary>
|
| 19 |
+
|
| 20 |
+

|
| 21 |
+
|
| 22 |
+
</details>
|
| 23 |
+
|
| 24 |
+
## What it does
|
| 25 |
+
|
| 26 |
+
Miya is the **decision model** of a Minecraft AI built on one rule: the model makes every decision, and the bot only executes.
|
| 27 |
+
No regex or if-chains decide anything. Facts such as recipes and ore heights are computed by the planner; the model chooses what to do.
|
| 28 |
+
|
| 29 |
+
- **Casual Korean**: `์ฒ ๊ณก ใฑใฑ` (iron pickaxe, go), `์ฒ ๋` (iron helmet), `์ฒ ์
` (iron set), clipped endings, internet slang
|
| 30 |
+
- **Criticism / advice**: `๊ทธ๊ฑฐ๋ก ํ์ฐธ๊ฑธ๋ฆฌ๊ฒ ๋๋ฐ?` ("that'll take forever"), `๊ทธ๊ฑฐ ๋ง์?` ("is that right?")
|
| 31 |
+
- **Asks when unsure**: if the item link is NULL it asks back, then re-reads the request together with the answer (multi-turn)
|
| 32 |
+
- **Method choice**: picks one of the planner's options after reading QED experience
|
| 33 |
+
- **Survival priority**: from HP, hunger, threats, night and air, picks fight, flee, eat, hide or resume
|
| 34 |
+
|
| 35 |
+
## Architecture
|
| 36 |
+
|
| 37 |
+
### System
|
| 38 |
+
|
| 39 |
+
```
|
| 40 |
+
Player chat โโถ Paper server โโถ bot (TSยทmineflayer) โHTTP JSONโโถ serving (Python stdlib, :8765)
|
| 41 |
+
โ โโ Miya model (this repo, decisions)
|
| 42 |
+
โ โโ planner (facts: recipes, dig time, method options)
|
| 43 |
+
โ โโ mcx.db (game knowledge: ore heights, spawns, value)
|
| 44 |
+
โโ results /qed โโโโโโโโโโโโโถโโ QED DB (experience)
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
| Component | Does | Does not |
|
| 48 |
+
|---|---|---|
|
| 49 |
+
| **Miya model** | understand requests, choose methods, survival priority, inventory tidy | pathfinding, block manipulation |
|
| 50 |
+
| **planner** | goal + state โ up to 6 method options with steps, est. time and risk | choose among options |
|
| 51 |
+
| **QED DB** | record actions and results, inject them as experience text into the next decision | block things by rule |
|
| 52 |
+
| **bot** | walk, dig, craft, fight; report results | decide |
|
| 53 |
+
|
| 54 |
+
### Model
|
| 55 |
+
|
| 56 |
+
**Encoder.** mmBERT, 22 layers, bf16.
|
| 57 |
+
|
| 58 |
+
- Fine-tuned from the encoder weights of [laya-multilingual](https://huggingface.co/convaiinnovations/laya-multilingual); all heads are new.
|
| 59 |
+
- Vocabulary pruned 256,000 โ 29,252, parameters 312M โ 139M.
|
| 60 |
+
- The original tokenizer is used as is; a remap buffer inside the model maps the ids.
|
| 61 |
+
|
| 62 |
+
**Input.** GLiNER2-style schema input. Questions and options are placed in the input itself, so **one encoding pass produces every output**.
|
| 63 |
+
|
| 64 |
+
```
|
| 65 |
+
[CLS] utterance [SEP] stateยทQED [SEP] ([MASK]label)รn [SEP] (question: [MASK]optionโฆ[SEP])รm
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
The vector at each `[MASK]` becomes that option's score, with a softmax per question.
|
| 69 |
+
Because options are input text, heads need no rebuilding when planner options or QED experience sentences change.
|
| 70 |
+
|
| 71 |
+
**Heads.**
|
| 72 |
+
|
| 73 |
+
| Head | Output |
|
| 74 |
+
|---|---|
|
| 75 |
+
| Option scores | act(11) ยท task_type(39) ยท query(18) ยท hint(5) ยท prio(9) ยท method (via) ยท tidy(3) |
|
| 76 |
+
| Span extraction | target ยท count ยท tool ยท person ยท coords ยท place ยท distance (7 kinds, width โค 8) |
|
| 77 |
+
| Item link | span โ name bank of 1,628 (items + mobs + groups/sets/places). Bi-encoder + ColBERT late interaction handles partial matches like `์ฒ ๋`. NULL โ ask back |
|
| 78 |
+
| Pairing | count โ target/tool (`์ฒ 3๊ฐ๋ ์ํ 5๊ฐ`, "3 iron and 5 coal") |
|
| 79 |
+
| Value | per-method log duration ยท success probability |
|
| 80 |
+
|
| 81 |
+
**Labels.** Per-question labels live in `schema.json` (stored in Korean).
|
| 82 |
+
|
| 83 |
+
| Question | Labels |
|
| 84 |
+
|---|---|
|
| 85 |
+
| act (11) | run goal, answer question, ask back, stop, resume, yes, no, small talk, abuse, danger warning, criticism/advice |
|
| 86 |
+
| prio (9) | continue, melee, flee running, flee by pillaring, dig in and hide, eat, resume paused task, swim up, tidy inventory |
|
| 87 |
+
| hint (5) | slow, wrong, short, danger, done_claim |
|
| 88 |
+
| tidy (3) | keep, drop, store in chest |
|
| 89 |
+
|
| 90 |
+
### Task types (TASK_TYPE)
|
| 91 |
+
|
| 92 |
+
Every work block gets its own type (no shared types). The model classifies a request into one of them and the bot runs the matching executor.
|
| 93 |
+
|
| 94 |
+

|
| 95 |
+
|
| 96 |
+
### Planner (facts) vs model (choice)
|
| 97 |
+
|
| 98 |
+
The planner builds method options from these facts:
|
| 99 |
+
|
| 100 |
+
- recipe tree
|
| 101 |
+
- dig time (per tool tier)
|
| 102 |
+
- ore generation heights
|
| 103 |
+
- fuel efficiency
|
| 104 |
+
- crafting tables and furnaces already placed
|
| 105 |
+
|
| 106 |
+
For "์ฒ ๊ณก ๋ง๋ค์ด" (make an iron pickaxe), options look like `[via wood โ stone pickaxe]`, `[via stone pickaxe, reuse furnace]`, `[logs as fuel]`.
|
| 107 |
+
|
| 108 |
+
The training data simulates **hidden truths** that differ from the estimates (no resource, slow, blocked). So the model learns not to trust estimates alone, and to read the QED experience text given with them.
|
| 109 |
+
|
| 110 |
+
## QED โ Quasi-Evolutionary Diary
|
| 111 |
+
|
| 112 |
+
Actions and results accumulate in a DB and go into the next decision **as experience text**. Nothing is blocked by rule; the model reads it and decides.
|
| 113 |
+
|
| 114 |
+
**Record.** The bot sends each finished GOAL to `/qed`.
|
| 115 |
+
|
| 116 |
+
| Table | Contents |
|
| 117 |
+
|---|---|
|
| 118 |
+
| `goals` | request, goal, count, method (via), success, duration ms, failure reason, variables (tools, gear, time held) |
|
| 119 |
+
| `steps` | per step: type ยท target ยท cnt ยท tool ยท ms ยท success ยท failure reason |
|
| 120 |
+
| `deaths` | cause, killer, HP/hunger/night/armor/weapon, position, inventory and its value, GOAL in progress |
|
| 121 |
+
| `placed` | blocks the bot placed (reuse tables, furnaces, chests; tell its chests from others') |
|
| 122 |
+
|
| 123 |
+
**Injection.** The last 20 runs of the same goal with the same method path are summarized and appended to the option text (the text itself is Korean; below: est. 301 s, risk 40%, 5 runs, 80% success, avg 170 s, 1 recent failure):
|
| 124 |
+
|
| 125 |
+
```
|
| 126 |
+
direct | ์์ ์ฐธ๋๋ฌด ์๋ชฉ 1 โ ๋ฒ๋ชฉ ์ฐธ๋๋ฌด ์๋ชฉ 2 โ ์ ์ ์ฐธ๋๋ฌด ํ์ 8 โ โฆ | ์์ 301์ด ์ํ 40% | ๊ฒฝํ 5ํ ์ฑ๊ณต 80% ํ๊ท 170์ด ์ต๊ทผ์คํจ 1ํ(no_ore)
|
| 127 |
+
```
|
| 128 |
+
|
| 129 |
+

|
| 130 |
+
|
| 131 |
+
The web UI's decision panel in a real run. For `์ฒ ๊ณก ๋ง๋ค์ด` (make an iron pickaxe) each of the 7 planner options carries choice probability, estimate, predicted time, risk and QED experience (14 runs, 29% success, recent death); the model picked reusing the already placed crafting table and furnace at 83%.
|
| 132 |
+
|
| 133 |
+
**Attribution.** The choice is made once more without experience. If the result differs it is marked `changed` (experience changed the decision).
|
| 134 |
+
|
| 135 |
+
**Deaths and value.** Recent death causes go into the survival context. Item value (base value + acquisition difficulty) drives recovery: lose one dirt block and it doesn't go back; lose a full diamond set and it does.
|
| 136 |
+
|
| 137 |
+
**Loop guards.** The previous model looped "low HP โ hunt โ no animals โ low HP" and flooded requests. Now:
|
| 138 |
+
|
| 139 |
+
- step retry โค 3, replan โค 5
|
| 140 |
+
- survival decisions are requested only when state changes
|
| 141 |
+
- repeated failures show up in QED, so the same method isn't repeated
|
| 142 |
+
|
| 143 |
+
## Evaluation
|
| 144 |
+
|
| 145 |
+
Compared with LAYA base, keeping planner, QED and bot identical and **swapping only the decisions**.
|
| 146 |
+
|
| 147 |
+
- Real utterances: 488 raw server chat lines, excluded from training
|
| 148 |
+
- dev: 5.8k
|
| 149 |
+
- In-game: 14 scenarios run in parallel on two local servers with the same seed
|
| 150 |
+
|
| 151 |
+
| | Miya-0.2 | LAYA base (zero-shot) |
|
| 152 |
+
|---|---|---|
|
| 153 |
+
| Real-utterance intent (act) | **94.5%** | 11.0% |
|
| 154 |
+
| Task type (type) | **89.7%** | 40.5% |
|
| 155 |
+
| Target item (target) | **87.3%** | 6.2% |
|
| 156 |
+
| Method choice (plan) | **73.6%** | 27.4% |
|
| 157 |
+
| Survival priority (prio) | **86.6%** | 11.5% |
|
| 158 |
+
| In-game, 14 scenarios | **13/14** | 0/14 |
|
| 159 |
+
| Model latency p50 / p95 | 17.8 / 19.7 ms | โ |
|
| 160 |
+
|
| 161 |
+
## Usage
|
| 162 |
+
|
| 163 |
+
```bash
|
| 164 |
+
git clone https://github.com/snowman6-git/Miya miya && cd miya
|
| 165 |
+
hf download snowman6/Miya-0.2 --local-dir ckpt/miya-0.2
|
| 166 |
+
# game data (mc.db, mcx.db) is not included โ extract locally with docs/extract.en.md
|
| 167 |
+
.venv/bin/python model/serve.py # :8765 (SERVE_HOST=0.0.0.0 for bots on other machines)
|
| 168 |
+
curl -s localhost:8765/turn -d '{"utt":"์ฒ ๊ณก ๋ง๋ค์ด","ctx":""}'
|
| 169 |
+
```
|
| 170 |
+
|
| 171 |
+
To run the bot too: `./run.sh host:port`. The server must be in **offline mode** (`online-mode=false`); for an online server use `MC_AUTH=microsoft ./run.sh host:port` to sign in with a Microsoft account (on first run, enter the code from bot.log at microsoft.com/link; the token is cached in `bot/.auth/`). All options: [GitHub README](https://github.com/snowman6-git/Miya/blob/main/README.en.md#server-and-login).
|
| 172 |
+
|
| 173 |
+
| API | Input โ output |
|
| 174 |
+
|---|---|
|
| 175 |
+
| `/turn` | utterance + state โ act, type, query, hint, spans, target item |
|
| 176 |
+
| `/plan` | goal + inventory/placed/surroundings โ options, choice, probabilities, steps (QED injected) |
|
| 177 |
+
| `/prio` | state ctx โ survival priority |
|
| 178 |
+
| `/qed` ยท `/death` | record results and deaths |
|
| 179 |
+
| `/tidy` ยท `/value` ยท `/placed` | inventory tidy, item value, placed blocks |
|
| 180 |
+
|
| 181 |
+
Two files:
|
| 182 |
+
|
| 183 |
+
- `model.pt`: state_dict
|
| 184 |
+
- `schema.json`: labels
|
| 185 |
+
|
| 186 |
+
Model code (`model/miya.py`) is in the [GitHub repo](https://github.com/snowman6-git/Miya).
|
| 187 |
+
|
| 188 |
+
## Limitations ยท work in progress
|
| 189 |
+
|
| 190 |
+
> Still **unfinished**. These are known issues to be addressed in the next versions.
|
| 191 |
+
|
| 192 |
+
- **No autonomous mode**: commands like "์๊ธ์์กฑํด" (be self-sufficient) are classified but not executed. A survive-and-progress loop is planned.
|
| 193 |
+
- **Ask over-calibration**: with mid success-rate experience (e.g. 28% over 14 runs) it picks "ask for help" too often. To be calibrated in 0.3.
|
| 194 |
+
- **Survival weak spots**
|
| 195 |
+
- Low accuracy on flee by pillaring and dig-in-and-hide.
|
| 196 |
+
- The fight/flee boundary sits near pโ0.5; the bot currently softens it by holding decisions briefly.
|
| 197 |
+
- **Joined combat verbs misclassified**: "์ข๋น์ฒ๋ฆฌํด" ("deal with the zombie", written without spaces) is misclassified.
|
| 198 |
+
- **Data bias**: most training data (284k) is synthetic, with little real chat. Korean only.
|
| 199 |
+
- **Fixed environment**: Minecraft 26.1.2 recipes; tasks mineflayer can't do (enchanting, trading, ranged, etc.) are not executed yet.
|
| 200 |
+
- **No compatibility**: weights and schema are not guaranteed compatible across versions.
|
| 201 |
+
|
| 202 |
+
## License
|
| 203 |
+
|
| 204 |
+
Apache-2.0 + [Miya Adopt Licence](LICENSE-MIYA.md) (a non-binding request clause).
|
| 205 |
+
|
| 206 |
+
- Base: laya-multilingual (Apache-2.0) โ mmBERT-base (MIT)
|
| 207 |
+
- No Minecraft game data is included; generate it locally with `docs/extract.en.md` from the repo.
|
| 208 |
+
- Minecraft is a trademark of Mojang Studios; this project is not affiliated with Mojang.
|
README.md
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language: [ko]
|
| 4 |
+
base_model: convaiinnovations/laya-multilingual
|
| 5 |
+
library_name: pytorch
|
| 6 |
+
pipeline_tag: text-classification
|
| 7 |
+
tags: [minecraft, agent, korean, mmbert, gliner2, mineflayer, work-in-progress]
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
<h1 align="center">
|
| 11 |
+
<img src="miya_icon.webp" width="110" align="middle" alt="Miya icon"> Miya-0.2
|
| 12 |
+
</h1>
|
| 13 |
+
|
| 14 |
+
<p align="center">ํ๊ตญ์ด ๋ง์ธํฌ๋ํํธ AI ํ๋จ ๋ชจ๋ธ ยท 139M ์ธ์ฝ๋ ยท 1ํ ์ธ์ฝ๋ฉ ~18ms<br><a href="https://github.com/snowman6-git/Miya">GitHub: ๋ด ยท ์๋น ยท ํ์ต ์ฝ๋</a> ยท <a href="README.en.md">English</a></p>
|
| 15 |
+
|
| 16 |
+
> [!WARNING]
|
| 17 |
+
> **๊ฐ๋ฐ ์ค(WIP) ๋ชจ๋ธ์
๋๋ค.** 0.2๋ ์ฐ๊ตฌ์ฉ ์ค๋
์ท์ด๋ฉฐ ์์ฑ๋ ์์ด์ ํธ๊ฐ ์๋๋๋ค.
|
| 18 |
+
> ์์จ๋ชจ๋๋ ์์ง ์๊ณ , ๋์ ์์ฒญ(ask) ๋ณด์ ์ด ๋ ๋์ผ๋ฉฐ, ์์กด ํ๋จ ์ผ๋ถ๊ฐ ์ฝํฉ๋๋ค([ํ๊ณ](#ํ๊ณ--๋ฏธ์์ฑ)).
|
| 19 |
+
> ๊ฐ์ค์นยท๋ผ๋ฒจ ์คํค๋งยทAPI๋ ๋ค์ ๋ฒ์ ์์ ํธํ ์์ด ๋ฐ๋ ์ ์์ต๋๋ค.
|
| 20 |
+
>
|
| 21 |
+
> **Work in progress.** A research snapshot, not a finished agent. Weights, label schema and API may change without notice.
|
| 22 |
+
|
| 23 |
+
Korean-first Minecraft agent decision model. One encoder pass (~18 ms) gives intent, task type, target item and count spans, method choice, survival priority and inventory tidy decisions. The mineflayer bot only executes. Full English card: [README.en.md](README.en.md).
|
| 24 |
+
|
| 25 |
+

|
| 26 |
+
|
| 27 |
+
## ํ๋์ ๋ณด๊ธฐ
|
| 28 |
+
|
| 29 |
+

|
| 30 |
+
|
| 31 |
+
<details><summary>English version</summary>
|
| 32 |
+
|
| 33 |
+

|
| 34 |
+
|
| 35 |
+
</details>
|
| 36 |
+
|
| 37 |
+
## ๋ฌด์์ ํ๋
|
| 38 |
+
|
| 39 |
+
Miya๋ "๋ชจ๋ ํ๋จ์ ๋ชจ๋ธ์ด ํ๊ณ , ๋ด์ ์คํ๋ง ํ๋ค"๋ ์์น์ผ๋ก ๋ง๋ค๊ณ ์๋ ๋ง์ธํฌ๋ํํธ AI์ **ํ๋จ ๋ชจ๋ธ**์
๋๋ค.
|
| 40 |
+
์ ๊ท์์ด๋ ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ๋จํ์ง ์์ต๋๋ค. ๋ ์ํผ๋ ๊ด์ ๋์ด ๊ฐ์ ์ฌ์ค์ planner๊ฐ ๊ณ์ฐํ๊ณ , ๋ฌด์์ ํ ์ง๋ ๋ชจ๋ธ์ด ๊ณ ๋ฆ
๋๋ค.
|
| 41 |
+
|
| 42 |
+
- **ํ๊ตญ์ด ๊ตฌ์ด์ฒด ์ธ์**: `์ฒ ๊ณก ใฑใฑ`(์ฒ ๊ณก๊ดญ์ด), `์ฒ ๋`(์ฒ ํฌ๊ตฌ), `์ฒ ์
`(์ฒ ์ธํธ), ์์ด์ฒด, ์ธํฐ๋ท์ฒด
|
| 43 |
+
- **์ง์ ยท์กฐ์ธ ๋ถ๋ฅ**: `๊ทธ๊ฑฐ๋ก ํ์ฐธ๊ฑธ๋ฆฌ๊ฒ ๋๋ฐ?`, `๊ทธ๊ฑฐ ๋ง์?`
|
| 44 |
+
- **๋ชจ๋ฅด๋ฉด ๋๋ฌป๊ธฐ**: ์์ดํ
๋งํฌ๊ฐ NULL์ด๋ฉด ๋๋ฌป๊ณ , ๋ต๊น์ง ํฉ์ณ ๋ค์ ์ธ์ํฉ๋๋ค(๋ฉํฐํด)
|
| 45 |
+
- **๋ฐฉ๋ฒ ์ ํ**: planner๊ฐ ๋ง๋ ํ๋ณด ์ค QED ๊ฒฝํ์ ๋ณด๊ณ ํ๋๋ฅผ ๊ณ ๋ฆ
๋๋ค
|
| 46 |
+
- **์์กด ์ฐ์ ์์**: ์ฒด๋ ฅยท๋ฐฐ๊ณ ํยท์ํยท๋ฐคยท์ฐ์๋ฅผ ๋ณด๊ณ ์ ํฌยท๋๋งยท๋จน๊ธฐยท์จ๊ธฐยท์ฌ๊ฐ ์ค ํ๋๋ฅผ ๊ณ ๋ฆ
๋๋ค
|
| 47 |
+
|
| 48 |
+
## ๊ตฌ์กฐ
|
| 49 |
+
|
| 50 |
+
### ์ ์ฒด ์์คํ
|
| 51 |
+
|
| 52 |
+
```
|
| 53 |
+
ํ๋ ์ด์ด ์ฑํ
โโถ Paper ์๋ฒ โโถ ๋ด(TSยทmineflayer) โHTTP JSONโโถ ์๋น(Python stdlib, :8765)
|
| 54 |
+
โ โโ Miya ๋ชจ๋ธ (์ด ์ ์ฅ์, ํ๋จ)
|
| 55 |
+
โ โโ planner (์ฌ์ค: ๋ ์ํผยท์ฑ๊ตด์๊ฐยท๋ฐฉ๋ฒ ํ๋ณด)
|
| 56 |
+
โ โโ mcx.db (๋งํฌ ์ง์: ๊ด์ ๋์ดยท์คํฐยท๊ฐ์น)
|
| 57 |
+
โโ ์คํ ๊ฒฐ๊ณผ /qed โโโโโโโโโโโถโโ QED DB (๊ฒฝํ)
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
| ๊ตฌ์ฑ์์ | ํ๋ ์ผ | ํ์ง ์๋ ์ผ |
|
| 61 |
+
|---|---|---|
|
| 62 |
+
| **Miya ๋ชจ๋ธ** | ๋ฐํ ์ดํด, ๋ฐฉ๋ฒ ์ ํ, ์์กด ์ฐ์ ์์, ์ธ๋ฒค ์ ๋ฆฌ | ๊ธธ์ฐพ๊ธฐ, ๋ธ๋ญ ์กฐ์ |
|
| 63 |
+
| **planner** | ๋ชฉํ + ์ํ โ ๋ฐฉ๋ฒ ํ๋ณด(์ต๋ 6๊ฐ)์ ๋จ๊ณ์ดยท์์ ์๊ฐยท์ํ | ํ๋ณด ์ค ์ ํ |
|
| 64 |
+
| **QED DB** | ํ๋๊ณผ ๊ฒฐ๊ณผ ๊ธฐ๋ก, ๋ค์ ํ๋จ์ ๊ฒฝํ ํ
์คํธ๋ก ์ฃผ์
| ๊ท์น์ผ๋ก ์ฐจ๋จ |
|
| 65 |
+
| **๋ด** | ๊ฑท๊ธฐยท์บ๊ธฐยท์ ์ยท์ ํฌ ์คํ, ๊ฒฐ๊ณผ ๋ณด๊ณ | ํ๋จ |
|
| 66 |
+
|
| 67 |
+
### ๋ชจ๋ธ
|
| 68 |
+
|
| 69 |
+
**์ธ์ฝ๋.** mmBERT 22์ธต, bf16.
|
| 70 |
+
|
| 71 |
+
- [laya-multilingual](https://huggingface.co/convaiinnovations/laya-multilingual)์ ์ธ์ฝ๋ ๊ฐ์ค์น์์ ํ์ธํ๋ํ๊ณ , ํค๋๋ ๋ชจ๋ ์๋ก ๋ง๋ค์์ต๋๋ค.
|
| 72 |
+
- ์ดํ๋ฅผ ๊ฐ์ง์น๊ธฐํด์ 256,000 โ 29,252, ํ๋ผ๋ฏธํฐ๋ฅผ 312M โ 139M์ผ๋ก ์ค์์ต๋๋ค.
|
| 73 |
+
- ํ ํฌ๋์ด์ ๋ ์๋ณธ์ ๊ทธ๋๋ก ์ฐ๊ณ , ๋ชจ๋ธ ์์ remap ๋ฒํผ๊ฐ id๋ฅผ ๋ฐ๊ฟ๋๋ค.
|
| 74 |
+
|
| 75 |
+
**์
๋ ฅ.** GLiNER2์ ์คํค๋ง ์
๋ ฅ์
๋๋ค. ์ง๋ฌธ๊ณผ ๋ณด๊ธฐ๋ฅผ ์
๋ ฅ ์์ ํจ๊ป ๋ฃ์ด **ํ ๋ฒ ์ธ์ฝ๋ฉ์ผ๋ก ๋ชจ๋ ์ถ๋ ฅ**์ ๋
๋๋ค.
|
| 76 |
+
|
| 77 |
+
```
|
| 78 |
+
[CLS] ๋ฐํ [SEP] ์ํยทQED [SEP] ([MASK]๋ผ๋ฒจ)รn [SEP] (๋ฌธํญ: [MASK]๋ณด๊ธฐโฆ[SEP])รm
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
๊ฐ `[MASK]` ์์น์ ๋ฒกํฐ๊ฐ ๊ทธ ๋ณด๊ธฐ์ ์ ์๊ฐ ๋๊ณ , ๋ฌธํญ๋ณ๋ก softmax๋ฅผ ์ทจํฉ๋๋ค.
|
| 82 |
+
๋ณด๊ธฐ๊ฐ ์
๋ ฅ ํ
์คํธ์ด๊ธฐ ๋๋ฌธ์ planner ํ๋ณด๋ QED ๊ฒฝํ ๋ฌธ์ฅ์ด ๋ฐ๋์ด๋ ํค๋๋ฅผ ๋ค์ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
|
| 83 |
+
|
| 84 |
+
**ํค๋.**
|
| 85 |
+
|
| 86 |
+
| ํค๋ | ์ถ๋ ฅ |
|
| 87 |
+
|---|---|
|
| 88 |
+
| ๋ณด๊ธฐ ์ ์ | act(11) ยท task_type(39) ยท query(18) ยท hint(5) ยท prio(9) ยท ๋ฐฉ๋ฒ(via) ยท tidy(3) |
|
| 89 |
+
| ๊ตฌ๊ฐ ์ถ์ถ | ๋์ ยท ๊ฐ์ ยท ๋๊ตฌ ยท ์ฌ๋ ยท ์ขํ ยท ์ฅ์ ยท ๊ฑฐ๋ฆฌ (7์ข
, ํญ โค 8) |
|
| 90 |
+
| ์์ดํ
๋งํฌ | ๊ตฌ๊ฐ โ ์ด๋ฆ bank 1,628๊ฐ (์์ดํ
+ ๋ชน + ๊ทธ๋ฃนยท์ธํธยท์ฅ์). bi-encoder + ColBERT late interaction์ผ๋ก `์ฒ ๋` ๊ฐ์ ๋ถ๋ถ์ผ์น ์ฒ๋ฆฌ. NULL์ด๋ฉด ๋๋ฌป๊ธฐ |
|
| 91 |
+
| ์ง | ๊ฐ๏ฟฝ๏ฟฝ โ ๋์ยท๋๊ตฌ ์ฐ๊ฒฐ (`์ฒ 3๊ฐ๋ ์ํ 5๊ฐ`) |
|
| 92 |
+
| ๊ฐ์น | ๋ฐฉ๋ฒ๋ณ log ์์์๊ฐ ยท ์ฑ๊ณตํ๋ฅ |
|
| 93 |
+
|
| 94 |
+
**๋ผ๋ฒจ.** ๋ฌธํญ๋ณ ๋ผ๋ฒจ์ `schema.json`์ ์์ต๋๋ค.
|
| 95 |
+
|
| 96 |
+
| ๋ฌธํญ | ๋ผ๋ฒจ |
|
| 97 |
+
|---|---|
|
| 98 |
+
| act (11) | ๋ชฉํ ์คํ, ์ง๋ฌธ ๋ตํ๊ธฐ, ๋๋ฌป๊ธฐ, ๋ฉ์ถค, ์ฌ๊ฐ, ๊ธ์ ๋๋ต, ๋ถ์ ๋๋ต, ์ก๋ด, ์์ค, ์ํ ๊ฒฝ๊ณ , ์ง์ ยท์กฐ์ธ |
|
| 99 |
+
| prio (9) | ๊ณ์ ์งํ, ๊ทผ์ ์ ํฌ, ๋ฌ๋ ค์ ๋๋ง, ๋ธ๋ญ ์์ ๋๋ง, ๊ตด ํ๊ณ ์จ๊ธฐ, ๋จน๊ธฐ, ๋ฉ์ถ ์์
์ฌ๊ฐ, ๋ฌผ ์๋ก ์ฌ๋ผ๊ฐ๊ธฐ, ์ธ๋ฒค ์ ๋ฆฌ |
|
| 100 |
+
| hint (5) | slow, wrong, short, danger, done_claim |
|
| 101 |
+
| tidy (3) | ์ ์ง, ๋ฒ๋ฆฌ๊ธฐ, ์์์ ๋ณด๊ด |
|
| 102 |
+
|
| 103 |
+
### ์์
์ข
๋ฅ (TASK_TYPE)
|
| 104 |
+
|
| 105 |
+
์์
๋ธ๋ญ๋ง๋ค ๊ฐ๋ณ ํ์
์ ๋ถ์ฌํฉ๋๋ค(๊ณตํต ํ์
์์). ๋ชจ๋ธ์ด ๋ฐํ๋ฅผ ์ด ์ค ํ๋๋ก ๋ถ๋ฅํ๋ฉด ๋ด์ด ํด๋น ์คํ๊ธฐ๋ฅผ ๋๋ฆฝ๋๋ค.
|
| 106 |
+
|
| 107 |
+

|
| 108 |
+
|
| 109 |
+
### planner (์ฌ์ค) vs ๋ชจ๋ธ (์ ํ)
|
| 110 |
+
|
| 111 |
+
planner๋ ๋ค์ ์ฌ์ค๋ก ๋ฐฉ๋ฒ ํ๋ณด๋ฅผ ๋ง๋ญ๋๋ค.
|
| 112 |
+
|
| 113 |
+
- ๋ ์ํผ ํธ๋ฆฌ
|
| 114 |
+
- ์ฑ๊ตด ์๊ฐ(๋๊ตฌ ํฐ์ด๋ณ)
|
| 115 |
+
- ๊ด์ ์์ฑ ๋์ด
|
| 116 |
+
- ์ฐ๋ฃ ํจ์จ
|
| 117 |
+
- ์ด๋ฏธ ๋์ ์์
๋ยทํ๋ก
|
| 118 |
+
|
| 119 |
+
์๋ฅผ ๋ค์ด "์ฒ ๊ณก ๋ง๋ค์ด"์๋ `[๋๋ฌด๊ณกโ๋๊ณก ๊ฒฝ์ ]`, `[๋๊ณก ๊ฒฝ์ , ํ๋ก ์ฌ์ฌ์ฉ]`, `[์ฐ๋ฃ ์๋ชฉ]` ๊ฐ์ ํ๋ณด๊ฐ ๋์ต๋๋ค.
|
| 120 |
+
|
| 121 |
+
ํ์ต ๋ฐ์ดํฐ์์๋ ์ถ์ ์น์ ๋ค๋ฅธ **์จ์ ์ฐธ๊ฐ**(์์ ์์, ๋๋ฆผ, ๋งํ)์ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค. ๊ทธ๋์ ๋ชจ๋ธ์ ์ถ์ ์น๋ง ๋ฏฟ์ง ์๊ณ , ํจ๊ป ์ฃผ์ด์ง QED ๊ฒฝํ ํ
์คํธ๋ฅผ ์ฝ๊ณ ํ๋จํ๋ ๋ฒ์ ๋ฐฐ์๋๋ค.
|
| 122 |
+
|
| 123 |
+
## QED โ Quasi-Evolutionary Diary
|
| 124 |
+
|
| 125 |
+
ํ๋๊ณผ ๊ฒฐ๊ณผ๋ฅผ DB์ ์์ ๋ค์ ํ๋จ์ **๊ฒฝํ ํ
์คํธ๋ก ๋ฃ์ต๋๋ค**. ๊ท์น์ผ๋ก ๋ง์ง ์๊ณ ๋ชจ๋ธ์ด ์ฝ๊ณ ํ๋จํฉ๋๋ค.
|
| 126 |
+
|
| 127 |
+
**๊ธฐ๋ก.** ๋ด์ GOAL์ด ๋๋ ๋๋ง๋ค `/qed`๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋
๋๋ค.
|
| 128 |
+
|
| 129 |
+
| ํ | ๋ด์ฉ |
|
| 130 |
+
|---|---|
|
| 131 |
+
| `goals` | ์์ฒญ, ๋ชฉํ, ๊ฐ์, ๋ฐฉ๋ฒ(via), ์ฑ๊ณต, ์์ ms, ์คํจ ์ฌ์ , ๋ณ์(๋ณด์ ๋๊ตฌยท์ฅ๋นยท์๊ฐ) |
|
| 132 |
+
| `steps` | ๋จ๊ณ๋ณ type ยท target ยท cnt ยท ๋๊ตฌ ยท ms ยท ์ฑ๊ณต ยท ์คํจ ์ฌ์ |
|
| 133 |
+
| `deaths` | ์ฌ๋ง ์์ธ, ๊ฐํด์, ์ฒด๋ ฅยท๋ฐฐ๊ณ ํยท๋ฐคยท๋ฐฉ์ดยท๋ฌด๊ธฐ, ์์น, ์ธ๋ฒค๊ณผ ๊ทธ ๊ฐ์น, ์งํ ์ค์ด๋ GOAL |
|
| 134 |
+
| `placed` | ๋ด์ด ์ค์นํ ๋ธ๋ญ (์์
๋ยทํ๋กยท์์ ์ฌ์ฌ์ฉ, ๋จ์ ์์์ ๊ตฌ๋ถ) |
|
| 135 |
+
|
| 136 |
+
**์ฃผ์
.** ๊ฐ์ goal์์ ๋ฐฉ๋ฒ ๊ฒฝ๋ก๊ฐ ๊ฐ์ ์ต๊ทผ 20๊ฑด์ ์์ฝํด ๋ณด๊ธฐ ํ
์คํธ ๋ค์ ๋ถ์
๋๋ค.
|
| 137 |
+
|
| 138 |
+
```
|
| 139 |
+
direct | ์์ ์ฐธ๋๋ฌด ์๋ชฉ 1 โ ๋ฒ๋ชฉ ์ฐธ๋๋ฌด ์๋ชฉ 2 โ ์ ์ ์ฐธ๋๋ฌด ํ์ 8 โ โฆ | ์์ 301์ด ์ํ 40% | ๊ฒฝํ 5ํ ์ฑ๊ณต 80% ํ๊ท 170์ด ์ต๊ทผ์คํจ 1ํ(no_ore)
|
| 140 |
+
```
|
| 141 |
+
|
| 142 |
+

|
| 143 |
+
|
| 144 |
+
์ค์ WEBUI ํ๋จ ๊ทผ๊ฑฐ ํ๋ฉด. `์ฒ ๊ณก ๋ง๋ค์ด` โ planner ํ๋ณด 7๊ฐ๋ง๋ค ์ ํ ํ๋ฅ ยท์ถ์ ยท์์ธก ์๊ฐยท์ํยทQED ๊ฒฝํ(14ํ, ์ฑ๊ณต 29%, ์ต๊ทผ ์ฌ๋ง)์ด ๋ถ๊ณ , ๋ชจ๋ธ์ด ์ด๋ฏธ ๋์ ์์
๋ยทํ๋ก๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ 83%๋ก ๊ณจ๋์ต๋๋ค.
|
| 145 |
+
|
| 146 |
+
**๋ฐํ ํ๊ธฐ.** ๊ฒฝํ์ ๋บ ์ํ๋ก ํ ๋ฒ ๋ ์ ํํด ๋ด
๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๋ฉด `changed`๋ก ํ์ํฉ๋๋ค(๊ฒฝํ์ด ํ๋จ์ ๋ฐ๊ฟจ๋ค๋ ๋ป).
|
| 147 |
+
|
| 148 |
+
**์ฌ๋งยท๊ฐ์น.** ์ต๊ทผ ์ฌ๋ง ์์ธ์ ์์กด ํ๋จ ctx์ ๋ค์ด๊ฐ๋๋ค. ์์ดํ
๊ฐ์น(๊ธฐ๋ณธ๊ฐ + ํ๋ ๋์ด๋)๋ ํ์ ํ๋จ์ ์๋๋ค. ์๋ฅผ ๋ค์ด ํ ํ๋๋ฅผ ์์์ผ๋ฉด ๊ตณ์ด ๊ฐ์ง ์๊ณ , ๋ค์ด์ ํ์
์ด๋ฉด ๋์ฐพ์ผ๋ฌ ๊ฐ๋๋ค.
|
| 149 |
+
|
| 150 |
+
**๋ฌดํ๋ฃจํ ์ฐจ๋จ.** ์ด์ ๋ชจ๋ธ์ "์ฒด๋ ฅ ์์ โ ์ฌ๋ฅ โ ๋๋ฌผ ์์ โ ์ฒด๋ ฅ ์์"์ ๋ฐ๋ณตํ๋ฉฐ ์์ฒญ์ด ํญ์ฃผํ์ต๋๋ค. ์ง๊ธ์ ๋ค์ ์ฅ์น๋ก ๋ง์ต๋๋ค.
|
| 151 |
+
|
| 152 |
+
- ๋จ๊ณ ์ฌ์๋ โค 3, ์ฌ๊ณํ โค 5
|
| 153 |
+
- ์์กด ํ๋จ์ ์ํ๊ฐ ๋ฐ๋ ๋๋ง ์์ฒญ
|
| 154 |
+
- ์ฐ์ ์คํจ๊ฐ QED๋ก ๋๋ฌ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ณตํ์ง ์์
|
| 155 |
+
|
| 156 |
+
## ํ๊ฐ
|
| 157 |
+
|
| 158 |
+
LAYA base์ ๋น๊ตํ์ต๋๋ค. plannerยทQEDยท๋ด์ ๊ฐ๊ฒ ๋๊ณ **ํ๋จ๋ง ๊ต์ฒด**ํ์ต๋๋ค.
|
| 159 |
+
|
| 160 |
+
- ์ค๋ฐํ: ์๋ฒ ์ฑํ
์๋ฌธ 488๊ฑด, ํ์ต์์ ์ ์ธ
|
| 161 |
+
- dev: 5.8k
|
| 162 |
+
- ์ธ๊ฒ์: ๊ฐ์ ์๋์ ๋ก์ปฌ ์๋ฒ 2๋์์ 14๊ฐ ์๋๋ฆฌ์ค๋ฅผ ๋ณ๋ ฌ๋ก ์คํ
|
| 163 |
+
|
| 164 |
+
| | Miya-0.2 | LAYA base (zero-shot) |
|
| 165 |
+
|---|---|---|
|
| 166 |
+
| ์ค๋ฐํ ์๋ (act) | **94.5%** | 11.0% |
|
| 167 |
+
| ์์
์ข
๋ฅ (type) | **89.7%** | 40.5% |
|
| 168 |
+
| ๋์ ์์ดํ
(target) | **87.3%** | 6.2% |
|
| 169 |
+
| ๋ฐฉ๋ฒ ์ ํ (plan) | **73.6%** | 27.4% |
|
| 170 |
+
| ์์กด ์ฐ์ ์์ (prio) | **86.6%** | 11.5% |
|
| 171 |
+
| ์ธ๊ฒ์ 14 ์๋๋ฆฌ์ค | **13/14** | 0/14 |
|
| 172 |
+
| ๋ชจ๋ธ ์ง์ฐ p50 / p95 | 17.8 / 19.7 ms | โ |
|
| 173 |
+
|
| 174 |
+
## ์ฌ์ฉ
|
| 175 |
+
|
| 176 |
+
```bash
|
| 177 |
+
git clone https://github.com/snowman6-git/Miya miya && cd miya
|
| 178 |
+
hf download snowman6/Miya-0.2 --local-dir ckpt/miya-0.2
|
| 179 |
+
# ๊ฒ์ ๋ฐ์ดํฐ(mc.db, mcx.db)๋ ํฌํจ๋์ง ์์ โ ์ ์ฅ์ docs/extract.md ๋ก ๋ก์ปฌ ์ถ์ถ
|
| 180 |
+
.venv/bin/python model/serve.py # :8765 (๋ค๋ฅธ PC ๋ด์ด๋ฉด SERVE_HOST=0.0.0.0)
|
| 181 |
+
curl -s localhost:8765/turn -d '{"utt":"์ฒ ๊ณก ๋ง๋ค์ด","ctx":""}'
|
| 182 |
+
```
|
| 183 |
+
|
| 184 |
+
๋ด๊น์ง ๋์ฐ๋ ค๋ฉด `./run.sh host:port`. ๋ด์ด ๋ถ์ ์๋ฒ๋ **์คํ๋ผ์ธ ๋ชจ๋**(`online-mode=false`)์ฌ์ผ ํ๊ณ , ์ ํ ์๋ฒ๋ผ๋ฉด `MC_AUTH=microsoft ./run.sh host:port` ๋ก MS ๊ณ์ ๋ก๊ทธ์ธ(์ฒซ ์คํ์ bot.log ์ ์ฝ๋๋ฅผ microsoft.com/link ์ ์
๋ ฅ, ํ ํฐ์ `bot/.auth/` ์บ์). ์ต์
์ ์ฒด๋ [GitHub README](https://github.com/snowman6-git/Miya#์๋ฒ-์ ์--๋ก๊ทธ์ธ).
|
| 185 |
+
|
| 186 |
+
> The bot needs an **offline-mode** server (`online-mode=false`), or Microsoft login with `MC_AUTH=microsoft` (enter the device code from bot.log at microsoft.com/link).
|
| 187 |
+
|
| 188 |
+
| API | ์
๋ ฅ โ ์ถ๋ ฅ |
|
| 189 |
+
|---|---|
|
| 190 |
+
| `/turn` | ๋ฐํ + ์ํ โ act, type, query, hint, ๊ตฌ๊ฐ, ๋ชฉํ ์์ดํ
|
|
| 191 |
+
| `/plan` | ๋ชฉํ + ์ธ๋ฒคยท์ค์น๋ฌผยท์ฃผ๋ณ โ ํ๋ณด, ์ ํ, ํ๋ฅ , ๋จ๊ณ (QED ์๋ ์ฃผ์
) |
|
| 192 |
+
| `/prio` | ์ํ ctx โ ์์กด ์ฐ์ ์์ |
|
| 193 |
+
| `/qed` ยท `/death` | ๊ฒฐ๊ณผยท์ฌ๋ง ๊ธฐ๋ก |
|
| 194 |
+
| `/tidy` ยท `/value` ยท `/placed` | ์ธ๋ฒค ์ ๋ฆฌ, ์์ดํ
๊ฐ์น, ์ค์น๋ฌผ |
|
| 195 |
+
|
| 196 |
+
ํ์ผ์ ๋ ๊ฐ์
๋๋ค.
|
| 197 |
+
|
| 198 |
+
- `model.pt`: state_dict
|
| 199 |
+
- `schema.json`: ๋ผ๋ฒจ
|
| 200 |
+
|
| 201 |
+
๋ชจ๋ธ ์ฝ๋(`model/miya.py`)๋ [GitHub ์ ์ฅ์](https://github.com/snowman6-git/Miya)์ ์์ต๋๋ค.
|
| 202 |
+
|
| 203 |
+
## ํ๊ณ ยท ๋ฏธ์์ฑ
|
| 204 |
+
|
| 205 |
+
> ์์ง **๋ฏธ์์ฑ**์
๋๋ค. ์๋ ํญ๋ชฉ์ ์๋ ค์ง ๋ฌธ์ ์ด๋ฉฐ ๋ค์ ๋ฒ์ ์์ ๋ค๋ฃน๋๋ค.
|
| 206 |
+
|
| 207 |
+
- **์์จ๋ชจ๋ ์์**: "์๊ธ์์กฑํด" ๊ฐ์ ๋ช
๋ น์ ๋ถ๋ฅ๋ง ๋๊ณ ์คํ๋์ง ์์ต๋๋ค. ์์กดยท๋ฐ์ ๋ฃจํ๋ฅผ ๊ณํ ์ค์
๋๋ค.
|
| 208 |
+
- **ask ๊ณผ๋ณด์ **: ์ฑ๊ณต๋ฅ ์ด ์ค๊ฐ์ธ ๊ฒฝํ(์: 14ํ ์ค 28%)์์ ๋์ ์์ฒญ์ ๊ณผํ๊ฒ ๊ณ ๋ฆ
๋๋ค. 0.3์์ ๋ณด์ ํ ์์ ์
๋๋ค.
|
| 209 |
+
- **์์กด ํ๋จ ์ฝ์ **
|
| 210 |
+
- ๋ธ๋ญ ์์ ๋๋ง, ๊ตด ํ๊ณ ์จ๊ธฐ์ ์ ๋ต๋ฅ ์ด ๋ฎ์ต๋๋ค.
|
| 211 |
+
- ์ ํฌ์ ๋๋ง์ ๊ฒฝ๊ณ๊ฐ pโ0.5๋ก ์ ๋งคํฉ๋๋ค. ์ง๊ธ์ ๋ด์ ๊ฒฐ์ ์ ์ง ์๊ฐ์ผ๋ก ์ํํ๊ณ ์์ต๋๋ค.
|
| 212 |
+
- **๋ถ์ฌ์ด ์ ํฌ ๋์ฌ ์ค๋ถ๋ฅ**: "์ข๋น์ฒ๋ฆฌํด"๋ฅผ ์๋ชป ๋ถ๋ฅํฉ๋๋ค.
|
| 213 |
+
- **๋ฐ์ดํฐ ํธํฅ**: ํ์ต ๋ฐ์ดํฐ ๋๋ถ๋ถ(284k)์ด ํฉ์ฑ์ด๊ณ ์ค๋ฐํ๋ ์๋์
๋๋ค. ํ๊ตญ์ด ์ ์ฉ์
๋๋ค.
|
| 214 |
+
- **ํ๊ฒฝ ๊ณ ์ **: Minecraft 26.1.2 ๋ ์ํผ ๊ธฐ์ค์ด๊ณ , mineflayer๋ก ๋ถ๊ฐ๋ฅํ ์์
(์ธ์ฑํธยท๊ฑฐ๋ยท์๊ฑฐ๋ฆฌ ๋ฑ)์ ์์ง ์คํํ์ง ์์ต๋๋ค.
|
| 215 |
+
- **ํธํ์ฑ ์์**: ๋ฒ์ ๊ฐ ๊ฐ์ค์นยท์คํค๋ง ํธํ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
|
| 216 |
+
|
| 217 |
+
## ๋ผ์ด์ ์ค
|
| 218 |
+
|
| 219 |
+
Apache-2.0 + [Miya Adopt Licence](LICENSE-MIYA.md) (๊ฐ์ ์ฑ ์๋ ๋ถํ ์กฐํญ).
|
| 220 |
+
|
| 221 |
+
- ๋ฒ ์ด์ค: laya-multilingual (Apache-2.0) โ mmBERT-base (MIT)
|
| 222 |
+
- Minecraft ๊ฒ์ ๋ฐ์ดํฐ๋ ํฌํจํ์ง ์์ต๋๋ค. ์ ์ฅ์์ `docs/extract.md`๋ก ๋ก์ปฌ์์ ์์ฑํฉ๋๋ค.
|
| 223 |
+
- Minecraft๋ Mojang Studios์ ์ํ์ด๋ฉฐ, ์ด ํ๋ก์ ํธ๋ Mojang๊ณผ ๋ฌด๊ดํฉ๋๋ค.
|
charasheet.webp
ADDED
|
Git LFS Details
|
infographic.en.webp
ADDED
|
Git LFS Details
|
infographic.webp
ADDED
|
Git LFS Details
|
miya_icon.webp
ADDED
|
|
qed_example.webp
ADDED
|
Git LFS Details
|
task_type.webp
ADDED
|
Git LFS Details
|