開発実践ガイド

Ollamaのツール呼び出しを最小構成で試す|実行前に引数を検証する

Ollamaのツール呼び出しを最小構成で試す — 実行前に引数を検証する
目次

公式サイトで次に進む

この記事で明示的に扱うソフトだけを表示します。配布・手順は各公式ページで確認してください。

local-gen.jpがファイルを配布するものではなく、互換性を保証するものでもありません。

Ollamaのツール呼び出しを試すとき、最初からシェル実行やファイル削除のような強い権限を与える必要はない。

まず、モデルが「このツールを使いたい」と返す工程と、アプリが実際にその処理を実行する工程を分ける

この境界を作っておくと、誤った引数や許可していない操作を実行前に止めやすい。

ツールの定義をモデルへ渡す

Ollamaの公式資料では、リクエストへツールの定義を渡し、モデルが必要だと判断した場合にツール呼び出しを返す流れが案内されている。

ツールには、名前、説明、引数の構造などを定義する。

ただし、定義を書いたからといって、モデルが必ず正しいツール名や引数を返すとは限らない。

最初は読み取りだけの処理にする

初回は、副作用のない小さな処理を使う。

たとえば、固定した一覧から都市コードを調べる処理なら、

ツール名: lookup_city_code
入力: city(文字列)
外部への変更: なし

のようにできる。

最初の試験で、ファイル書き込み、シェル実行、購入、メール送信などを同時に許可しない。

モデルが返した内容をそのまま実行しない

モデルがツール名と引数を返したら、アプリ側で少なくとも次を確認する。

  • 許可したツール名か
  • 必須の引数がそろっているか
  • 値の型が合っているか
  • 値が許可した範囲に入っているか
  • 実行前に利用者の確認が必要な操作ではないか

どれかに失敗したら実行せず、エラーとして扱う。

処理結果を会話へ戻す

検証を通過したツールを実行したら、その結果をモデルへ返し、最終的な回答を作らせる。

大まかな流れは次のようになる。

利用者の入力

モデルがツール呼び出しを提案

アプリがツール名と引数を検証

許可した処理だけ実行

結果をモデルへ返す

最終回答

ツール側が返す結果そのものの正しさは、ツールの実装側でも確認する必要がある。

わざと不正な引数も試す

正常な入力だけでは、実行前の検証が本当に働くか分からない。

  • 数値が必要な場所へ文字列を入れる
  • 存在しない識別子を渡す
  • 許可範囲外の値を渡す
  • 未登録のツール名を想定する

といった条件で、実行前に拒否できるか確認する。

権限は必要になってから増やす

読み取りだけの処理で、生成 → 検証 → 実行 → 結果返却を分けて確認できたら、必要な操作だけ追加する。

Ollamaがツール呼び出しへ対応していることは、外部操作が自動的に安全になることを意味しない。モデルが返した内容をアプリ側で検証し、実行権限を狭く保つ。

MCPを使って外部ツールを接続する場合の考え方は、MCPとは?ローカルLLMへツールをつなぐ前に知る仕組みとリスクで確認できる。

まとめ

  • モデルへツール定義を渡すことと、外部処理を実際に実行することは別工程として扱う
  • 最初はファイル変更や購入などを伴わない、読み取りだけの処理で試す
  • モデルが返したツール名と引数は、アプリ側で許可範囲や型を確認してから実行する
  • ツール呼び出しへ対応したモデルでも、外部操作の正確さや安全性まで保証されるわけではない
同じテーマから

この記事で扱ったデータ

モデル・GPU・実行ソフトの確認済みデータを、記事とは別に確かめられます。

サイト内検索