2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dify エージェントノード FunctionCalling (最小構成版)(No.11)

2
Posted at

エージェントノード FunctionCalling (最小構成版)

1. 目的

ユーザーの依頼に応じて 定義済みツール(プラグイン)を“関数呼び出し”として実行し、結果を自然文で返す。
ここでは Code Interpreter をツールとして使い、ドル→円換算 を例に構築します。


2. ノード構成

エージェントノード1.jpg

[開始] → [変数代入] → [エージェント(FunctionCalling + Code Interpreter)] → [回答]
  • 開始:ユーザー入力の起点(sys.query)
  • 変数代入:会話変数(初期値)の書き込み
  • エージェント:戦略 = FunctionCalling、Tools List に Code Interpreter を追加
  • 回答:エージェント出力をそのまま返す

重要:Agent ノードには LLM ノードのような「CONTEXT 変数割り当て欄はありません。 変数は Instruction に Jinja で埋め込むか、ツール側の固定値で渡します。


3. 会話変数(作成するもの)

変数名 例/既定値の考え方
currency_from String 既定は "USD"(Jinja の default でも可)
currency_to String 既定は "JPY"
usd_to_jpy_rate Number 例: 149(実レートを取らない簡易例)

変数名は Instruction 内の参照と一致させてください。例:usd_to_jpy_rate(綴りミス注意)


4. 変数代入ノード(推奨設定)

  • currency_from = "USD"
  • currency_to = "JPY"
  • usd_to_jpy_rate = 149
    エージェントノード2.jpg

固定したくない場合は未設定でもOK。Instruction 側で | default(...) を付けて安全運用できます。


5. エージェントノード設定

5.1 基本

  • エージェンティック戦略FunctionCalling
  • MODEL:任意(例:gpt-4o-mini / Chat)
  • Tools ListCode Interpreter追加し、有効化(トグルON)

5.2 Instruction(Jinja 有効)

以下を そのまま貼り付けてください。

あなたは通貨換算を行うエージェントです。必要に応じて Code Interpreter ツールで Python コードを生成・実行し、結果のみを日本語で返してください。

換算パラメータ(未指定時の既定値):
- 入力通貨: {{ currency_from | default('USD') }}
- 出力通貨: {{ currency_to   | default('JPY') }}
- USD→JPY レート: {{ usd_to_jpy_rate | default(149) }}

出力は「{金額}{通貨}は約{金額}{通貨}です。」の1行で返してください。説明や推論過程は出力しないでください。

ポイント

  • CONTEXT 欄は使いません。(Agent ノードに該当欄なし)
  • 変数は Instruction 内で Jinja 参照します。

5.3 Query

{{#input#}}

ユーザー発話をエージェントに渡します。空欄だと不安定になるので必ず設定。

5.4 Maximum Iterations

  • 例:1~3(Code Interpreter を1回呼ぶ想定なら 1 でも可)
    エージェントノード3.jpg

6. 入力サンプルと期待出力

  • 入力200ドルを日本円に換算して
  • 期待出力200USDは約29,800JPYです。
    (レート 149 を使用した場合)

7. テスト方法(チェックリスト)

  • 変数代入ノードで会話変数がセットされている
  • Agent の Tools List に Code Interpreter が追加&有効
  • Agent の Instruction に上記テンプレを貼り付け(Jinja ON)
  • Agent の Query が {{#input#}}
  • フロー接続:開始 → 変数代入 → Agent → 回答

8. トラブルシューティング

× Run failed: tool parameter query not found in tool config

原因:ツール側に存在しない query パラメータを渡そうとした/Query 未設定。
対処

  1. Agent の Query に {{#input#}} を設定
  2. Tools List の Code Interpreter 詳細で、query 等の不要な事前割り当てを削除(Code Interpreter は検索系の query パラメータを持ちません)。

× 変数が反映されない

  • 変数名の綴り(例:usd_to_jpy_rate)が Instruction 内と一致しているか確認。
  • 変数未設定でも動かせるよう | default(...) を付与。

× Code Interpreter が呼ばれない/素の回答になる

  • Tools List で **Code Interpreter が有効(トグルON)**か確認。
  • Instruction に「必要に応じて Code Interpreter を使用」の明示を入れる。
  • Maximum Iterations を 1~3 に。

9. 発展アレンジ

  • Workflow as a Tool:小さな換算ワークフローをツール公開し、明示パラメータamount, from, to, rate)で受けると堅牢。
  • 他ツールの併用CurrentTimeWebScraper などを Tools List に追加し、Instruction に利用方針を追記。
  • ReAct との使い分け:検索→計算→整形の多段ステップが増えるなら ReAct も検討。

以上

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?