OpenAI Agents SDKの 基礎 (2) – tool

1. ツールの構造 – Type hints・Docstrings・Decoraters の役割 –

OpenAI Agents SDK を使ってエージェントにツールを持たせるには、単に Python の関数を書くだけでは不十分。Type hint(タイプヒント)Docstrings(ドックストリング)Decorater(デコレーター)という3つの要素を正しく組み合わせることで、エージェントはその関数を意味のあるツールとして理解できるようになる。

2. サンプルコード

@function_tool
def check_membership_level(user_id: int) -> str:
    """
    会員IDを受け取り、その会員ランクを返します。

    引数:
        user_id (int): 会員ID

    戻り値:
        str: 会員ランクを表す文字列
    """
    if user_id in (1, 2):
        return "Gold"
    elif user_id in (3, 4):
        return "Silver"
    else:
        return "Bronze"

(1) タイプヒント(Type hints)

def check_membership_level(user_id: int) -> str:

ここで使われている : int-> strタイプヒント

  • user_id: int
    → 引数 user_id は整数であることを示す。
  • -> str
    → 戻り値は文字列であることを示す。

通常の Python では型を書かなくても動くが、Agents SDK では重要な意味を持つ。
SDK は この型情報をそのまま LLM に渡し、「このツールは整数を受け取り、文字列を返す」と理解させる。

つまりタイプヒントは、

  • 人間向けの説明
  • エージェント向けの仕様定義

を同時に担っている。

(2) ドックストリング(Docstrings)

"""
会員IDを受け取り、その会員ランクを返します。
"""

関数定義の直後に書かれる文字列が Docstring

Agents SDK では、Docstring が以下のような役割を果たす。

  • この関数が「何をするツールなのか」を LLM に伝える。
  • 引数や戻り値の意味を補足する。
  • ツール選択時の判断材料になる。

Docstring は必須ではないが、書いておくことで エージェントの誤解を減らせる。
「人間向けの関数コメント」ではなく、「LLM向けの説明書」と考えると理解しやすい。

(3) デコレーター(Decoraters)

@function_tool

この1行があることで、単なる Python 関数が 「エージェントが呼び出せるツール」 に変わる。

デコレーターの役割は以下のとおり。

  • この関数を SDK に登録する。
  • 型ヒントや Docstring を解析対象にする。
  • LLM が「この関数を使ってよい」と判断できるようにする。

言い換えると「この関数はエージェントの行動の一部として使ってよい」と宣言するのがデコレーターである。

3. なぜこの3点セットが重要なのか

OpenAI Agents SDK は、関数をコードとしてではなく“仕様”として読む 仕組みになっている。

  • タイプヒント → 入出力の形式
  • ドックストリング → 目的と意味
  • デコレーター → ツールとしての登録

この3つが揃って初めて、エージェントは関数を正しく理解し、適切な場面で呼び出せるようになります。

4.まとめ

  • タイプヒントは「入力と出力の契約」
  • Docstring は「エージェント向けの説明書」
  • デコレーターは「ツールとして使ってよいという宣言」

Agents SDK を使う上では、
「Python関数を書く」=「エージェント用APIを定義する」
という意識を持つことが重要になる。