判断特化型AI「Laya」の導入方法・使い方!爆速で意思決定できるAIをローカルで動かそう

Layaの導入方法・使い方 生成AI一般

今回はAIの新しいタイプのモデルに関する話題で

判断特化のオープンなAIモデル「Laya」の導入方法・使い方

を分かりやすく・丁寧に解説するという内容になっております。

まず、AIというとChatGPTのように文章や画像などを生成するイメージが強いと思います。しかし最近になって「Jev」という

文章等を生成するのではなく物事を高速で判断することに特化したAI

が登場しAI界隈では非常に話題になりました。ただこのJevはクローズドなモデルでありローカル環境では直接動かせません。そこで早速、Jevと似たような特徴を持ちつつもオープンなAI「Laya」が提供されています。

ここではこのLayaについてローカル環境への導入方法や具体的な使い方をご紹介していきますね。

前提:判断特化型AI(System One モデル)について

はじめに前提知識として、最近登場した「判断特化型AI(System One Models)」について簡単にご説明しておきます。

System Oneモデルとは?

System Oneモデルは「文章を作らず判断と確率だけを高速で返す」ことに特化した新しいAIモデルです。従来のLLMはある程度時間をかけて文章を生成するモデルでしたが、System Oneモデルはそのような文章生成は一切行わずデータのみを一瞬で返します。

LLMとSystem Oneモデルの比較をザックリまとめてみると次のとおりです。

比較項目LLMSystem Oneモデル
主な出力文章・コード・対話
(自然言語)
選択肢・数値スコア・確率
(データのみ)
1件あたりの処理速度遅い非常に高速
実行コスト高い極めて安い
得意分野話し相手
思考・執筆アシスタント
プログラミング
振り分け作業
ゲームなどリアルタイムでの応答が必要な場面での判断

LLMと比較すると速くて安いのが大きな特徴ですね。また、System Oneモデルはきっちりした構造化データを返してくれるのでプログラム側で使いやすいという点も大きな魅力です。


ちなみに「System One」という呼び方は、心理学者のダニエル・カーネマン氏の「二重過程理論」の用語が由来だそうです。これは人間の意思決定や判断は

  1. 直感的で速い思考(=システム1)
  2. 論理的で遅い思考(=システム2)

の2つの異なるシステムで行われているとする理論なのですが、後者がLLMだとすれば判断特化型のAIはまさに前者だよね、ということでこのような命名になったらしいです。

主な活用例

System Oneモデルは例えば下記のような場面での活用が見込まれています。

  • 問い合わせの自動振り分け:
    メール等の問い合わせ内容を瞬時に解析して担当部署へ割り振る
  • AIエージェントの安全対策:
    AIが危険な操作を実行しようとしていないかを判定する
  • ゲームの自動テスト:
    ゲーム開発でAIにゲームをプレイさせてデバッグなどに活用する

Layaについて

公式リポジトリ

Layaとは?

LayaはConvai Innovationsが提供しているオープンな判断特化型AIです。基本的な仕様はJevと同様ですが、オープンウェイトなのでローカル環境で動かせるのが最大の特徴となっています。

なおライセンスは「Apache license 2.0」ということでかなり自由に使えます。

Layaの導入方法(Unsloth Desktop)

さて前置きが長くなってしまいましたがここからが本題です。まずはLayaをローカル環境に導入する方法を解説します。主な手順は次のとおり。

  1. Unsloth Desktopをインストールする(※既に導入済みならアップデート)
  2. API設定を行う

それぞれ詳しく見ていきましょう。

手順1:Unsloth Desktopのインストール

まず、執筆時点でLayaをローカルで手っ取り早く動かすには「Unsloth Desktop」というツールを使うのが一番なのでこれをインストールしましょう。

Unsloth Desktopの概要やインストール方法については前回の記事で詳しくご紹介していますのでそちらも併せてご覧いただければと思います。

また、「もうインストール済みだよ」という方は念のためアップデートしておいてください。

手順2:API設定を行う

次にUnsloth Desktopを起動してAPI設定を行います。残念ながらLayaはチャット画面では使えないので、ローカルサーバーを介してやりとりすることになります。

まず設定ボタン→「API」タブを開いてアクセストークンを取得します。適当なトークン名(今回はお試しなので「example」とかでOK)を記入し、期限「なし」で「トークンを作成」してください。

Unsloth Desktop アクセストークンの取得方法

するとAPIにアクセスするためのキーが生成されるのでコピーしておきます(後で使うので紛失しないようにしてください)。

次に「API」タブの一番下に、Layaを含む判定AI用のAPI設定があるので必要な設定を行います。

Unsloth Desktop 判定APIの設定

「リクエストに応答」をONにして、実行先を「GPU」に変更しておきましょう(※モデルは自動的にダウンロードされます)。これで導入作業は完了です。

Layaの基本的な使い方

