業務効率化、自動化としてLLMを利用としたときに以下の課題によく直面します。
- 精度が低い
- 実行速度が遅すぎ
- コストが高い
私自身、Webアプリケーションの管理作業をLLMで自動化、効率化していますが、同じように直面しました。
私なりに乗り越えたので設計思想、デザインをまとめようと思います。
LLMじゃなくてもできることはLLMでやらない
これが一番大事で、これさえ守れば3つの課題は大抵解決します。
例えば「ポケモン名を見たときにタイプを答える必要がある」というようなタスクがある場合
ゼニガメ→みず
ピカチュウ→でんき
ヒトカゲ→ほのお
こんな感じです。
確かにLLMに「〇〇のタイプを教えて」と聞けば答えてくれます。

でも、以下のようなcsvデータが元からあればLLMは要らないですよね?
ゼニガメ,みず,
ピカチュウ,でんき,
ヒトカゲ,ほのお,
....
モモワロウ,どく,ゴースト
イメージは以下です。
> python pokemon_type.py ヒトカゲ
ほのお
>
比較しましょう。
LLMを利用せず、CSVが良いことは明白です。
これは、原則こうなります。
そんなの当たり前だよという人へ
これは、複雑度や抽象度が大きくなると忘れがちになるということを伝えたいです。
例えばこんな文章があったとき
サトシのピカチュウは「ボルテッカー」を代表技の一つとして使用し、全身に電気をまとって突進する高威力の必殺技として描かれてきた。主な使用技は「10まんボルト」「アイアンテール」「でんこうせっか」「エレキボール」、そして時期によって「ボルテッカー」。相手の技を受け止めながら突破するなど、パワーと機動力を兼ね備えた戦闘スタイルを象徴する技でもある。
「サトシのピカチュウの覚えているわざでいちばん威力の高いものは?」と聞くとすると
※間違いです。実際には、エレキボールの方が条件によって威力150が出ます。えらそうに間違えている。
この場合、LLMにしかできないことだけを任せると冒頭3つの課題が解決しやすいという話です。
LLMにしかできないことだけを任せる
このタスクにおいてLLMにしかできないことは
「長文からわざを抜き出す」ということです。
(正規表現とか使っても、表記揺れに対応できないですよね)
なので、LLMでやる部分を限定するのです。
①LLMへ「サトシのピカチュウの覚えているわざの一覧を教えて」
10まんボルト, アイアンテール, でんこうせっか, エレキボール, ボルテッカー
②わざ.csvから最高威力が高いものを検索(Pythonとかで)
わざ名,最低威力,最高威力
10まんボルト,90,90
エレキボール,40,150
アイアンテール,100,100
ボルテッカー,120,120
....
これで、「抜き出して」+「比較して」と一気にLLMに指示した時より精度が高くなります。(単純な指示の方がLLMの精度が良いため
ルールベースでできることはルールベースでやるべきです。
まとめ
この原則に従って、AIエージェントを構築すると、複雑な処理もできるようになりました。
↓大体5000字〜10000文字のブログから120項目の構造化データを検索可能な形で抽出することに成功した例です。
Webサービスとして公開していて、ユーザーの100記事程度の分析を実績があります。
もっと改善して、設計パターン論、みたいな話をどんどん書いていきたいです。

