Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AI とペアプロしてわかった 3 つのヒューマンエラー

AI とペアプロしてわかった 3 つのヒューマンエラー

良い出力は良い入力から

Other Decks in Technology

Transcript

  1. ©NewsPicks Inc. All Rights Reserved. 池川 貴裕 (Twitter: @takapiro_ikeike) NewsPicks

    エンジニア WORK: ワークスアプリケーションズ (7 年) → 開発 UZABASE - NewsPicks (3 年) → 開発
  2. ©NewsPicks Inc. All Rights Reserved. • 背景/問題意識:LLM を使った開発は Input が命だと思いま

    す ◦ Input : プロンプト ◦ Process : LLM ◦ Output : ソースコードの Diff • Output を良くしたいですが、LLM (Process) の開発はしてま せん • Input を良くするしかないです
  3. ©NewsPicks Inc. All Rights Reserved. • エラー① 曖昧な指示・少ない情報で作業をさせてしまう ◦ NG

    プロンプト例 ▪ 「この画面のマスタメンテナンス API 作っといて」 ▪ LLM がソースコードを追っていい感じに作ってくれるかもしれない が... ◦ LLM の出力が明後日の方向に行きがちで、人間のフォローが必要 になってしまうことが多々あります
  4. ©NewsPicks Inc. All Rights Reserved. • 解決① 文脈を丸ごと渡すと良いです ◦ 文脈:要件や仕様・既存クラスの使い方など全部です

    ◦ 実際に投げているようなプロンプトは次ページへ ▪ (あまりきれいに貼れませんでした... 🙏) ◦ Notion や Figjam, 手書きのメモもテキスト化してプロンプトに 含めるのがおすすめです ▪ Gemini などに画像を渡してテキスト化してもらうと便利です
  5. ©NewsPicks Inc. All Rights Reserved. (以下、LLM へ渡したプロンプトを外向けに直した TODO.md です) 動物園ショー情報管理

    API 実装計画 概要 当動物園のペンギン、イルカ、アシカのショー情報 とショーの日程を管 理するAPIを実装します。 対象モデル 1. PenguinShowModel (ペンギンショー情報) 2. DolphinShowModel (イルカショー情報) 3. SeaLionShowModel (アシカショー情報) 4. ShowScheduleModel (ショーの日程) Dto設計(例:ペンギンショー) Kotlin // PenguinShowDto data class PenguinShowDto( val id: Int?, val name: String, // ペンギンの名前 val featherColor: String? // 羽の色 ) サービス層のメソッド(例:ペンギンショー関連) • findAllPenguinShows() • findPenguinShowById(id: PenguinShowId) • createPenguinShow(dto: PenguinShowDto) • updatePenguinShow(id: PenguinShowId, dto: PenguinShowDto) • deletePenguinShow(id: PenguinShowId)
  6. ©NewsPicks Inc. All Rights Reserved. コントローラーのエンドポイント(例:ペンギンショー関連) • GET /zoo/shows/penguins •

    GET /zoo/shows/penguins/{id} • POST /zoo/shows/penguins • PUT /zoo/shows/penguins/{id} • DELETE /zoo/shows/penguins/{id}
  7. ©NewsPicks Inc. All Rights Reserved. ## 改修対象 - ZooShowMaintenanceController -

    ZooShowMaintenanceService ## 実装計画 詳細な実装計画は [TODO.md](./TODO.md) を参照してください。 ## 進捗状況 - [x] プロジェクトディレクトリの作成 - [x] 実装計画の作成 - [x] DTOクラスの作成 - [x] Repositoryクラスの作成 - [x] ZooShowMaintenanceServiceの拡張 - [ ] ZooShowMaintenanceControllerの拡張 - [ ] テストの作成と実行 - [ ] ドキュメントの更新 (以下、LLM へ渡したプロンプトを外向けに直した README.md です) # 動物園ショー情報管理 API ## 概要 当動物園で使うショー情報( API)を作成するプロジェクトです。対象とな るデータソースは以下の 4つのモデルです: 1. PenguinShowModel 2. DolphinShowModel 3. SeaLionShowModel 4. ShowScheduleModel これらのモデルを入出力してメンテナンス画面を作れるようにします。
  8. ©NewsPicks Inc. All Rights Reserved. • エラー② 入力する手間を惜しむ ◦ 長文タイピング

    = 時間もかかり、腕も疲れる ◦ プロンプトを書く手間を惜しみたくなる
  9. ©NewsPicks Inc. All Rights Reserved. • 解決② 音声入力が結構便利です ◦ Mac

    ですと、F5 キーのところで音声入力が可能です ▪ これはこれで便利 ◦ 自分は SuperWhisper を使用しています ▪ ローカルモデルを利用 ▪ オフィスだと若干抵抗ありますが... ▪ (本筋と関係ないですが) 音声入力は Slack 返信にも便利です
  10. ©NewsPicks Inc. All Rights Reserved. • 解決② 音声入力が結構便利です ◦ ざっくり平均で

    300 文字/分 入力しています ▪ 「寿司打」を試したところ、こちらでも 300 文字/分
  11. ©NewsPicks Inc. All Rights Reserved. • 解決③ 分割・プロンプト見直し & リトライ

    ◦ 例:層ごとにタスクを小分けてみる ▪ Controller → Service → Repository → Dao… ▪ 人がエンジニアをやっていたときと同じ ▪ 粒度を絞って再プロンプトすると成功率も上がりやすい ◦ シンプルにテキストを訂正するとアウトプットも変りました ◦ 業務ドメインを如何に文書化するかが肝だなとよく思います
  12. ©NewsPicks Inc. All Rights Reserved. ☑ 指示は具体 & 背景フル添付 ☑

    音声入力で入力負荷を下げる ☑ アウトプットがずれたら範囲を小さく再プロンプト