Gemma 3 27B: 関数呼び出し機能を持つマルチモーダルAI(LangChain経由)

Gemma 3 27B: 関数呼び出し機能を持つマルチモーダルAI(LangChain経由)

主なポイント

Gemma 3 27B は、Googleが公開した 270億パラメータ を持つ最先端のマルチモーダルAIモデルで、140以上の言語 に対応しています。

関数呼び出し(Function Calling) をLangChainなどのツールで利用することで、外部システムとのシームレスな連携が可能になり、計算、データ分析、ワークフロー自動化といった特別なタスクを実行する能力が拡張されます。

Gemma 3 27Bの マルチモーダル機能 と組み合わせることで、関数呼び出しはタスク自動化を大幅に強化し、テキスト、画像処理、外部ツール間の高度な連携を実現します。オープンソースとして提供されているため、業界全体での幅広い採用と革新が促進されます。

Gemma 3 27B は、マルチモーダルAIにおけるブレークスルーであり、テキストと画像の理解・生成において比類のない能力を発揮します。270億のパラメータと140以上の言語サポートにより、さまざまな業界で複雑なタスクをシームレスに処理します。

Gemma 3 27B とは?

公開日

2025年3月12日

モデルサイズ

270億パラメータ

オープンソース

はい(Googleが公開)

言語サポート

140以上の言語

学習データ

14兆トークン

得意分野

数学、コーディング、指示追従

マルチモーダル対応

あり(画像とテキストの処理、テキスト出力)

コンテキストウィンドウ

128Kトークン

Gemma 3 27B マルチモーダル機能テスト

プロンプト: Gemma 2 27BからGemma 3 27BへのELOスコアの増加は何倍かを教えてください。

ELO SCORE

出典: Google

出力: 数値は正確に識別できたが、プロンプトで指示された倍数の計算は行われず、代わりに差のみが計算されました。

画像に基づいて計算します:

  • Gemma 2 27B Eloスコア: 1220
  • Gemma 3 27B Eloスコア: 1338

増加: 1338 - 1220 = 118

EloスコアはGemma 2 27BからGemma 3 27Bで 118 ポイント増加しました。

Gemma 3 27B ベンチマーク

ベンチマーク Gemma 3 27B DeepSeek R1 LLaMA 3.3 70B
LMSys Elo Score 1339 ~1360 ~1260
MMLU-Pro 67.5 84.0 66.4
LiveCodeBench 29.7 65.9 ~29
GPQA Diamond 42.4 71.5 50.5
MATH 69.0 97.3 77.0

elo scores

出典: Hugging Face

マルチモーダルモデルと関数呼び出しの組み合わせで解決できる問題とは?

問題 1

リソースが限られた環境での大規模ファイルの処理

LLMは画像や動画を直接処理できますが、大規模ファイル(長い動画や高解像度画像など)の処理には多くのリソースを消費し、モデルのコンテキストウィンドウを超える可能性があります。

関数呼び出しの役割: 複雑またはリソースを多く消費するタスクを外部システムに分散し、LLMは結果の調整と統合に集中できるようにします。

問題 2

特定機能の能力拡張

LLMは主にコンテンツの理解と生成に重点を置いていますが、特定のシナリオではユーザーがより専門的な機能(グラフ生成、画像編集、動画トリミングなど)を必要とする場合があり、それらはLLMの標準機能を超えています。

関数呼び出しの役割: LLMが外部ツールを通じて専門的な出力を生成・実行できるようにすることで、LLMの能力を拡張します。

問題 3

専門ツールによる深い分析の実現

LLMはテキスト、画像、動画などのマルチモーダル入力を分析できますが、医療画像分析や高精度動画編集などのプロフェッショナルレベルのタスクを実行するには深さが不足する場合があります。

関数呼び出しの役割: タスクを専門ツールやAPIに委任し、LLM単独では提供できない高い精度と深い分析を実現します。

Novita AI で Gemma 3 27B の関数呼び出しを使う方法

ステップ 1: APIキーを取得してインストールする

「Key Management」ページで、画像のように APIキー をコピーできます。

get api key

今すぐ Gemma 3 27B デモを試す!

ステップ 2: LangChainを使って関数呼び出しを実装する

加算と乗算を実行できるシンプルな数学アプリケーションを作成します。

