Slide 1

Slide 1 text

2024/08/20 CHUO_Tech #4 LLM(Copilot)を最大限活用するための 取り組みとその副産物

Slide 2

Slide 2 text

ほりしょー ハコベル株式会社 サーバーサイドエンジニア @H0R15H0 https://youtu.be/ZFTW6Ete9eE?feature=shared https://zenn.dev/hacobell_dev/articles/131cbcb873e8ba https://zenn.dev/hacobell_dev/articles/4bf484a360d343

Slide 3

Slide 3 text

話すこと GitHub Copilotによる回答の正確性を高めるための取り組み 取り組みによる思わぬ副産物

Slide 4

Slide 4 text

正確性を向上させるためには? プロンプトエンジニアリングのテクニックをコードベースに落とし込む 1 コードベースのスタイル・命名規則に一貫性を (Few-shot prompting) 2 モジュールを小さく分割し、依存順に実装 (Prompt Chaining)

Slide 5

Slide 5 text

プロンプト: 出力: デモを提供し文脈を学習させる テクニック 1. Few-shot prompting

Slide 6

Slide 6 text

コードベースに一貫性を持たせる 1. Few-shot prompting Copilotはコードベースをプロンプト(文脈)とし、Few-shot promptingを図る コードベースに一貫性がない状態=デモがない (=Few-shot promptingが行えない) 一貫性のない状態 意味の欠如した命名 誤ったコメント・不要なコメント ベストプラクティス・基本的な設計原則を違反した実装

Slide 7

Slide 7 text

複雑なタスクを複数のサブタスクに分割するテクニック 2. Prompt Chaining 複雑なタスク サブタスク1 サブタスク2

Slide 8

Slide 8 text

複雑なコードはモジュールを適切に分割 小さなモジュールに分割することで複雑性を排除 2. Prompt Chaining コーディングにおける複雑なタスクとは? 複雑なドメインロジックの実装 依存関係の多いモジュールの実装 複雑なタスクのままコードは当然困難

Slide 9

Slide 9 text

モジュールを依存関係の順に実装 2. Prompt Chaining 依存の向き 実装の流れ A B C D E 上位モジュールでは下位モジュールをうまく利用したコード生成が可能に

Slide 10

Slide 10 text

副産物:既存コードの問題点が明白に 1 コードベースのスタイル・命名規則に一貫性を(Few-shot prompting) 2 モジュールを小さく分割し、依存順に実装(Prompt Chaining) 暗黙的・形式化されていないコーディングスタイルを明示 コードに潜む“臭い”に対する嗅覚の向上 コード保守性の向上 手戻りの軽減

Slide 11

Slide 11 text

まとめ 効率化以上の恩恵があった うまく回答が得られない時は自分のコードを怪しむいい機会 コードベース(=プロンプト)のプロンプトエンジニアリングを意識 1 コードベースのスタイル・命名規則に一貫性を(Few-shot prompting) 2 モジュールを小さく分割し、依存順に実装(Prompt Chaining)