サブプロシージャは複雑なFin Proceduresをより小さく焦点を絞ったフローに分割できます。メインのプロシージャを分かりやすく保ちつつ、ロジックの再利用と重複の削減に役立ちます。
サブプロシージャはコードのヘルパー関数のように考えられます:Finは上から下へ実行し、その後親プロシージャに戻ります。
主な利点と使用例
読みやすさの向上:詳細なロジックを明確で名前付きのステップの背後に隠します。
ロジックの再利用:同じプロシージャ内の複数のポイントでロジックを使い回せます。
メンテナンスの簡素化:共有ロジックを一箇所で編集できます。
信頼性の向上:複雑または失敗しやすいステップを分離します。
Finにおけるサブプロシージャの動作
サブプロシージャはプロシージャ内のネストされたステップのリストのように振る舞います。
Finはサブプロシージャを上から下へ実行します。
完了後、Finは親プロシージャの次のステップに戻ります。
/End sub-procedureを使って早期終了できます。サブプロシージャは他のサブプロシージャ内にネスト可能です。
共有コンテキストと分離
共有コンテキスト:コネクタの出力、属性、ユーザーの応答は親とそのサブプロシージャ間で共有されます。
分離:データは親プロシージャの外には保持されません(例:
/Switch procedure使用時)。
注意:サブプロシージャは単一の親プロシージャにスコープされ、異なるプロシージャ間で再利用できません。
サブプロシージャの作成と実行方法
サブプロシージャの作成
Fin AI Agent > Train > ProceduresからFinプロシージャを開くか作成します。
左側のメニューに移動します。
+ New sub-procedureをクリックします。
新しいサブプロシージャエディタにリダイレクトされます。
ステップを入力し、サブプロシージャに分かりやすい名前を付けます。
同じメニューでサブプロシージャにカーソルを合わせると削除や並べ替えができます。名前変更はサブプロシージャを開き、エディタ上部のタイトルを編集してください。
サブプロシージャの実行
Fin AI Agent > Train > Proceduresから親プロシージャを開きます。
コマンドメニューを開くには/を入力します。
Run sub-procedure.を選択します。
実行したいサブプロシージャを選びます。
Finはサブプロシージャを実行し、その後親フローの残りのステップを続行します。
ヒント:コードの関数の戻りのように、/End sub-procedureを使って早期に戻れます。
サブプロシージャ使用のベストプラクティス
意味のあるロジックにサブプロシージャを使う
サブプロシージャは明確で再利用可能なロジックをカプセル化すると最も効果的です。
効果的な使用例:
複雑な分岐は条件を煩雑にしがちです。
繰り返し使うロジックはプロシージャ内の複数箇所で使われます。
エスカレーションや引き継ぎフローは一貫した動作が必要です。
失敗しやすいステップは分離とテストで効果的です。
効果が薄い使用例:
単一で些細なアクションは再利用の必要がありません。
ロジックが1つの
/Instructionまたは/Conditionに収まる場合。過度な分割は常にコンテキスト切り替えを強いられます。
サブプロシージャのチェーンは浅く保つ
可能な限り、サブプロシージャ→サブプロシージャ→サブプロシージャのような深いネストは避けてください。
注意:深いネストはFinのパフォーマンスに影響しませんが、プロシージャの読みやすさ、デバッグ、メンテナンスを難しくします。
サブプロシージャには分かりやすい名前を付ける
サブプロシージャが何をするかを説明する、説明的で行動指向の名前を使いましょう。
良い例:
CollectPaymentInfo
VerifyUserIdentity
ResolveDeliveryIssue
避けるべき名前例:
Step4
PartB
HandleRefundSectionA
明確な名前は全体のフローをスキャンしやすく理解しやすくします。
使用例
メインフローから複雑なロジックを抽象化する
サブプロシージャは詳細なチェックや検証を隠し、メインプロシージャを読みやすく保ちます。例えば、顧客の保険会社が対応しているかの確認は、主要なロジックを煩雑にせず専用のサブプロシージャに置けます。
共有の引き継ぎロジックを再利用する
プロシージャの複数箇所で同じエスカレーションや引き継ぎ処理が必要な場合、そのロジックをサブプロシージャに置くことで一貫性が保てます。更新が必要な時は一度の変更で済みます。
よくある質問
サブプロシージャは異なるプロシージャ間で再利用できますか?
サブプロシージャは異なるプロシージャ間で再利用できますか?
いいえ。サブプロシージャは定義された親プロシージャ内でのみ再利用可能です。
サブプロシージャは他のサブプロシージャを呼び出せますか?
サブプロシージャは他のサブプロシージャを呼び出せますか?
はい。他のサブプロシージャ内でサブプロシージャを実行できますが、可能な限り深いネストは避けてください。
サブプロシージャ終了後もデータは保持されますか?
サブプロシージャ終了後もデータは保持されますか?
はい、同じ親プロシージャ内では保持されます。異なるプロシージャ間では保持されません。

