10 ポイント 投稿者 GN⁺ 2024-06-21 | 2件のコメント | WhatsAppで共有
  • OctomindはAIエージェントを使って、Playwrightにおけるエンドツーエンドテストを自動生成・修正している。
  • 当初はLangChainフレームワークを使用していたが、時間が経つにつれてLangChainの高い抽象化レベルが問題を引き起こした。

LangChainの問題点

  • LangChainの抽象化は当初は有用だったが、複雑な要件が生じるにつれてコードの理解と保守が難しくなった。
  • LangChainの内部構造を理解し、デバッグするのに多くの時間を要した。
  • たとえば、単純な英単語をイタリア語に翻訳するコードでも、LangChainを使うと複雑さが増す。

LangChainの抽象化の問題

  • LangChainは複数の抽象化を重ねて使うことで、コードの複雑さを増大させる。
  • こうした抽象化は、コードの理解とデバッグを困難にする。
  • たとえば、APIからJSONデータを取得する単純な作業でも、LangChainを使うと複雑さが増す。

開発チームへの影響

  • 複雑なエージェントアーキテクチャを実装しようとするとき、LangChainが制約要因として作用した。
  • LangChainを取り除いた後は、要件に合わせて自由にコーディングできるようになった。

AIアプリケーション構築にフレームワークは必要か?

  • LangChainは当初は有用だったが、長期的にはフレームワークなしで開発したほうがよかったはずだ。
  • ほとんどのAIアプリケーションは、シンプルなコードといくつかの外部パッケージだけで十分に実装できる。
  • エージェントの利用パターンが確立されるまでは、シンプルなアプローチが推奨される。

モジュール型ビルディングブロックを使った高速で簡潔な開発

  • フレームワークは構造を強制するが、AIアプリケーションにはまだ確立された利用パターンがない。
  • モジュール型ビルディングブロックのアプローチは、シンプルな低レベルコードを好み、開発速度を高める。
  • ベクターデータベースのようなモジュール型コンポーネントを使うことで、コードベースを簡潔かつ適応しやすい状態に保てる。

GN⁺の見解

  • LangChainの限界: LangChainの高い抽象化は当初は有用だが、複雑な要件が生じるとかえって障害になりうる。
  • モジュール型アプローチの利点: モジュール型ビルディングブロックのアプローチは、コードの理解と保守を容易にし、開発速度を高める。
  • フレームワーク必要性の再考: すべてのAIアプリケーションにフレームワークが必要なわけではなく、シンプルなコードと外部パッケージでも十分に実装可能である。
  • 開発速度の重要性: AI分野では素早い実験とプロトタイピングが重要であり、フレームワークはそれを制限する可能性がある。
  • 今後のエージェント利用パターン: エージェントの利用パターンが確立されるまでは、シンプルなアプローチを維持するのがよい。

2件のコメント

 
yangeok 2024-06-24

失敗したアーキテクチャだという話が広まっていましたが、GeekNewsでもそれを見るようになりましたね

 
GN⁺ 2024-06-21
Hacker Newsの意見
  • 最初の商用LLMエージェントを昨年10月/11月に構築: LangChainを使わず、エージェントをゼロから直接構築したほうが、より良い結果を得るのに役立った。

  • LLMフレームワークの複雑さ: LangChainのようなLLMフレームワークは、JavaやPythonのような複雑さを持ち込む傾向がある。

  • LangChainとChatGPTの比較: LangChainはChatGPTが登場する前に作られたが、ChatGPTがより優れた対話モデルを提供するようになり、LangChainの必要性は薄れた。

  • LangChainの価値をめぐる議論: LangChainは開発者とLLMの間に位置しようとしたが、実質的な価値を付け加えられず、不必要な抽象化を導入した。

  • 良い抽象化と悪い抽象化: 良い抽象化はアプリケーションロジックを扱い、悪い抽象化は必要な作業そのものを抽象化してしまい、洞察を失わせる。

  • エージェント利用の問題点: コンテンツ生成にエージェントを使うより、順次プロンプトを使うほうが簡単で効果的だ。

  • Raggedフレームワークの紹介: LLMと簡単に接続できる軽量コネクタであるRaggedを紹介している。ORMに似た統合インターフェースを提供する。

  • LangChainの有用性不足: LangChainのアプローチは興味深いが、実際にはLLMランタイムライブラリを直接使うほうが効率的だ。

  • 急速に変化するエージェントフレームワーク: 使用しているエージェントフレームワークは急速に変化しており、小さなバージョン変更でも現在の構成が壊れる可能性がある。

  • LangChainの複雑性の問題: LangChainは単純なユースケースには複雑すぎ、複雑なユースケースには適応しにくい。直接コードを書くほうが良い場合が多い。