新しいコンピューター、何も入っていない
前のレッスンでは、エージェントは準備ができて待っていました。仕事では、何も入っていないコンピューターから始めることがよくあります。今日は、エージェントを自分でインストールし、モデルがどこにあるかを教え、もう一度売店のプログラムで使います。
このレッスンの終わりには
メモ
コーディングエージェントをインストールして、モデルにつなぐことができる。
キーワード
- パッケージ:インストールできるようにまとめたプログラム。
- npm:JavaScript のパッケージをインストールするツール。
- 設定ファイル:プログラムが起動するときに読む、設定を書いたファイル。
- エンドポイント:プログラムがリクエストを送る先の、ウェブのアドレス。
- プロキシ:どのアドレスにつなげるかを決める、中継役。
はじめる前に
メモ
このレッスンの上にあるバーのラボを起動を押して、動いていると表示されるまで待ってください。ラボは agent というサービス1つで、ターミナルはその名前でつながります。下の実行ボタンを押すと、コマンドが順番に、同じセッションのラボのターミナルへ入力されます。実行の様子を見たり、自分でコマンドを打ったりするときは、バーのターミナルを開く(新しいタブ)を押します。
1. 何もインストールされていない
npm ls -g は、このコンピューターのすべてのプロジェクトのためにインストールされたパッケージを一覧にします。一覧は空です。エージェントは、まだありません。
docker exec agent npm ls -gここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. エージェントをインストールする
最後の @1.19.3 は、ひとつのバージョンを固定します。だから、クラスのみんなが同じエージェントを使えます。インストールには、1分ほどかかります。Killed という言葉で止まったら、npm がファイルを書いている間に、ラボのメモリーが足りなくなったのです。もう一度実行してください。そのあと、エージェントに、どのバージョンかを尋ねます。
docker exec agent npm install -g --no-fund --no-audit [email protected]ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
docker exec agent opencode --versionここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
npm はどうやってラボの外に出たのか
メモ
このラボには、インターネットへの出口がありません。npm は、http://ai:3128 にあるプロキシを通して、パッケージを受け取りました。このプロキシは、npm のレジストリ(パッケージの置き場)だけを通し、ほかのアドレスはすべて断ります。
3. モデルがどこにあるかをエージェントに教える
エージェントは、設定ファイルで教えてもらうまで、どのモデルを使うかを知りません。例を読んでください。baseURL はエンドポイントで、ai:4000 にあるプラットフォームのモデルです。model は、その名前 lab/lab で選びます。permission は、ファイルを編集したりコマンドを実行したりする前に、エージェントに確認させます。そのあと、フォルダーを作って、ファイルをその中にコピーします。
docker exec agent cat /home/node/opencode.example.jsonここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
docker exec agent mkdir -p /home/node/.config/opencodeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
docker exec agent cp /home/node/opencode.example.json /home/node/.config/opencode/opencode.jsonここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
エージェントがモデルにつなぐには、設定に秘密のキーが必要だと考える人は多いです。ここでは、キーは lab という仮の値です。本物のキーは、ラボが外に出すときに付け足すので、うっかり共有してしまうファイルの中には、決して入りません。提出する設定に、本物のキーを貼りつけてはいけません。
4. 自分のエージェントを使う
まず、設定がうまくいっていることを確かめるために、質問を1つします。次に、エージェントの画面を開いて、前のレッスンと同じように、total のバグを直すように頼みます。許可する前に、1つ1つの変更を読んでください。閉じるときは Ctrl+C を2回押します。そのあと、テストを実行します。
docker exec -w /home/node/project agent opencode run "In one sentence, what does shop.js do?"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
docker exec -it -w /home/node/project agent opencodeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
docker exec -w /home/node/project agent node --testここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
答えてみよう
- インストールするとき、なぜ
@1.19.3のように、バージョンをはっきり指定するのですか。 - 設定のどの行が、モデルのある場所を教えていますか。
- ラボに外への出口がないのに、npm はどうやってレジストリにつながりましたか。
- あなたの設定に、本物のキーが入っていないのはなぜですか。
- 停止してもう一度起動したあと、何をもう一度しなければなりませんか。それはなぜですか。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。このラボは最初のレッスンのものと同じですが、何もインストールされていません。生徒は、許可リスト式のプロキシを通して npm から opencode をインストールし、設定をコピーして所定の場所に置きます。学習のポイントは3つです。1. プログラムはパッケージとしてインストールされ、バージョンを固定する。2. 設定ファイルが、エージェントにモデルの場所を教える。3. キーは、提出するファイルには決して入れない。エージェントは設定がなくても動くと考える生徒の間違いに気をつけて、生徒の発言に耳を傾けてください。そういう生徒には、コピーする前に実行させてみてください。生徒は、自分の opencode.json、修正の前後のテスト結果、そして質問への答えを提出します。自分のモジュールにコピーして変更するか、レッスンビルダーのラボメニューから最初から作ってください。