ジェネレーティブAIを使用して実行可能なマークダウンを作成する

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

ジェネレーティブAI(GenAI)は、ツールとの関わり方を変えつつあります。 今日では、主にAIを活用した新しいチャットアシスタントの使用を通じてこれを経験しているかもしれませんが、ジェネレーティブAIが開発者の生活を改善する機会は他にもあります。

開発者が新しいプロジェクトに取り掛かるときは、そのプロジェクトで使用されるツールを習得する必要があります。 一般的な方法は、これらのプラクティスをプロジェクト README.md に文書化し、そのドキュメントをプロジェクトと共にバージョン管理することです。 

ジェネレーティブAIを使ってこのコンテンツを生成できますか? このコンテンツは、ツールの一般的な使用方法に関するベストプラクティスを表したいと考えていますが、さらに重要なことは、この特定のプロジェクトでツールをどのように使用すべきかということです。

これは、開発者、プロジェクトで使用されるツールを表すエージェント、およびプロジェクト自体の間の一種の会話と考えることができます。 Dockerツール自体について見てみましょう。

2400x1260 Docker Labs Genai

VSCodeでのMarkdownの生成

このプロジェクトでは、"このプロジェクトの Runbook を生成する" という新しいコマンドを 1 つ追加する VSCode 拡張機能 を作成しました。 図 1 に、実際の動作を示します。

このプロジェクトの Runbook を生成するための vscode 拡張機能を示すアニメーション gif。
図 1: Runbook を生成するための VSCode 拡張機能。

このアプローチでは、ツールの専門家が作成したプロンプトと、プロジェクト自体に関する知識を組み合わせています。 この組み合わせたコンテキストにより、LLMのドキュメント生成能力が向上します(図 2)。

専門家のプロンプトとプロジェクトの事実からLLMまでのプロセスフローを示す図。
図 2: このアプローチでは、専門家のプロンプトとプロジェクト自体に関する知識が組み合わされます。

このアイデアは、私たちがよく知っているツール(Docker)で説明していますが、この方法でコンテンツを生成するというアイデアは非常に一般的です。 Docker のビルド、実行、作成を開始するために使用したプロンプトは、GitHub から入手できます。これらのプロンプトの記述には確かに技術がありますが、特にAIアシスタントが作業をより簡単にするのに役立つ場合は、ツールの専門家がこの種のプロンプトを作成するための正しい知識を持っていると考えています。

ここにも重要なポイントがあります。 プロジェクトをコンテキストを取得できるデータベースと考えると、LLMにプロジェクトに関する事実を取得する機能を効果的に与えていることになります。 これにより、プロンプトをローカルコンテキストに依存させることができます。 Docker 固有の例として、プロジェクトに compose.yaml ファイルがない場合、AI に compose について話しないように促すことができます。 

「このプロジェクトでは Docker Compose を使用していません。」

それが本当なら、それは変革的なユーザープロンプトであることが判明しました。 これは、通常、会話を通じて学ぶことです。 ただし、常に役立つ特定のプロジェクトの詳細があります。 だからこそ、現地のプロジェクトにアシスタントがいると、とても助かります。

実行可能なマークダウン

Markdownファイルは主に読み取り用ですが、多くの場合、実行可能なものが含まれています。 LLMは、実際に実行可能なコマンドを表すコードブロックを含むことが多いテキストで私たちと会話します。 また、VSCode では、開発者は埋め込みターミナルを使用して、現在開いているプロジェクトに対してコマンドを実行します。 この相互作用を省略して、これらの Markdown Runbook から直接コマンドを実行できるようにしましょう。

現在の拡張機能では、シェルコマンドを含むすべてのコードブロックにコードアクションを追加し、ユーザーが組み込みターミナルでそのコマンドを起動できるようにしました。 この機能の調査中に、Markdownファイルを一種のREPL(read-eval-print-loop)として扱うと、LLMからの出力を洗練させ、最終的なコンテンツを改善するのに役立つことがわかりました。 図 3 これが実際にどのように見えるかを示しています。

ユーザーが組み込み端末でそのコマンドを起動できるように、シェルコマンドを含むコードアクションの追加を示すアニメーション gif です。
図 3: ユーザーが組み込み端末でコマンドを起動できるようにするコードを追加します。

Markdownはエディタを拡張します

長い目で見れば、コマンドを実行するためにMarkdownファイルに移動する人は誰もいません。 ただし、これらの Markdown ファイルは、開発者の編集セッション用のコマンドを作成するスクリプトとして扱うことができます。 開発者がそれらをキーストロークにバインドできるようにすることもできます (たとえば、プロジェクトの Runbook からビルド コード ブロックを実行するには「,b」と入力します)。

結局のところ、これはAIアシスタントが自分自身に話しかけているにすぎません。 アシスタントはコマンドを推奨します。 このコマンドは便利です。 それをショートカットに変えます。 アシスタントは、このショートカットが Runbook にあることを記憶し、このプロジェクトの開発中にいつでも使用できるようにします。

コンテキスト認識コンテンツを生成する AI アシスタントを示すアニメーション gif。
図 4:アシスタントの動作

図 4 は、アシスタント、生成されたコンテンツ、およびこれらのコマンドを実際に実行している開発者の間の実際のフィードバック ループを示しています。 

開発者として、私たちはキーボードで投票する傾向があります。 このコマンドが役に立つなら、本当に簡単に実行できるようにしましょう! そして、それが自分にとって役に立つなら、チームの他のメンバーにとっても役立つかもしれません。

GitHub リポジトリインストール手順は、今すぐ試す準備ができています。

詳細については、次のデモを参照してください: GenAI からの VSCode Walkthrough of Runnable Markdown

Docker Navigator を購読 して、Docker の最新ニュースを入手してください。

さらに詳しく