ubuntu docker環境でbonsaiを動かしてみた
もともとは、bonsaiで事務補佐的なことができないかと思っていたのですが、残念なことに日本語というか日本の風習がイマイチでして、例えばですが、メール案とかは全く使い物にならないレベルでした。
環境構築
前提
- ubuntu26.04
- docker
モデルのダウンロード
あらかじめ、modelsフォルダを作成してダウンロード
wget https://huggingface.co/prism-ml/Bonsai-4B-GGUF/resolve/main/Bonsai-4B.gguf
wget https://huggingface.co/prism-ml/Bonsai-8B-GGUF/resolve/main/Bonsai-8B.gguf
wget https://huggingface.co/prism-ml/Bonsai-27B-gguf/resolve/main/Bonsai-27B-Q1_0.gguf
Dockerfile
FROM ubuntu:24.04
# 必要なビルドツールとOpenBLASのインストール
RUN apt-get update && apt-get install -y \
git \
build-essential \
cmake \
curl \
libopenblas-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# PrismML 専用フォークの llama.cpp をクローンしてビルド
RUN git clone https://github.com/PrismML-Eng/llama.cpp . && \
cmake -B build -DGGML_OPENBLAS=ON -DGGML_NATIVE=ON && \
cmake --build build --config Release -j$(nproc)
RUN mkdir -p /app/models
EXPOSE 8080
ENTRYPOINT ["./build/bin/llama-server"]
docker-compose.yml
※Bonsai-8B.ggufの例
services:
# ① PrismML Bonsai LLM サーバー
bonsai-api:
build: .
container_name: bonsai-llm
volumes:
- ./models:/app/models
# 物理2コアに合わせて -t 2、メモリ節約のためコンテキスト長 -c 2048 に設定
command: >
-m /app/models/Bonsai-8B.gguf
--host 0.0.0.0
--port 8080
-c 2048
-t 1
-ngl 0
-b 32
-ub 16
# ② ChatGPTライクな Web GUI 画面
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- WEBUI_HOST=0.0.0.0
- PORT=8080
# Bonsai の OpenAI 互換 API へ自動接続
- OPENAI_API_BASE_URLS=http://bonsai-api:8080/v1
- OPENAI_API_KEYS=sk-no-key-required
- ENABLE_OLLAMA_API=False
volumes:
- open-webui-data:/app/backend/data
depends_on:
- bonsai-api
volumes:
open-webui-data:
起動
sudo docker compose up -d --build
ブラウザから
http://192.168.x.x:3000/
OpenWebUIのモデルのチェックを全部外してください
以下参照
実験
年末の挨拶メール
プロンプト:取引先向けに年末の挨拶メール案を作って
回答
以下は、取引先向けに「年末の挨拶メール」のテンプレート案です。このメールは、年末に取引先と取引員との関係を維持し、来年への期待を伝えるための丁寧で礼儀的なメッセージです。
件名: 2024年度の末年挨拶と、今後の展望へのご希望
拠下: [取引先名] 検証事務所
日付: [2024年12月25日]
担当: [お前のお名前]
拠下: [お前のお部屋・部署・所属先]
尊敬の[取引先名の担当者・担当者名]様、
2024年度が終了を迎えており、お忙しい中でのお手紙をお届けさせていただきます。
本年度は、ご支援の下、多くの成果を得られ、お会社の成長と進展に貢献できました。このような成果は、皆様の努力と協力、そして私たちの関係を築いたお手伝いが生まれたものだと、心から感謝申し上げます。
今後も、皆様の支援と協力の下で、私たちの取引先は新たな一歩を踏み出しつつあります。今後も、お会社の成長と進展を一緒に楽しんでいただけますよう、心より感謝申し上げます。
お手伝いを一切控えずに、お忙しい中でご愛顧いただけました。また来年も、よろしくお願い申し上げます。
敬具、
[お前のお名前]
[お前のお部屋・部署・所属先]
[お前のお電話番号]
[お前のおメールアドレス]
必要に応じて、以下のようなカスタマイズも可能です:
より個人的な内容:例えば、特定の取引や成果についての感謝と、今後の希望についての詳細
より簡潔なバージョン:カジュアルな挨拶向けに簡潔にまとめたバージョン
カジュアルなバージョン:取引先の関係性がより親しみやすい場合に、カジュアルなメッセージに変えることができます
必要に応じて、お手伝いいたします。お気軽にご相談ください。
プログラムの作成
プロンプト:引数を2つ与えて、その引数によって四則演算をするJavaソースを作成してください
回答
以下は、2つの整数を入力し、加法、減法、乗法、除法の四則演算を実行するJavaソースです。
✅ 要件
プロンプトによって2つの整数を入力
每つの演算の結果を表示
ディエット処理(除算0のチェック)を含めて安全に実行
✅ Javaソースコード
import java.util.Scanner;
public class FourOperations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 引数を入力
System.out.print("第1の整数を入力: ");
int a = scanner.nextInt();
System.out.print("第2の整数を入力: ");
int b = scanner.nextInt();
// 四則演算
int sum = a + b;
int difference = a - b;
int product = a * b;
int quotient = a / b;
// 結果を出力
System.out.println("加法の結果: " + sum);
System.out.println("減法の結果: " + difference);
System.out.println("乗法の結果: " + product);
// 分割のチェック
if (b == 0) {
System.out.println("除算 by 0は許可できません。");
} else {
System.out.println("除算の結果: " + quotient);
}
scanner.close();
}
}
✅ コンセプト
Scanner を用いて標準入力(ユーザーからの入力)を処理
基本演算は基本の+, -, *, /を使用
除算 by 0をチェックし、例外を防止
✅ 使用法
コンソールにJavaソースをコピーして保存
コンソールからjava FourOperationsを実行
2つの整数を入力
✅ 注意事項
前提条件:整数 only(浮動小数点数の入力は無効)
シンプルな実装です。必要に応じてUIを改善したり、例外処理を拡張したりできます。
必要があれば、GUI版や浮動小数点数の対応も可能です。お気軽にお知らせください!
メモリは?
使用メモリは、2.8GBくらいでしたので、資源の少ないPCでの利用ができることは間違いないのですが、ちょっと普段使いは難しいと思いました。