Gordon の紹介: Docker の AI エージェント

この進行中の Docker Labs GenAI シリーズ AI開発者ツールのエキサイティングな空間を探ります。 Dockerでは、誇大広告なしでオープンに探求できる広大な範囲があると信じています。 私たちは探索を共有し、開発者コミュニティとリアルタイムで協力します。 開発者はGitHub Copilotのようなオートコンプリートツールを採用し、チャットを使用していますが、AIツールがソフトウェアのライフサイクル全体を通じて、より具体的なタスクやインターフェースを支援する可能性は大いにあります。 したがって、私たちの探求は広範囲に及びます。 ソフトウェアをオープンソースとしてリリースするので、私たちと一緒にプレイしたり、探索したり、ハックしたりできます。

前回の記事では、AIベースのツールが開発者のタスクの効率化にどのように役立つかに焦点を当て、ブランチのレビューやコード変更の理解など、エージェントのワークフローを実現するためのアイデアを提供しました。

この記事では、Docker AI Agent を作成するというアイデアに関する実験を探ります — これは、新しいユーザーが当社のツールや製品について学ぶのを助け、パワー ユーザーが物事をより迅速に進めるのに役立つ可能性があります。

2400x1260 Docker Labs Genai

このDockerエージェントとAIベースのツールに関する調査中に、私たちが遭遇した主な問題点はしばしば同じであることに気づきました。

  • LLMは、良い答え(ゴミが入る、ゴミが出る>)を提供するために、良い文脈が必要です。
  • AIツールを使用するには、多くの場合、コンテキストの切り替え(別のアプリへの移動、別のWebサイトへの移動など)が必要です。
  • 私たちは、エージェントがユーザーに代わってアクションを提案し、実行できるようにしたいと考えています。
  • AIとの直接的な製品統合は、多くの場合、チャットインターフェースよりも満足度が高いです。

最初は、ChatGPTやClaudeなどの既製のサービスを使用して何が可能かを確認しようとしました。 

「すべてのベスト プラクティスに従って、次の Dockerfile を最適化してください」などのテスト プロンプトを使用し、モデルに標準ではないが一般的な Dockerfile を提供することで、適切な回答が得られる場合があります。 しかし、多くの場合、結果として得られる Dockerfile には微妙なバグや幻覚が含まれていたり、単に最適化されていなかったり、期待していたベスト プラクティスの多くが使用されていなかったりしました。 したがって、このアプローチは十分に信頼性がありませんでした。

結局、データが主な問題になりました。 LLM モデルのトレーニング データは常にある程度の時間で古くなり、オンラインで見つけることができる不正な Dockerfile の数は、すべてのベスト プラクティスなどを使用して最新の Dockerfile の量を大幅に上回っています。

RAGアプローチを使用して概念実証テストを行った後、優れたDockerfileを作成するための多くの有用なアドバイスが記載されたドキュメントをいくつか含めて、AI Agentのアイデアは間違いなく可能であることに気付きました。 しかし、優れたRAGに必要なすべてのものを設定すると、私たちの小さなチームからあまりにも多くの帯域幅を奪われてしまいます。

このため、エージェントの特定の部分に kapa.ai を使用することを選択しました。 Dockerはすでにそれらを使用して DockerドキュメントでAIドキュメントアシスタントを提供しているため、高品質のドキュメントのほとんどは、サービスを通じてLLMの使用の一部として参照するためにすでに利用可能です。 kapa.ai を使用することで、より多くの実験を行い、高品質の結果をより迅速に得ることができ、AIエージェントのコンセプトに関するさまざまなアイデアを試すことができました。

ゴードンの登場

この実験から生まれたのが、試すことができる新製品、ゴードンです。 ゴードンと一緒に、これらの問題点に取り組みたいと考えています。 Gordon を Docker Desktop と Docker CLI に統合することで (図 1)、次のことが可能になります。

  • LLMがユーザーの質問を最もよく理解し、より適切な回答を提供したり、ユーザーに代わってアクションを実行したりするために使用できる、はるかに多くのコンテキストにアクセスできます。
  • ユーザーがいる場所にいてください。 Docker Desktop を使用してコンテナを起動し、失敗した場合は、Gordon を使用してすばやくデバッグできます。 ターミナルでハッキングしている場合は、Docker AIもそこにいます。
  • Gordonベースの機能をDocker Desktop UI要素の一部として直接提供することで、純粋なチャットベースのエージェントにならないようにします。 Gordon が特定のシナリオ (コンテナの起動に失敗したなど) を検出すると、UI にボタンが表示され、提案を直接取得したり、アクションを実行したりします (図 2)。
