プログラムの自動生成に再挑戦 

# 1．最初の挑戦
先日から、AIによるプログラムの自動生成をお試しているが、どうもうまくいかない。

自動生成のお題の要件は、おおよそこんな感じでした。

:::note
Amazon Bedrockを使用するチャットアプリを作成してください。使用するモデルは"anthropic.claude-3-5-sonnet-20240620-v1:0"、リージョンは東京リージョンです。実行環境は、Windows上のコマンドプロンプトで、入力には日本語が含まれます。
:::

私の問合せの仕方や、どこであきらめたかに依存しますが、下記のような結果となりました。1番と3番のように、手段が異なっていても、モデルが同じなら同様な結果になるようです。

<table>
  <thead>
    <tr>
    　<th>No.</th>
      <th>ツール/手段</th>
      <th>モデル</th>
      <th>結果</th>
      <th>メモ</th>
    </tr>
  </thead>
  <tr>
    <td>1</td>
    <td>ChatGptと相談</td>
    <td>gpt-4o</td>
    <td>完成せず</td>
    <td>
boto3のクライアント生成時のサービス名称が'bedrock'から解決できず（’bedrock-runtime’が正）。指摘すると、なぜか'sagemaker-runtime'への修正を提案してきた。
    </td>    
  </tr>
  <tr>
    <td>2</td>
    <td>Geminiと相談</td>
    <td>1.5 Flash</td>
    <td>完成せず</td>
    <td>
入力パラメータのpromptの値のCloudeに応じた書式まで対応できなかった。プロンプトの書式に対して指摘したら、プロンプトエンジニアリングの一般論に脱線。
    </td>    
  </tr>
  <tr>
    <td>3</td>  
    <td>Cursor</td>
    <td>gpt-4o</td>
    <td>完成せず</td>
    <td>
サービス名称を"bedrock"としてしまう。エラーメッセージを見ても、解決できず。
また、modelIdをEndpointNameにしてみたり、サービス名にsagemaker-runtimeを提案してきたり迷走。
    </td>    
  </tr>
  <tr>
    <td>4</td>  
    <td>Cline</td>
    <td>Deep Seek v3</td>
    <td>完成した</td>
    <td>
ただ、最初は提案をそのまま受け入れていると、実行環境の構築エラーがいろいろ出た。
    </td>    
  </tr>  
</table>

CursorやClineは、Aiを活用したエディタになります。Cursorは、VS Codeからのフォーク、ClineはVS Codeのアドオンの形態となります。