💡 このガイドでは利便性のためにLangChainを使用していますが、関数呼び出しの実装に特定のフレームワークは必要ありません。鍵となるのは、モデルが関数を理解して正しく呼び出すための適切なプロンプトを設計することです。ここではLangChainを実装の簡略化のために使用しています。

前提条件

まず、必要なパッケージをインストールします。

pip install langchain-openai python-dotenv

環境のセットアップ

プロジェクトのルートに.envファイルを作成し、Novita AIのAPIキーを追加します。

NOVITA_API_KEY=your_api_key_here

ステップ 3: 実装手順

1. ツールを定義する

まず、LangChainの@toolデコレータを使って2つの簡単な数学ツールを作成します。

from langchain_core.tools import tool

@tool
def multiply(x: float, y: float) -> float:
    """2つの数値を掛け算します。"""
    return x * y

@tool
def add(x: int, y: int) -> int:
    """2つの数値を加算します。"""
    return x + y

tools = [multiply, add]

2. ツール実行関数を作成する

次に、ツールを実行する関数を実装します。

from typing import Any, Dict, Optional, TypedDict
from langchain_core.runnables import RunnableConfig

class ToolCallRequest(TypedDict):
    name: str
    arguments: Dict[str, Any]

def invoke_tool(
    tool_call_request: ToolCallRequest, 
    config: Optional[RunnableConfig] = None
):
    """指定されたツールを引数とともに実行します。"""
    tool_name_to_tool = {tool.name: tool for tool in tools}
    name = tool_call_request["name"]
    requested_tool = tool_name_to_tool[name]
    return requested_tool.invoke(tool_call_request["arguments"], config=config)

3. LangChainパイプラインをセットアップする

Novita AIのLLMを使用してツール呼び出しを選択・準備するチェーンを作成します。

from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import render_text_description

def create_chain():
    """指定されたLLMモデルを使用してツール呼び出しを選択・準備するチェーンを作成します。"""
    model = ChatOpenAI(
        model="google/gemma-3-27b-it",
        api_key=os.getenv("NOVITA_API_KEY"),
        base_url="https://api.novita.ai/v3/openai",
    )
    
    rendered_tools = render_text_description(tools)
    system_prompt = f"""\
    あなたは以下のツールセットにアクセスできるアシスタントです。
    各ツールの名前と説明は次のとおりです。

    {rendered_tools}

    ユーザーの入力に対して、使用するツールの名前と入力を返してください。
    レスポンスは'name'と'arguments'キーを持つJSONブロブで返してください。

    'arguments'は辞書とし、キーは引数名、値は要求された値に対応します。
    """

    prompt = ChatPromptTemplate.from_messages(
        [("system", system_prompt), ("user", "{input}")]
    )

    return prompt | model | JsonOutputParser()

4. メイン処理関数を作成する

数学的なクエリを処理するメイン関数を実装します。

def process_math_query(query: str):
    """数学クエリを処理し、LLMを使って適切なツールを選択して実行します。"""
    chain = create_chain()
    message = chain.invoke({"input": query})
    result = invoke_tool(message, config=None)
    return message, result

5. 使用例

実装方法は次のとおりです。

if __name__ == "__main__":
    message, result = process_math_query(
        "meta-llama/llama-3.3-70b-instruct", 
        "3たす1132はいくつ?"
    )
    print(result)  # 出力: 1135

Gemma 3 27Bは、数学、コーディング、指示ベースのタスクにおいて業界をリードするパフォーマンスでマルチモーダルAIを再定義します。その マルチモーダル統合 と広範な 学習データ は、開発者や研究者にとって多用途なツールとなっています。

よくある質問

Gemma 3 27B とは何ですか?

Gemma 3 27B は 270億パラメータ を持つマルチモーダルAIモデルで、**テキストと画像 ** を処理でき、140以上の言語 に対応しています。

Gemma 3 27B は前世代と比べてどうですか?

Gemma 3 27B は、Eloスコアが118ポイント向上 し、コーディング、数学、マルチモーダルタスクにおいてパフォーマンスが向上しています。

Gemma 3 27B はオープンソースですか?

はい、Gemma 3 27B はオープンソースであり、コミュニティ主導の革新を促進します。

Novita AI は、開発者がシンプルなAPIを使用してAIモデルを簡単にデプロイできるAIクラウドプラットフォームであり、手頃で信頼性の高いGPUクラウドを構築・スケーリングのために提供しています。

おすすめ記事