4 ポストモダン技術
  突然の展開

このスライドの目的

  • ML(機械学習)からLLM(大規模言語モデル)
  • ソフトウェア開発の原理が変わった
  • 事例から学ぶ prompt engineering
  • テストも変わる

AIの進化

  • 最近までML(機械学習))として個別機能対応で商業化
    • 音声認識,文字読み取り
    • 画像認識,識別
    • 高度判別装置 ネコとライオン
  • LLM(大規模言語モデル)が突然変異
    • 学習量が数十億(ビリオン)から
  1. GPT-1: 2018年6月
  2. GPT-2: 2019年2月
  3. GPT-3: 2020年6月–以降注目
  4. GPT-3.5: 2022年11月
  5. GPT-4: 2023年3月
  6. GPT-4o: 2024年3月

4.1 事例から体験する

  • 紹介する内容は次ページの論文[1]から
  • 概要:コード生成
  • 人間と3種のAIで比較
  • 比較に使った仕様は LeetCode
  • まずサイトを開くLeetCode

LeetCode とは

  • 海外の企業における雇用
  • 専門的なスキルが必要 そのエビデンス
  • 探検
    • View Questions > をクリック
    • Expand >> をクリック
    • 演習のカテゴリが出る
    • 難易度は3段階

[1] Benchmarking ChatGPT, Codeium, and GitHub Copilot: A Comparative Study of AI-Driven Programming and Debugging Assistants

  • 論文のサイトはここ
  • 著者:M. S. I. Ovi, N. Anjum, T. H. Bithe, M. M. Rahman, and M. S. A. Smrity,
  • 発表:Sep. 30, 2024, arXiv:2409.19922. doi

ベンチマークの方法

  • 対象問題は300(各難易度100問)
  • 比較は,
    • ヒト,ChatGPT, Codeium, and GitHub Copilot:
  • 結果は?

解答率

解答率

実行時間比率(性能)

実行時間

メモリ使用効率

メモリ使用量

  • この研究の掲載は,2024-09
  • 論文の投稿は,2024-02
  • 実験時期は2023年末から2024初頭(推測)
  • GPT4は2023-03から,順次強化
  • 現在の実力は?
    • 強化学習が続いている

4.2 試してみる

  • 実務経験から考えると,信じがたい(たぶん)
  • 確かめてみましょう!!
  • グループで討論しながら
  1. 使い方を知る
  2. 適当な問題を選択する
  3. 生成してみる
  • 討論する

1. 使い方

  • ワンショットで解が出るとは限らない
    • 人間でも一発でコンパイルエラーなしはムリ
  • そこで,デバッグ10回の制限で実行
    • GAI にもデバッグが必要

プロセス?

flowchart LR

in1[1.コード<br>生成指示]
in2[3.仕様詳細]
in3[2.デバッグ<br>指示]
out1[コード]
out2[完成]
out0[エラー情報]
p0([コンパイル<br>実行])
p1([コード<br>生成])
p2([デバッグ<br>生成])

in1 --> p1 --> out1 --> p0 --> out0 --> p2 --> out2
in2 --> p1
p2 --> |ループ| p0
in3 --> p2
p1 -.-> |引継ぎ| p2

  • 指示1:コード生成のプロンプト
  • 指示2:デバッグのプロンプト

指示1

  • 仕様(選んだ演習問題)を添付してコード生成を指示
“You are an AI model specializing in generating C solutions for algorithmic problems. You will receive a problem description, input-output examples, code structure, and any constraints. Your task is to provide an efficient C solution based on the given problem.”

指示2

  • コンパイルエラーや実行時エラーが出たら,デバッグして修正の指示
“You are an AI model designed for debugging C code. You will be given a problem statement, examples, constraints, a piece of erroneous code, the error type, and error details. Your goal is to fix the code and generate a correct solution in C.”

ちょっと残念

  • LeetCode は登録しないと
  • 演習環境は使えない
  • よって,web サイトでは実行できない
    • その程度の環境は,エンジニアなら
    • チームで使えるヒトが居れば

それより,実験

  • 言語を変えてみる
  • 指示に追加;
    • MISRA規約を指定して制約
    • オレオレ制約を入れてみる
    • 命名規則?
    • 魔のべからず集

4.3 討論

  • GAI(生成AI)に人格は無い
    • GAIが競争相手にはならない
  • GAIを使えるエンジニア/使えないエンジニア
  • 仕様を設計できるエンジニア
    • GAIがコードかで生成できる仕様+プロンプト
    • 経験者ならコードを書ける仕様(現状)

何を学ぶのか

  • これは,後半で
  • Software Engineering が
  • Prompt Engineering へ
  • 車技術–> 100年目の変革
  • ソフト工学の変化はもっとすごく速い