OpenManusでGemma3使ってみた
はじめに
最近、新たに登場した大規模言語モデルの「Gemma3」を試す機会があった。軽量かつローカル環境でも比較的動かしやすいとのことで、実際に動かしてみたいと考えた。一方、以前から気になっていたオープンソースの汎用エージェントシステム「OpenManus」も、ちょうど試す機会を探していたため、同時に試して相性や使い勝手を確かめることにした。
本記事は、これら2つを初めて導入したときの手順や注意点を整理した備忘録である。Gemma3 と OpenManus の基本的な使い方や簡単な連携実行の流れを示す。
実行環境
- Windows11 home
- CPU: Intel(R) Core(TM) i7-14700F
- RAM: 32GB
- GPU: NVIDIA GeForce RTX 4070 Ti SUPER
- CUDA: 12.4
- Python 3.12.6
Gemma3の用意
今回は簡易的に「LM Studio」でLLM環境を構築する。
モデルダウンロード
インストーラーに従ってインストールしたのち、Gemma3をダウンロードする。
PCスペック的に27Bは厳しいと思ったので、今回はGemma 3 12B Q4_K_Mで試すことにした。
動作確認
チャットモードで適当にPromptを入力して実行する。
大体このPCスペックで、46.53 [token/sec]で生成が可能だった。
サーバーを起動
開発者モードでサーバーを起動し、APIで呼び出し可能状態にする。
以下コードを実行して動作確認を行った。(コード自体もGemma3に生成させてみた)
import requests
import json
url = "http://localhost:1234/v1/chat/completions"
headers = {
"Content-Type": "application/json"
}
data = {
"model": "gemma-3-12b-it",
"messages": [
{ "role": "system", "content": "あなたは優秀なチャットボットです。名前はミスターサタンです。" },
{ "role": "user", "content": "初めまして!あなたは誰ですか?" }
],
"temperature": 0.7,
"max_tokens": -1,
"stream": False
}
try:
response = requests.post(url, headers=headers, data=json.dumps(data)) # JSONデータを文字列に変換
response.raise_for_status() # HTTPステータスコードがエラーの場合例外を発生させる
print(response.text) # レスポンスの内容を表示
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
結果
{
"id": "chatcmpl-nwa2au2u7lbxyh1zjvem6",
"object": "chat.completion",
"created": 1742065404,
"choices": [
{
"index": 0,
"logprobs": null,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "初めまして!私はミスターサタン、あなたの頼れるチャットボットです。どんなことでもお気軽にご相談ください。知識や情報、そしてちょっとしたユーモアで、あなたのお手伝いをさせていただきます。 \n\n何か私にでき ることはありますか?"
}
}
],
"usage": {
"prompt_tokens": 35,
"completion_tokens": 57,
"total_tokens": 92
},
"stats": {},
"system_fingerprint": "gemma-3-12b-it"
}
OpenManusの用意
今回はOpenManusの公式リポジトリから派生したWebUIがついているリポジトリを利用する。(現状英語と中国語しか対応していない)
$git clone git@github.com:YunQiAI/OpenManusWeb.git
$cd OpenManus
# Pythonで仮想環境を作成し、必要なライブラリをインストールする
$python -m venv venv
$venv/Scripts/activate
(venv)$pip install -r requirements.txt
(venv)$copy config/config.example.toml config/config.toml
設定ファイルを修正
OpenManusからLM StudioのAPIを呼び出せるように設定ファイルを書き換える。
config/config.toml
を以下のように書き換える
# Global LLM configuration
[llm]
api_type = "ollama"
model = "gemma-3-12b-it" # The LLM model to use
base_url = "http://localhost:1234/v1" # API endpoint URL
api_key = "ollama"
max_tokens = 4096
temperature = 0.0
# [llm] #AZURE OPENAI:
# api_type= 'azure'
# model = "YOUR_MODEL_NAME" #"gpt-4o-mini"
# base_url = "{YOUR_AZURE_ENDPOINT.rstrip('/')}/openai/deployments/{AZURE_DEPOLYMENT_ID}"
# api_key = "AZURE API KEY"
# max_tokens = 8096
# temperature = 0.0
# api_version="AZURE API VERSION" #"2024-08-01-preview"
# Optional configuration for specific LLM models
[llm.vision]
model = "gemma-3-12b-it" # The vision model to use
base_url = "http://localhost:1234/v1" # API endpoint URL for vision model
api_key = "ollama"
以下コマンドを実行し起動する。
(venv)$python web_run.py
実行
実行環境の用意ができたので実際に試してみる。
一旦、最近流行しているローカルLLMをまとめてみてもらう。
実行すると、UIの左側に思考ステップが表示されるっぽい。
ログを確認してみると、最初の段階で
Plan: Summarize Popular Local LLMs (ID: plan_1742066474)
=========================================================
Progress: 0/4 steps completed (0.0%)
Status: 0 completed, 0 in progress, 0 blocked, 4 not started
Steps:
0. [ ] Identify popular local LLMs.
1. [ ] Gather information about each LLM (capabilities, requirements).
2. [ ] Write a concise summary for each LLM in Japanese.
3. [ ] Compile summaries into a single document 'local_llm_summarize.txt' in Japanese.
と出ていたり、GoogleSearchを使ってたりしていた。
最終的に、UIでは以下のように出力された。
workbench/{job_id}
配下にlocal_llm_summarize.txt
が出力された。
llama.cpp: Capabilities - Executes Python code string. Requirements - Relatively modest hardware, macOS and Windows.
LM Studio: Capabilities - All-in-one application for running LLMs locally with a user-friendly interface. Requirements - Relatively modest hardware, macOS and Windows, no coding experience required.
Ollama: Capabilities - Framework for simplifying running LLMs locally with easy download and API access. Requirements - Relatively modest hardware, macOS, Linux, and Windows (via Docker).
想定していた結果ではなかったが、もう少し色々いじればなんとかなるのかなと思った。
終わりに
今回は最近発表されたGemma3とOpenManusを組み合わせて動かしてみた。
まだ扱い方を理解できているわけではないので、今後もう少し使い方を調べて再チャレンジしたい。
Discussion