今回はローカルPCで、はやりのAIチャットをブラウザで操作できるようにしていこうと思います。
AIチャットではChatGPTやBirdなどが有名ですが、すべてサービス提供者のサーバを介しています
セキュリティ的な問題で会社内で使用できないこともあると思います
そこで、ローカルPCやサーバでAIチャットができるツールがあるので構築していきます
llama.cpp
llama.cppは、大規模言語モデル「LLaMA(Large Language Model Meta AI)」を効率的に動作させるソフトウェアです
C++で実装されています
今回はソースコードがビルドしてみます
下準備
以下のソフトウェアを事前にインストールしてください
- git https://gitforwindows.org/
- git lfs https://git-lfs.com/
CおよびC++の開発を支援するための軽量な開発キットw64devkit
と呼ばれる開発ツールを導入します
以下のURLにアクセスしてw64devkit-1.23.0.zipをダウンロードします

ダウンロードしたら展開をして、任意の位置に保存してください

w64devkitに含まれるdebugbreak.exe
がWindows Defenderが脅威として検出される可能性があります。
今回は必要のない実行ファイルのためそのままDefenderで削除されたまま使用します
w64devkit起動
w64devkitフォルダ内の`w64devkit.exe`をクリックします
すると以下のような画面が表示されると思います
llama.cpp
以下のコマンドを実行します
git clone https://github.com/ggerganov/llama.cpp.git

cdコマンドでllama.cppフォルダに移動します
cd llama.cpp/

makeコマンドでビルドします
make -j4

入力画面に戻ればビルド完了です

モデル
llama.cppだけでは、動作しません。モデルが必要です。
モデルはさまざまな組織から公開されています。モデルにもいろいろ種類があり、llama.cppでは一般的に「gguf」形式を使用します
今回は、「Meta-Llama-3-70B-Instruct」を有志の方がgguf形式に変換したデータを使用します
ダウンロードしたら「llama.cpp」のmodelsフォルダにいれます
以下のコマンドを実行するとWebサーバが立ち上がります
llama-server.exe -m models/Meta-Llama-3-70B-Instruct-Q4_K_M.gguf
ブラウザを開き、URLに「127.0.0.1:8080」を入力すると以下の画面が表示されます

今回は、Llama 3を使用しているので、Prompt Styleは「Llama3」をコンボボックスから選択してください
「SYSTEM」の入力欄では、システムプロンプトを記載します
システムプロンプトとは、モデルがユーザーからの入力(プロンプト)に応答する際に、その応答のスタイル、トーン、コンテンツを制御するために使用される内部的な指示です。
今回は以下のように設定しました
Below is an instruction that describes a task. Write a response in Japanese that appropriately completes the request.

Submitボタンを押すと「日本の首都はどこですか?」の質問について日本語で答えてくれます

簡単な質問については、正しく回答を得られていると思います!
コメント