💬

OpenManusでGemma3使ってみた

2025/03/16に公開
13

はじめに

最近、新たに登場した大規模言語モデルの「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を組み合わせて動かしてみた。
まだ扱い方を理解できているわけではないので、今後もう少し使い方を調べて再チャレンジしたい。

13

Discussion