コンテナのリストでコンテナ名の横にゴードンアイコンが表示されているDockerデスクトップのスクリーンショット。
図 1: Docker デスクトップの Gordon アイコン。
ログ、検査、ファイル、統計、その他のオプションの横にある[Ask gordon]タブを表示しているDockerデスクトップのスクリーンショット。
図 2: ゴードンに聞く(ベータ版)。

ゴードンができること

私たちは、汎用的な問題ではなく、Docker関連のタスクに最適化することからGordonを使いたいと考えていますが、エージェントの作業が進むにつれて、より開発関連のタスクに範囲を拡大することを排除していません。

ゴードンの作業は初期段階にあり、その機能は常に進化していますが、すでにいくつかの点では非常に優れています(図 3)。 ここでは、ぜひ試してみていただきたいことをご紹介します。

  • Docker に関する一般的な質問をします。 Gordon は Docker を熟知しており、すべてのドキュメントにアクセスできます。
  • コンテナのビルドエラーまたはランタイムエラーのデバッグに関するヘルプをご覧ください。
  • Docker Scout からのポリシーの逸脱を修復します。
  • Docker 関連のファイルと構成の最適化に関するヘルプをご覧ください。
  • 特定のコンテナをどのように実行するかを尋ねます(例:「MongoDBはどのように実行できますか?」)。
docker ai に dockerfile の説明を求めた後の結果のスクリーンショット。
図 3: Gordon を使用して Dockerfile を理解する。

ゴードンのしくみ

Gordon バックエンドは Docker サーバー上に存在しますが、クライアントはユーザーのマシン上に存在し、Docker Desktop にバンドルされている CLI です。 Docker Desktop は、CLI を使用してローカル マシンのファイルにアクセスし、質問に答えるためにコンテキストが必要になるたびにユーザーにディレクトリを求めます。 CLI を直接使用する場合は、実行されている作業ディレクトリにアクセスできます。 たとえば、Dockerfile のあるディレクトリにいて、「Docker AI、Dockerfile を評価してください」を実行すると、そのディレクトリに存在するものが検索されます

現在、Gordon にはファイルへの書き込みアクセス権がないため、ファイルを編集することはありません。 私たちは、解決策を提案するだけでなく、エージェントがあなたのために仕事をすることを可能にする将来の機能に一生懸命取り組んでいます。 

図 4 は、私たちが舞台裏でどのように考えているかを大まかに示したものです。

図は、"ユーザーの入力を理解する" から始まり、"コンテキストを収集" して "最終的なプロンプトを準備する" と "結果を確認する", "ユーザーに返信する" などのフロー ステップで、gordon のしくみの概要を示しています。
図 4: ゴードンの概要。

このパイプラインの最初のステップである「ユーザーの入力を理解し、実行するアクションを把握する」は、 OpenAI API の「ツール呼び出し」(「関数呼び出し」とも呼ばれます)を使用して行われます。 

これは一般的なアプローチですが、オンラインのドキュメントはあまり良くなく、一般的なベストプラクティスはまだ明確に定義されていないことに気づきました。 そのため、この機能をたくさん試し、何がうまくいき、何がうまくいかないかを考えました。

私たちが気づいたこと:

  • ツールの説明は重要であり、例を挙げてより詳細な説明を優先すべきです。
  • ツール検出コードに関するテストも重要です。 要求に新しいツールを追加すると、LLM が混乱し、予期されるツールがトリガーされなくなる可能性があります。
  • 使用されるLLMモデルは、さまざまなモデルが特定の方法で記述された説明を好む場合や、特定のシナリオ(たとえば、多くのツールを使用する場合)での動作が改善/悪化する可能性があるため、ツール呼び出し機能全体を実装する方法に影響を与えます。

ゴードンを試してみてください

Gordon は、Docker Desktop バージョン 4から始まるオプトインベータ機能として使用できます。37。 クローズドベータに参加するには、サイトの フォームに記入 するだけです。

当初、Gordon は Docker Desktop と Docker CLI の両方で使用できるようになりますが、この技術の一部を製品の他のさまざまな部分にも表示させるという考えです。

Docker での取り組みの詳細については、 ニュースレターを購読してください。

さらに詳しく