次にLayaの基本的な使い方をなるべく分かりやすく解説します。

入出力のフォーマットについて

まず、Layaを含むSystem Oneモデルはデータのみを扱うため、先ほども書いたとおりLLMのようにチャット形式でやりとりすることはできません。予め決まったフォーマットでリクエストを送信するとそれに対応した構造化データが出力されるようになっているので、使い始める前にそのフォーマットを理解しておきましょう。

入出力の具体的なサンプル

早速フォーマットの説明に入りたいところですが、その前に具体的なサンプルをご覧いただいたほうが分かりやすいので先に例を掲載します。

入力の例(ユーザーが用意するリクエスト):

{
	"model": "laya",
	"state": "こんにちは。3月の請求書(#4411)で二重請求されました。重複分を本日返金してください。",
	"questions": {
		"team": {
			"type": "choice",
			"instructions": "この件はどのチームが対応すべきですか?",
			"criteria": {
				"billing": "請求書、支払い、返金",
				"technical": "バグ、障害、エラー",
				"sales": "価格設定、新しいプラン",
				"other": "その他すべて"
			}
		},
		"refund": {
			"type": "noul",
			"instructions": "顧客は返金を求めていますか?"
		},
		"urgency": {
			"type": "score",
			"instructions": "どれくらい緊急ですか?",
			"criteria": [
				"緊急ではない",
				"まもなく",
				"今日"
			]
		}
	}
}

入力に対する出力の例(Layaが生成したデータ):

{
	"model": "laya-multilingual",
	"answers": {
		"team": {
			"type": "choice",
			"choice": "billing",
			"confidence": 1,
			"probabilities": {
				"billing": 1,
				"technical": 0,
				"sales": 0,
				"other": 0
			}
		},
		"refund": {
			"type": "noul",
			"noul": 0.9874
		},
		"urgency": {
			"type": "score",
			"score": 1.767,
			"confidence": 0.4799,
			"legend": {
				"0": "緊急ではない",
				"1": "まもなく",
				"2": "今日"
			},
			"probabilities": {
				"0": 0.0099,
				"1": 0.2131,
				"2": 0.777
			}
		}
	},
	"usage": {
		"input_tokens": 201,
		"output_tokens": 0
	}
}

System Oneモデルにおける入力データの基本構造

サンプルの入力データは一見すると何が何やら…という感じだと思いますので簡単に解説します。まず、リクエストの基本構造は下記のような感じです。

{
  "state": "【対象となるテキスト・文脈】",
  "questions": [
    {
      "type": "設問の種類(noul / choice / score)",
      "instructions": "【設問文】",
      "criteria": ["選択肢1", "選択肢2", "選択肢3"] 
    }
  ]
}

大まかにいうと「state」に判定対象のテキスト・「questions」に設問を記入し、設問の種類を指定する感じです。

設問の種類について

設問の種類は3つあります。設問ごとに最適なものを選びましょう。

設問の種類用途返ってくる内容
noulはい or いいえの二択「はい」である確率(0~1)
choice選択肢から1つ選ぶ最も可能性の高い選択肢に加え、各選択肢の確率
score尺度で評価するテキストが尺度のどこに位置するか(0から数えたもの)

リクエストの送信方法

curlやPythonを使ってリクエストを送信できます。

リクエスト送信例(Pythonの場合):

import requests

# URLとヘッダーの設定
url = "http://127.0.0.1:8888/v1/systemone"
headers = {
    "Authorization": "Bearer ここにアクセストークン",  # Unsloth Desktop側のアクセストークン
    "Content-Type": "application/json",
}

# 送信データ
payload = {
    "model": "laya",
    "state": "こんにちは。3月の請求書(#4411)で二重請求されました。重複分を本日返金してください。",
    "questions": {
        "team": {
            "type": "choice",
            "instructions": "この件はどのチームが対応すべきですか?",
            "criteria": {
                "billing": "請求書、支払い、返金",
                "technical": "バグ、障害、エラー",
                "sales": "価格設定、新しいプラン",
                "other": "その他すべて",
            },
        },
        "refund": {
            "type": "noul",
            "instructions": "顧客は返金を求めていますか?",
        },
        "urgency": {
            "type": "score",
            "instructions": "どれくらい緊急ですか?",
            "criteria": ["緊急ではない", "まもなく", "今日"],
        },
    },
}

# リクエスト送信
response = requests.post(url, headers=headers, json=payload)

# 結果を表示
print(response.json())

上記のコードを試す場合は「ここにアクセストークン」の部分に先ほど取得したアクセストークンをコピペしてください。

おわりに

以上、Layaのローカル環境への導入方法や使い方を解説しました。

LayaはLLMとは違って開発者向けのAIなので使いこなすのは少し難しいと思いますが、いろいろ活用できる場面があると思います。ぜひ皆さんもこの機会に試してみてください。

この記事が何かしらお役に立てば幸いです。