AIサービス開発中「LLMが生成する出力形式が安定しない」ことが問題となるケースが少なくありません。たとえば、JSON形式のデータが必要なのに、回答が途中で自然言語に変わったり、タグが欠けてパースに失敗したりすることがあります。こうした不安定さが原因で後続の処理が止まってしまい、業務フローに支障が出ることもあるのです。
| Pythonコードを生成するSmolagents(CodeAgent)
これに対し、オープンソースのAIエージェント開発フレームワークであるSmolagentsは、LLMが最終的にPythonコードを生成し、そのコードの実行結果をもとに回答を出す仕組みを提供しています。(CodeAgent)
ポイントは「最終的な出力を直接自然言語で返すのではなく、コードが出力した結果を返す」という点です。
- ユーザーからの問いを受け取る
- LLMが応答する代わりにPythonコードを生成
- 生成されたコードを実行して結果(completion)を得る
- その結果を最終回答として返したり、次のステップで再利用したりする
このように「コードを介して出力を受け取る」ことで、データの構造を厳密にコントロールしやすくなります。出力がJSONやCSV形式であれば、Pythonコード内で確実にフォーマットを整えてから返すことができるため、「タグが欠ける」「文字列が混在してパースに失敗する」といった問題が大幅に減るのです。
| ReACTを止めない仕組み
Smolagentsが行うのは、いわゆるReACT(思考→行動の連鎖)です。ユーザーの問いを一度に解決するのではなく、段階的にコードを生成し、実行結果を確認しながら次のステップを考えます。途中の思考プロセスもコードとして蓄積されるため、仮に一度エラーが出ても修正コードを再度生成して再チャレンジすることが可能です。
この一連の流れはすべて「コード生成 → 実行 → 結果確認」という形を取るため、自然言語でのやり取り中にフォーマットが崩れて処理が中断される心配がありません。結果として、後続のLLMやシステムとの連携もスムーズに行えるようになります。
| 具体事例:レポート生成の自動化
たとえば、データ分析の結果から定型レポートを自動生成する場面を考えてみましょう。通常のLLMを使ってレポート文書を直接出力させると、段落の構成や見出しの形式が崩れてしまい、後続のシステムが取り込めないケースがあります。
しかしSmolagentsであれば、まずはPythonコードを介して「分析結果の要約」「グラフの生成」「表形式への変換」といったステップを順に実行できます。最終的な出力を確実に整ったJSONやHTML形式で返すようにコード側で制御することで、レポート生成を途切れなく完了させられるのです。
| TrendViewerの課題にも応用
HALDATAのサービス「TrendViewer」でも、出力形態の不安定さに悩まされていました。LLMが途中で意図しない文字列を出力すると、可視化やレポート生成が止まってしまうリスクがあったのです。しかし、Smolagentsのアプローチを用いることで、「最終的に出力する形式をコードで保証する」ことが可能になります。これにより、後続の処理がエラーで止まらず、安定した自動化が実現しやすくなりました。
| まとめ
LLMの出力形式が不安定だと、ビジネスフローの自動化が難しくなります。Smolagentsは「Pythonコードを生成し、実行結果を回答とする」仕組みで、出力形態を安定化するため、途中でフォーマットが崩れず後続処理も止まらないという利点があります。