[Cursorの公式サイト](https://www.cursor.com/)
[Clineの公式サイト](https://github.com/cline/cline)

Deep Seekは、中国企業が提供しているAIモデルです。
安価で高性能ですが、リスクもあるため、ビジネスの本番運用では要注意です。

[Deep Seekの公式サイト](https://www.deepseek.com/)

下記は、きのぴー@「Cursor完全ガイド」さん(@kinopee_ai)による注意喚起の流れです。

https://x.com/kinopee_ai/status/1878315021899596207


# ２．再挑戦
Amazon BedrockのAPIの詳細よりは、メジャーな内容で試してみました。お題はこちら。

:::note
LangChainを使用したチャットアプリのプログラムを作成してください。
:::

<table>
  <thead>
    <tr>
    　<th>No.</th>
      <th>ツール/手段</th>
      <th>モデル</th>
      <th>結果</th>
      <th>メモ</th>
    </tr>
  </thead>
  <tr>
    <td>1</td>
    <td>ChatGptと相談</td>
    <td>o1</td>
    <td>完成</td>
    <td>
ChatGpt(o1)で、LangChainからChatGPT APIを呼出すサンプルができた。デバッグも全て、ChatGPT(o1)が解決したので、BedRockより、LangChainの知識の方が豊富と。
    </td>    
  </tr>
  <tr>
    <td>2</td>
    <td>Cline</td>
    <td>Deep Seek v3</td>
    <td>完成</td>
    <td>
    </td>    
  </tr>
</table>

よく使われているライブラリの方が強いように思いました。

# ３．三度目の正直
### 3.1． 苦闘
世の中でよく使われているジャンルなら、もっとノウハウが身につくのではと思いました。
参考にしたのは、下記のデモ動画です。

https://x.com/igz0/status/1878391497684615424

要件は、デモ動画をほぼ流用宇してこんな感じ

:::note
Twttier風のチャットアプリを作成してください。 フロントエンドはNext.js、バックエンドはhonoを使用してください。
機能：
・新規ユーザ登録機能
・ログイン機能 
・ホーム画面(タイムライン)
・ユーザページ
:::

ところが、clineでBedrock/Cluade 3.5 SonnetとDeepSeekで何度か試してみましたが、上手くいきませんでした。

<dl>
    <dt>(a) コマンドの連結</dt>
    <dd>コマンド実行時に、AIが&&を使用して複数のコマンドを連結したものを提案してくる。Windows上で、これを実行してエラーになると、エラーリカバリーでAIの知能がてきめんに落ちる感じがしました。</dt>
    <dt>(b)指示を忘れる</dt>
    <dd>&&を使わないようにとか、フォルダ構成の誤りなどを指示しても、すぐ忘れてしまう。</dd>
</dl>

デモ動画の方との環境の違いは、おそらく私がWindows上で作業していたことかと思います。

### 3.2. やっと感動
対話で指摘しても、すぐ忘れるので、ClineのCustom Instructionsに指示を記載すると、上手く動作するようになりました。下記のように、クドメな指示をしています。

:::note warn
1)応答は日本語で行ってください。	
2)シェルはWindowsのPowershellです。WindowsのPowerShellで使用できるコマンドであることを確認してください。	
3)コマンドの連結に&&は、使用できません。コマンドを一つずつ分けて実行してください。	
	禁止例） "cd .. && npx create-react-app"
	許可例) "cd.."の実行が正常に終了した後、別途に"npx create-react-app"を実行する。
:::

エラー文言をAIが自力で解析し、情報が不足していたらデバッグログを追加し、ついには人間にテストの支持をしてくるようになりました。

![スクリーンショット 2025-01-14 23.42.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3982568/758c2f53-1043-d7fa-1d12-5d0e9eac5854.png)

### ３．３．まとめ
まず、感じたことは、

:::note
<dl>
    <dt>(a)課金量</dt>
    <dd>
感嘆のサンプルアプリの作成で、課金量(入力トークン:25.1M、出力トークン:118.1K)が、おおよそ77.2ドル≒12.3k円でした。個人でお試しとかで使うには高額ですが、ビジネスで使うなら、おそらく安いんだろうと思います。でも、DeepSeekの誘惑が。
    </dd>
    <dt>(b)生成コードの作り方</dt>
    <dd>
    AIのコードの実現方法や修正方法が、部分からのボトムアップで、かなり場当たり的。このあたりは、要件の記述の具体化や、Custom Instructionに検討方法などの記載の詳細化の工夫が必要なのだろうと思います。<br/>
    ・入力要件で、Next.jsだと言っているのに、Reacで作り始めて、後から入れよってからに。<br/>
    ・実装の漏れが多々あり。こんな感じ。

『src\pages\api\login.tsファイルが見つからないようです。これは、ログインAPIエンドポイントが実装されていないことを示しています。これが、ログイン時に404エラーが発生している原因です。』
    </dd>
    <dt>(c)テストの自動化環境</dt>
        <dd>AIが提示したテストを人間がブラウザ上でテストする羽目に。</dd>
    <dt>(d)作業の自動化</dt>
    <dd>4時間近くかかって、その間、結局張り付いていたので、効率化したいですね。</dd>
</dl>
:::

やっと、AIの自動生成のすごさを体験できたので、次のステップに進めると思います。

2025.01.16 山崎作成