【ITニュース解説】Sushify - A New Free & Essential Tool For AI App Developers
2025年09月06日に「Dev.to」が公開したITニュース「Sushify - A New Free & Essential Tool For AI App Developers」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Sushifyは、AIアプリ開発でLLM(大規模言語モデル)が誤動作する原因となる複雑な入力(プロンプトや関連情報)の問題を早期に発見し、解決する無料のオープンソースツールだ。実行時にLLMへのデータ授受を監視・分析し、バグを防ぎ、開発者が高品質なAIアプリを効率よく作れるよう支援する。
ITニュース解説
Sushifyは、大規模言語モデル(LLM)を利用するAIアプリケーションの開発者が直面する、やっかいな問題を解決するために生まれた新しいツールだ。AIアプリ開発では、LLMに与える指示や情報を「プロンプト」と呼ぶが、これは単なるテキストの命令文にとどまらない。実際には、LLMが使う機能(ツール)、期待する出力の形式(出力スキーマ)、これまでの会話履歴など、さまざまな情報が複雑に絡み合って構成されている。Sushifyは、これらのLLMに渡されるあらゆる情報に潜む問題を、開発の早い段階で見つける手助けをする。
LLMを使ったアプリケーションでは、そのロジックの多くが自由な形式のテキストで表現される。なぜなら、LLMが理解し、処理できるのは基本的に言葉だからだ。プロンプトは、あらかじめ用意されたテキストの断片や、情報が埋め込まれるテンプレートを、プログラムの実行中に組み合わせて作られる。時には繰り返し処理や条件分岐が使われたり、複数のAIエージェントやワークフロー間で共有されたりすることもある。さらに、LLMが外部と連携するための「ツール」もプロンプトの一部として渡される。ツールにはその役割の説明、必要な入力パラメーター、そしてそれらの入出力形式に関する指示が含まれる。同様に、LLMから特定の形式で出力データを得たい場合(構造化出力)も、そのスキーマ情報がプロンプトとして渡される。
このような複雑な構造の中で、たとえばあるツールの出力形式が変わったにもかかわらず、プロンプト内のどこかに古い形式への参照が残っていると、LLMは混乱し、意図しない動作をしてしまう可能性がある。また、LLMへの指示が曖昧すぎたり、逆に厳しすぎたり、あるいは以前の指示と矛盾していたりすることも頻繁に起こる。その結果、LLMは開発者の指示を無視したり、予測不可能な振る舞いをしたりするようになる。多くの場合、開発者はこの問題を解決しようと、さらに多くの自由テキストの指示を付け加えてしまうが、それがかえって状況を悪化させる原因となることも少なくない。開発者自身も、このような問題に繰り返し直面し、その非効率さに気づいて解決策を模索し始めた。
当初、開発者は、通常のプログラミングコードに対して使われる「リンター」や「コンパイラ」のように、LLMへの入力を静的に分析できないかと考えた。リンターはコードの間違いや記述ルール違反を指摘し、コンパイラはコードを機械が実行できる形式に変換する際に文法エラーなどを検出する。これと同じように、コードの中からLLMの呼び出し部分を特定し、関連する全ての情報がどのようにプロンプトに組み込まれるかという依存関係を追跡して、最終的なプロンプトを分析しようとしたのだ。
しかし、この「静的解析」というアプローチには限界があった。プロンプトに組み込まれるデータの中には、実際にプログラムが実行されないとわからないものが多いからだ。例えば、外部データベースから取得する情報、他のツールの実行結果、APIからの応答などは、実行時に初めて明らかになる。また、プロンプトの組み立て方も複雑で、簡単な条件分岐ですら解析が困難だった。どんなに高度な解析を試みても、完璧な信頼性には至らず、分析のためのコンピューティングコストも高かったため、この初期の試みは断念せざるを得なかった。
静的解析が難しいと判明したため、次に開発者が目を向けたのは「ランタイムトラッキング」、つまりプログラムの実行中にLLMとのやり取りを監視するというアプローチだった。この方法には明確な利点があった。実際にLLMに何が送られているのか、その正確な情報を見ることができるため、推測や仮定をする必要がない。アプリケーションがさまざまなシナリオで実行されれば、それに応じて生成されるあらゆるプロンプトのパターンを捕捉できる。
さらに、LLMからの応答も同時に確認できる点が大きなメリットだった。これにより、プロンプトの問題とLLMの実際の振る舞いを関連付けて分析できるようになる。会話履歴の取り扱いや、文脈を効率的にまとめる(コンテキスト圧縮)際のバグなども、実行時のデータを通して発見できるようになる。
このランタイムトラッキングを実現するにあたり、いくつかの方法が検討された。最初は、監視したいアプリケーションに専用のソフトウェア開発キット(SDK)を組み込み、LLMに送るデータと同じものをSDKにも渡す方式が試された。しかし、これはアプリケーション側の変更が多くなり、組み込みが煩雑でエラーも発生しやすいことが問題となった。開発者は、より手軽に、最小限の労力で使える「プラグアンドプレイ」のようなシンプルさを求めていた。
そこで採用されたのが「プロキシ」という方式だ。プロキシとは、アプリケーションとLLMの間に立つ仲介役のようなものだ。アプリケーションがLLMにリクエストを送る際、まずプロキシを通過させ、プロキシがそのリクエストの内容とLLMからの応答をすべて傍受・記録する。この仕組みなら、アプリケーション自体に大幅な変更を加える必要がなく、透過的かつ確実にLLMとの通信内容を監視できる。また、現在の多くのAIアプリケーションがDockerなどのコンテナ技術で構築されているため、プロキシもDocker環境で容易に使えるようにすることが重要だと考えられた。
これらの試行錯誤の末に生まれたのがSushifyだ。まだ開発の初期段階ではあるが、すでにその価値は高く、開発者自身が気づかなかったプロジェクト内の問題を発見するのに役立っている。プロンプト関連のデバッグ作業を劇的に簡素化し、効率的に問題解決へと導く。Sushifyは、これからAIアプリケーション開発に挑戦するシステムエンジニアの卵たちにとって、高品質なAIアプリを効率的に作り上げるための強力なツールとなるだろう。