Novita AIのLlama 4 Scoutが関数呼び出しに対応

Novita AIのLlama 4 Scoutが関数呼び出しに対応

主なハイライト

Novita AI は Llama 4 Scout を導入しました!さらに、このバージョンは ** 関数呼び出し** を完全にサポートしています。

性能をテストしたい方は、Novita AI Playground で直接 無料トライアルを開始 してください!

関数呼び出しにより、Llama 4 Scout のようなLLMはAPIや外部ツールと連携して実世界のタスクを実行し、自然言語のコマンドを実行可能なアウトプットに変換できます。

関数呼び出しとは?

関数呼び出しは、大規模言語モデル(LLM)の能力における極めて重要な進歩を表します。これにより、LLMは外部ツール、API、データソースと対話できるようになります。自然言語のプロンプトを構造化された関数呼び出しに変換することで、LLMは本来のテキスト生成能力を超えて、実際のアクションを実行したり、動的な情報を取得したり、複雑な計算を実行したりできます。

関数呼び出しの定義

関数呼び出しは、LLMがユーザーのクエリに基づいて実行可能なコマンドを生成することにより、外部システムとインターフェースできるようにする構造化された方法です。従来のLLMの出力(テキスト生成に限定される)とは異なり、関数呼び出しにより、モデルは特定のパラメーターで事前定義された関数をトリガーし、外部コードを通じてそれらの関数を実行し、結果を首尾一貫した応答に統合できます。

https://www.youtube.com/watch?v=i-oHvHejdsc&t=429s

関数呼び出しの仕組み

関数呼び出しは、大規模言語モデル(LLM)がユーザープロンプトを解釈し、どの事前定義関数をどのパラメーターで実行するかを決定する構造化プロセスです。以下に簡略化した概要を示します。

  1. ユーザープロンプト: ユーザーがシステムにクエリを送信します。
  2. LLMの解釈: LLMがプロンプトを分析し、適切な関数とパラメーターを特定します。
  3. 関数の実行: システムが指定されたパラメーターで関数を実行します。
  4. 応答の生成: 結果がLLMにフィードバックされ、LLMは出力を組み込んだ最終応答を生成します。

関数呼び出し

関数呼び出し vs RAG

**側面 ** ** 関数呼び出し ** ** 検索拡張生成(RAG)**
定義 リアルタイムタスクのために外部関数(API、データベース)を呼び出す。 外部ソースから情報を取得・合成して応答を生成する。
使用例 データベースのクエリ、APIリクエスト、外部ツール(例:決済) データを取得して回答を生成するQ&Aシステム。
利点 - リアルタイムタスク
- 外部システムとの対話
- モジュール化されたシステム
- 大規模な知識にアクセス
- 複雑なクエリに効率的
- 最新データに最適
目的 外部システムやサービスを呼び出す。 取得した知識を用いて生成を強化する。
実装 事前定義された外部呼び出し(例:API)。 生成プロセス中に情報を取得する。
柔軟性 リアルタイムの対話により柔軟。 外部/内部知識を生成に活用。

Novita AI 経由で Llama 4 Scout の関数呼び出しを使用する方法

Novita AI は各LLMのサポート機能説明を公開しており、コンソールドキュメント で直接確認できます。

llama 4 scout 関数呼び出し

llama 4 サポートモデル

モデルを選択

1. クライアントの初期化

まず、Novita API キーを使ってクライアントを初期化します。

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # Novita AI API キーを取得: https://novita.ai/settings/key-management.
    api_key="<YOUR Novita AI API Key>",
)

model = "meta-llama/llama-4-scout-17b-16e-instruct"
  • 呼び出す関数の定義

次に、モデルが呼び出すことができる Python 関数を定義します。この例では、天気情報を取得する関数です。

# 天気データをシミュレートする関数の例。
def get_weather(location):
    """指定された場所の現在の天気を取得します。"""
    print("get_weather関数を呼び出し、場所: ", location)
    # 実際のアプリケーションでは、ここで外部の天気APIを呼び出します。
    # これはハードコードされたデータを返す簡略化した例です。
    return json.dumps({"location": location, "temperature": "60 degrees Fahrenheit"})

2. ツールとユーザーメッセージを含むAPIリクエストの構築

ここで、Novita エンドポイントへのAPIリクエストを作成します。このリクエストには、モデルが使用できる関数を定義する tools パラメーターと、ユーザーのメッセージが含まれます。

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "場所の天気を取得します。ユーザーは最初に場所を指定する必要があります。",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "市区町村と州、例:San Francisco, CA",
                    }
                },
                "required": ["location"]
            },
        }
    },
]

messages = [
    {
        "role": "user",
        "content": "サンフランシスコの天気は?"
    }
]

# リクエストを送信し、応答を表示します。
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# 本番環境では、応答に tool_calls が含まれているか確認してください。
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())

3. 出力

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

4. 関数呼び出しの結果で応答し、最終回答を取得

次のステップでは、関数呼び出しを処理し、get_weather 関数を実行して、その結果をモデルに送り返し、ユーザーに対する最終応答を生成します。

# tool_call が前のステップで定義されていることを確認
if tool_call:
    # アシスタントのツール呼び出しメッセージで会話履歴を拡張
    messages.append(response.choices[0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # 関数を実行し、応答を取得
        function_response = get_weather(
            location=function_args.get("location"))
        # 関数の応答をメッセージに追加
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # 関数結果を含むモデルから最終応答を取得
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # 注意:ここでは tools パラメーターを含めないでください。
    )
    print(answer_response.choices[0].message)

5. 出力

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

Llama 4 Scout と Novita AI により、関数呼び出しはLLMアプリケーションを再定義し、現代のニーズに応えるリアルタイムで動的なソリューションを提供します。

よくある質問

関数呼び出しとは?

LLMが外部のツールやAPIをトリガーしてタスクを実行したりデータを取得できるようにします。

Llama 4 Scout は関数呼び出しとどのように連携しますか?

Llama 4 Scout は Novita AI を介してリアルタイムのシステム統合を簡素化します。

関数呼び出しはリアルタイムのニーズに適していますか?

はい、API呼び出しや動的データクエリのようなタスクに最適です。

Novita AI は、AIの可能性を最大限に引き出すオールインワンのクラウドプラットフォームです。統合API、サーバーレス、GPUインスタンス——コスト効率の高いツールを提供します。インフラストラクチャの心配は不要で、無料で始めてAIビジョンを現実にしましょう。

おすすめ記事