charlm-agent

5000 万パラメータ(52.6M)の文字単位の小さな言語モデルです。2 つのことができます。

  1. 役になりきった会話:短い人物設定(カード)を渡すと、その人物として雑談や簡単な案内に答えます。
  2. ゲームの行動選び:ゲームが「目標・状態・使える操作」を送ると、目標に近づく操作をタグで返します。

CPU だけで動きます。4bit 版は 33MB です。

どれを使えばいいか

フォルダ 中身 使いどころ
agent6/ 会話 + 行動選び(最新) まずはこれ。ゲームに組み込むなら model_4bit.pt
npc4/ 会話だけに絞った版 行動選びが要らず、会話の質を優先したいとき
base/ 事前学習だけの土台 自分で追加学習したいとき

各フォルダの model_final.pt は通常版(210MB)、model_4bit.pt は 4bit 量子化版(33MB)です。

使い方

charlm_run.py と charlm_fold.py を同じ場所に置いて使います(PyTorch のみ必要)。

from charlm_run import Model
m = Model("agent6/model_4bit.pt")          # GPU があれば GPU、なければ CPU

# 会話: 最初のユーザー発話の前にカードを置き、空行で区切る
card = "You are Mira, a farmer in the village of Elm. You are cheerful and practical."
print(m.reply([card + "\n\nHi! What do you grow here?"], temp=0.7))

# 行動選び: GOAL / OPS / STATE を毎ターン送る。答えは {考えの筋道}<操作>
turn = ("GOAL: life >= 1\n"
        "OPS: <a> life+1 gold-3 | <b> gold+2 (needs gold>=1) | <c> life-1\n"
        "STATE: life=0 gold=7")
print(m.reply([turn], n=260))              # -> {life 0 >=1 up. up: a+1. a ok}<a>

reply(turns) の turns は、ユーザー → モデル → ユーザー … の順に並べた文字列のリストです。

行動選びの形式

  • GOAL: 変数 比較 数:達成すべき条件(>= <= > < ==、and で 2 つまで)
  • OPS: <名前> 変数+数 変数-数 (needs 変数>=数) | ...:使える操作。名前は自由(学習で見ていない名前でも読めます)
  • STATE: 変数=数 ...:今の状態。目標の変数を先頭に置いてください
  • 答えの最後の <名前> を実行し、新しい STATE を送る。目標を満たすと <none> が返ります

ゲームに組み込むときのコツ

  • 目標は 1 つずつ渡す。「道具を作ってから売る」のような段取りはゲーム側で小目標に分けると、ほぼ確実に動きます。
  • 使えない操作は一覧から外す。返ってきたタグがおかしければ、その操作を外して聞き直す。
  • 例:village.py(3 人の村人が市場を共有して暮らすシミュレーション)。小目標に分けた形で、4 日間・48 回の判断でゲームに弾かれた回数は 0、全員が所持金を増やしました。

成績(agent6)

行動選び:学習で一度も見ていない作り物の名前(zorb, kesh など)で、ゲームとやり取りしながら目標に届いた割合。

レベル 内容 通常版(200 問) 4bit(100 問)
1 目標 1 つ 98.5% 97%
2 関係ない操作・前提条件が混ざる 94.5% 97%
3 先に前提を満たしてから使う(2 段) 86.0% 78%
4 目標 2 つ、片方を壊さない 77.0% 72%

会話(1 文字あたりの予測誤差、小さいほど良い):SODA 雑談 0.812 / 案内 0.907 / NPC 0.732。行動選びを覚えさせる前とほぼ同じで、会話の力は保たれています。

作り方

  • base/:WikiText-103 と FineWeb-Edu を 63 億文字学習(16 層、幅 512、文脈 4096 文字、文字の種類 100)。
  • 会話:SmolTalk、SODA(人物設定つきの会話)、Qwen3.5/3.6 で作った NPC 会話と案内データで追加学習(npc4/)。
  • 行動選び:ルールで作った目標達成の会話(考えの筋道つき)を雑談と半々に混ぜて追加学習(agent6/)。

学習データの出典と利用条件:WikiText-103(CC BY-SA)、FineWeb-Edu(ODC-By)、SmolTalk(Apache 2.0)、SODA(CC BY 4.0)、Qwen3.5/3.6(Apache 2.0)の生成データ。

限界

小さなモデルなので、会話は自然に続きますが、中身は薄く事実の正確さもあまりありません。行動選びでは、3 段以上の段取りや、操作がどの値に効くかの読み違い、数の大小の判断ミスが残っています。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support