エントリー済み

決定論的なコードに、LLMをどう組み込むか 〜LLMアプリにおける責任境界の設計〜

中級者 Application / Development

LLMを組み込むと、決定論的に動くコードの中に、毎回同じ答えを返すとは限らない処理が入ります。

私が最初に決めるのは、どの処理をモデルに任せ、どこをコードで保証するかという線引きです。境界を決めずに作ると、読み取りから集計、判定までが1回の推論に入ります。上位のモデルに替えても、同じ入力に違う答えが返ることがあります。境界の位置だけを変えた実装を並べて比べると、読み取りだけをモデルに任せた実装は、モデルを替えずに上位モデルと同じ結果になりました。

本セッションでは、この比較で分かったことを話します。まず、入力が曖昧か、出力を検証できるか、誤っても取り返せるか、毎回同じ答えでなくてよいか、の4つを処理ごとに問い、すべて「はい」のものだけをモデルに渡す振り分け方。次に、渡した処理を型で受け、検算で確かめ、合わなければ差し戻し、最後は人へ回す作りと、型が守るのは出力の形までだった話。そして、境界をすり抜けた誤りを追うと、原因はモデルより仕様の曖昧さにあったこと。コード側をユニットテストで固め、モデルの評価と切り離す進め方にも触れます。

Speaker

Shinnosuke Yakumo

株式会社クレスコ

ソリューションアーキテクト

2024年に株式会社クレスコへ入社。以降、さまざまな業界のお客様に向けて、LLMを組み込んだアプリケーションやAIエージェントを提案しています。営業・提案から設計、開発までを担当し、クラウドのインフラ構築からアプリケーションの実装まで一貫して行なっています。提案した内容をそのまま自分で作るため、どの処理をモデルに任せ、どこをコードで保証するかは、提案の段階から考えるようにしています。