Labs AI Tools for Devs Docker Desktop Extension の概要

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

Docker Desktop で AI ツールを実行する簡単な方法をリリースしました。Labs AI Tools for Devs Docker Desktop 拡張機能を使用すると、プロンプトを簡単に実行したいユーザーでも簡単に開始できます。 

プロンプトの作成者の場合、このアプローチにより、プロンプトをより簡単に作成、実行、共有することもできます。 ここでは、その方法をご紹介します。

2400x1260 Docker Labs Genai

拡張機能を入手する

拡張機能は Docker Hub からダウンロードできます。インストールが完了したら、OpenAIキーを入力します。

プロジェクトのインポート

私たちのアプローチでは、プロンプトが必要とする情報はプロジェクトから抽出可能である必要があります。 SDLC ツールを実行するプロジェクトをここに追加します (図 1)。

青い「プロジェクトを追加」ボタンを示すスクリーンショット。
図 1: プロジェクトを追加します。

プロンプトの入力

プロンプトは git ref または git URL で、ref に変換されます。 また、独自のローカル プロンプト ファイルをインポートして、カスタム プロンプトの作成をすばやく繰り返すこともできます。

サンプル プロンプト

(参照をコピー+貼り付け)

道具Git 参照リンク形容
Dockergithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/dockerhttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/docker任意の Docker プロジェクトの Runbook を生成します
ドッカーファイルgithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/dockerfileshttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/dockerfilesNPM プロジェクトのマルチステージ Dockerfile を生成する
遅延ドッカーgithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/lazy_dockerhttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/lazy_dockerLazy Docker の Runbook を生成します
ティッカーgithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/npmhttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/npmNPMプロジェクトに関する役立つ情報で回答します
ESLintのgithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/eslinthttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/eslintプロジェクトでESLintを実行します
ESLint の修正github.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/eslint_fixhttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/eslint_fixプロジェクトで ESLint を実行し、最初に見つかった違反の修正で応答します
ピリントgithub.com:docker/labs-ai-tools-for-devs?ref=main&path=prompts/pylinthttps://github.com/docker/labs-ai-tools-for-devs/tree/main/prompts/pylintプロジェクトで Pylint を実行し、最初に見つかった違反に対する修正で応答します
github refまたはurlを入力するテキストボックスの横にある青い[ローカルプロンプトの追加]ボタンを示すスクリーンショット
図 2: GitHub の参照または URL を入力します。

独自のプロンプトの作成とテスト

プロンプトファイルの作成

プロンプト ファイルはマークダウン ファイルです。 次に例を示します。 prompt.md

# prompt system
You are an assistant who can write comedic monologs in the style of Stephen Colbert.

# prompt user
Tell me about my project.

次に、プロジェクトに関する情報を追加する必要があります。 これを行うには、口ひげテンプレートを使用します。

# prompt system
You are an assistant who can write comedic monologues in the style of Stephen Colbert.

# prompt user
Tell me about my project. 

My project uses the following languages:
{{project.languages}}

My project has the following files:
{{project.files}}

プロジェクトでツールを活用する

プロンプトのレンダリングに使用できるエクストラクターと同様に、Dockerイメージの形でツールを定義します。 関数イメージは、エクストラクターと同じ仕様に従いますが、逆になります。 

  • Docker イメージは、プロジェクトに自動的にバインド マウントされます。
  • Docker イメージのエントリ ポイントは、 –workdir を使用してプロジェクト内で自動的に実行されます。
  • 最初の引数は JSON ペイロードです。 このペイロードは、LLM が関数を呼び出そうとしたときに 生成されます
- name: write_files
  description: Write a set of files to my project
  parameters:
    type: object
    properties:
      	files:
        type: array
        items:
          type: object
          properties:
            path:
              type: string
              description: the relative path to the file that should be written
            content:
              type: string
              description: the content that should be written to a file
            executable:
              type: boolean
              description: whether to make the file executable
  container:
    image: vonwig/function_write_files:latest

プロンプトをテストする

  1. ファイルを Git リポジトリに追加し、公開リモートにプッシュします。
  2. GitHub でファイルを参照するための URL を貼り付けます。

または、ローカルプロンプトをインポートし、コンピューター上のファイルを選択します。

フォルダのURLを入力するためのテキストボックスを示すスクリーンショット。
図 3: フォルダのURLを追加します。

3。 走る。

## ROLE assistant

Don't even get me started on the files, I mean, have you ever sat down and really looked at a list of files? This project has got more layers than that seven-layer bean dip I had at last weekend's potluck. This project isn't just files on files, its files within files, its dot something after dot something else – and before you ask: Yes, all of these are REQUIRED!

Coming down to Dockerfile. Now, I've seen some Dockerfiles but our Dockerfile, folks, it's something else. It lifts, it grinds, it effectively orchestrates our code like a veteran conductor at the symphony. We also have multiple templates because who doesn't love a good template, right?

Oh, and did I mention the walkthroughs and the resources? Let's just say this isn't a "teach a man to fish" situation. This is more of a “teach a man to create an entire fishing corporation” scenario. Now THAT'S dedication.

Finally we've got the main.js, and let's be real, is it even a project without a main.js anymore?

いつものように、新しい 公開リポジトリでお気軽にフォローしてください。 このブログ記事で説明した内容はすべて、自分のプロジェクトで試すことができます。

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

さらに詳しく