2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIのツール呼び出しが増えてきたら、PTCという考え方

2
Posted at

image.png

先に結論

PTC(Programmatic Tool Calling、プログラムによるツール呼び出し)は、LLMがコードを書き、そのコードからツールを呼び出す仕組みです。

繰り返し、条件分岐、集計をコードで処理し、必要な結果をLLMに返す。

ツールを何度も使うAIエージェントで、処理の往復や読み込むデータ量を減らせるのが特徴です。

1. ツールが増えると、途中のデータも増える

例えば、「20人分の経費を調べて、予算を超えた人を教えて」という依頼。

通常のツール呼び出しでは、取得結果をLLMが受け取り、次の呼び出しを判断する流れになりがちです。

人数が増えるほど、大量の明細を読み込むことになります。

最終的に知りたいのは超過した人だけでも、途中のデータはかなり多いです。

2. PTCでは、処理の手順をコードにする

PTCなら、LLMが次のような処理を書きます。

# 概念例:各関数は登録済みツール
# ツールの戻り値は辞書・リストとして扱える前提
over_budget = []

for member in await get_members():
    expenses = await get_expenses(member["id"])
    total = sum(item["amount"] for item in expenses)

    if total > member["budget"]:
        over_budget.append({
            "name": member["name"],
            "total": total,
        })

print(over_budget)

経費明細はコード側で集計し、LLMには超過した人の情報だけを返します。

LLMが手順を組み立て、実行環境が繰り返し処理を進める、という役割分担です。

3. 効果が出やすいのは、取得してから絞り込む処理

PTCが向いているのは、例えばこんな場面です。

  • 複数のAPIから情報を取得して集計する
  • 大量のログから必要な行だけを取り出す
  • 取得結果に応じて、次に使うツールを切り替える

中間結果を毎回LLMに読ませる必要が減るため、トークン消費や待ち時間を抑えやすくなります。

ただ、1回の呼び出しで終わる処理では、コード実行の準備が余分な負担になることもあります。

4. 導入時は、戻り値の設計が大事

コードから扱うため、ツールの戻り値は形式を揃えておきたいです。

項目名、型、エラー時の返し方が曖昧だと、集計や条件分岐が壊れやすくなります。

Anthropicの実装では、コード実行ツールを有効にし、対象ツールの allowed_callers でコードからの呼び出しを許可します。アプリ側でツールを実行し、結果を返す処理も必要です。

まずは、複数のデータを取得して集計する小さな処理から試すと、違いを確認しやすいと思います。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?