LangChain Blog出典公開日

「企業ハーネス」を構築する5つの要素

会社のハーネスをどのように作るか?

会社のハーネスをどのように作るか?

LangChainでは、マーケティング、セールス、エンジニアリングの各部門に内部エージェントを構築しました。その結果、各チームの仕事のやり方が完全に変わりました。正しく動作させるのは簡単ではありませんでした。マルチプレイヤーハーネスに関連する問題を解決するのに多くの時間を費やし、すべてのチームは同じ基本プリミティブに到達しました:

  • ‍人がすでに働いている場所にあります(私たちにとってはSlackです)
  • 相手が誰であるかを知り、その人に対してはOBOとしてサービスを提供し、他の人に対しては自身のアイデンティティを持つ
  • それには記憶力があり、グローバルレベルまたはユーザレベルで制御可能です
  • コードはサンドボックス内で実行され、認証が必要なサービスへのリクエストを行うことができます
  • その実行の大部分は、誰かによって明示的に呼び出されるのではなく、スケジュールされているだけである(環境エージェント!!)

このブログでの助けに@caspar_brに感謝します

LangChain内部エージェント

この議論を基礎とするために、LangChainに存在する3つの主要なエージェントについての簡単な概要を述べる:

GTMエージェント:GTM活動を支援する、常に稼働している能動型エージェントです。メールや新規適格リードを監視し応答する。毎日の概要レポートを送信し、アカウントに関する質問に回答でき、外部への動きを実行できます。

OpenSWE: 私たちのエンジニアリングエージェントは、PRの作成や起草を行うことができ、また全てのPRに対してコードレビューも実行します

コンテンツスタジオ:私たちのマーケティングエージェントで、私たちのスタイルとポジショニングに関する知識を活かしてアセット(ブログ、画像、PowerPoint、動画)を作成します

これらのエージェントはすべて同じ方法で構築されています。これは企業用ハーネスを構築するための一般的な方法だと考えられます。

問題:ユーザー体験

私たちのエージェントは、すでに人々が働く場所に置かれています。私たちにとってそれはSlackです。各エージェントには独自のSlackアプリがあり、チャンネル内でDMを送ったりタグを付けたりすることができます。チャンネル内でこれらのエージェントを利用する利点は、他の人がその人々がどのように使っているかを見ることができることです。

私たちが追加した素晴らしい機能は、「Slackで会話を別のスレッドに切り出す」という概念です。多くの場合、素晴らしい会話が行われており、エージェントに意見を求めたり、何かを行うように指示したいことがあります。しかし、そのスレッド内でエージェントが動けば、人間の会話が汚染され、注意が散漫になってしまいます。そこで、エージェントがチャンネル内で自分自身のスレッドに切り出すための簡単な方法を追加しました。

Slackでは避けるべきユーザー体験があります。例えば、GTMエージェントが送ってほしい電子メールを確認する際、Slackで一度だけ行うのは問題ありませんが、大量のメッセージがある場合、Slackのメッセージからそれらを追跡するのは全く面倒な作業です。そのような体験に対しては、私たちがカスタムUIを作成することにしました。

問題:同一性

私たちが対処した最も厄介で難しい問題はアイデンティティでした。具体的には、これらのエージェントが行動を起こすとき、彼らは誰のために行動するのかということです。

業界ではこれを扱う主な方法が2つあります:

  • ‍On-behalf-of: エージェントは、エージェントを呼び出したユーザーの代わりに行動する‍
  • 認証情報の修正: エージェントがどのような呼び出し元(例:サービスアカウント)からでも使用する、固定された一連の認証情報があります。

これは、各エージェントに対する対処法です(ドキュメント:Managed Deep AgentsにIDを追加する、接続を管理する):

OpenSWE:

  • メッセージを送ったとき、それはあなたの代わりに行動します(例えば、あなたのGitHubハンドルでPRを開くことになります)
  • バックグラウンドで実行されるとき(例えばコードレビューエージェントとして)、それ自身のアイデンティティを持って動作する(GitHubアプリ)

GTMエージェント:

  • いくつかのツール(例:Salesforceアクセス)では固定されたIDを使用しているため、全員がログインする必要はありません
  • エージェントを呼び出すユーザーの代わりに動作するツール(例:メール)がいくつあります。これらのツールはDMでのみ利用可能です。共有チャンネルでは利用できません。

コンテンツスタジオ:

  • エージェントを呼び出すユーザーの代わりに動作するツール(例:Notion)がある
  • あるツール(例:Twitter)では、固定された認証情報を使用しています。この場合は私たちの会社のTwitterアカウントです。ただし、ホワイトリストに登録されたユーザーのみが特定の操作を行うことができます。例えば、すべての人がTwitterに投稿できるわけではなく(読む/投稿するしかできない)、

問題:メモリ

すべてのエージェントは2層のメモリを持っています:

  • グローバルメモリ:すべてのユーザーに適用されるメモリ
  • ユーザーメモリ:特定のユーザーにのみ適用されるメモリ

エージェントは、記憶のどのレベルに記憶したい事実を決定する。

これはおそらく今までで最も探索が少ない地域です。ここではやりたい仕事がたくさんあります!

問題:コード実行

私たちの3人のエージェントはすべてコードを書き、実行することができ、タスクを完了するためにしばしばそれが必要です。彼らはすべてサンドボックス外で実行するパターンに従いますが、サンドボックスに接続してそこでコードを実行します。彼らはすべて、異なる依存関係を持つ少し異なるベースイメージを持っています。OpenSWE(最もコーディングに関連するエージェント)は、どのベースイメージを起動するかについて知恵がある(チャンネル/ユーザーによって異なる)。彼らはすべて、秘密プロキシを利用し、LangSmith Sandboxes内でサービスに安全かつ安全な方法で接続できる(Managed Deep Agentsのサンドボックスの追加も参照)ことを利用します。

問題:スケジュールされた実行

多くの実行は、ユーザーが直接開始するのではなく、イベントによってバックグラウンドでスケジュールされるかトリガーされます。

これらのうちのいくつは、エージェントの開発者によって設定されます。例えば、OpenSWEはPRを待ち、新しいものが作成されたときにそれをレビューします。

他の場合は、ユーザーがエージェントにそうするよう依頼することで設定されます。例えば、GTMエージェントに毎日のレポートを送信させるよう依頼したところ、そのエージェントが自らcronを作成しました。

すべてはマネージドディープエージェント上で構築される

これらのエージェントはすべて、マネジド・ディープエージェントを基盤として構築されています。これはオープンソースのディープエージェントハーネス上に構築されています。これにより、チャンネル、クローラ、サンドボックス、メモリ、アイデンティティなどのすべての問題を解決するためのインフラが提供され、必要に応じてエージェントの動作をカスタマイズするための十分な柔軟性も得られます。今日すぐにクイックスタートを試してみてください!

原文の出典

LangChain Blog

内容について

原文の公開と権利は出典元に帰属します。

機械翻訳 · 原文をご参照ください