Slide 1

Slide 1 text

生成AIとの上手な付き合い方 【公開版】 2025-05-15 Nature Inc. NAGATA Hiroaki / @handlename

Slide 2

Slide 2 text

このスライドについて 2025年4月にNature社内向けに作成した生成AI入門者向けの資料を、 公開用に再編集したものです。 あくまで入門者向けの資料ですので、すでに生成AIを使いこなしてい る方には物足りない内容かもしれません。 また、入門者にわかりやすく伝えるため説明を簡略化した部分もあ り、厳密さを欠く表現もあります。 あらかじめご了承ください。

Slide 3

Slide 3 text

Contents そもそも生成AIって? 生成AIを利用したサービス 生成AIをうまく使うためのテクニック 生成AIを使うときの注意点 プロダクション環境での利用 最初の2つは生成AIそのもののはなしです。 3つ目と4つ目が今回の本題です。 最後にはおまけとしてのプロダクション環境での利用についてはなします。

Slide 4

Slide 4 text

そもそも生成AIって?

Slide 5

Slide 5 text

従来のプログラムとAIの違い 従来のプログラム 明示的なルールを組み合わせたもの。 決まった入力には決まった出力を返す。 AI 「知能」を持っていそうなシステム全般。 何らかの「学習」によって入力から出力に至る方法を導き出す。 ちなみに、AIという名前がついていても「それただのプログラムかアルゴリズムじゃないの?」というものも世の中にはたくさんあります。 単なる売り文句として使われていることも多いです。 そもそもAIという言葉の定義が曖昧なので、言ったもん勝ちみたいなところがあります。

Slide 6

Slide 6 text

AIと生成AIの違い AI 「知的な振る舞いをするシステム」全般を指す。定義は曖昧。 生成AI 大量のデータを学習することによって作られた「生成モデル」を基盤 としたシステム。 学習データに含まれないデータを 生成 することができる。 生成AIの前段階としてニューラルネットワークとか深層学習とか、そういう機械学習の技術の話があるんですが、時間がないので今回はその話はしませ ん。

Slide 7

Slide 7 text

生成AIの仕組み 入力(プロンプト)をもとに、トークン 同士の重み付け(パラメータ)に基 づいて 確率的 に出力を生成する。 プロンプトの意味を理解しているわけではない。 ※ トークン: 生成AIのモデルが扱う情報の最小単位。単語より細かい ものだが、文字そのものではない。 トークンというのは、単語・・・よりももっと細かい単位のものなんですが、仮に単語がトークンだとすると、 「太陽」という単語の次に来る単語の候補として「の」が70%「は」が20%、のような単語間の推移確率が設定されていて、この確率をもとに文章が出力 されるわけです。

Slide 8

Slide 8 text

モデルのパラメータ数 パラメータ:トークン同士の重み付け モデル パラメータ数 GPT-3 1750億 GPT-4 非公開(1兆〜10兆?) Gemini 1.5 Pro 非公開(2000億?) Claude 3.5 Sonnet 非公開(700億?) パラメータはトークン同士の重み付けという説明をしましたが、一般的にはパラメータ数が多いほど高性能なモデルと言われていて、実際生成AIがそれら しい出力ができるのはそれまでモデルに比べてパラメータ数をものすごく大きくしたからなんですね。 ものすごく多いのでLLM、 「大規模」言語モデルと呼ばれています。

Slide 9

Slide 9 text

生成AIを利用したサービス

Slide 10

Slide 10 text

サービスの種類 ざっくり分けて以下の2種類がある。 対話型 エージェント型

Slide 11

Slide 11 text

対話型 ユーザーとAIが 対話形式でやり取り する 質問応答、文章作成、文章要約、コード生成など 会話履歴を参照し、文脈に即した対話が可能 例: ChatGPT、Gemini、Claude、Bing Chatなど 生成AIと言われてまず思いつくのがこの対話型のサービスだと思います。

Slide 12

Slide 12 text

エージェント型 プロンプトに応じて特定のタスクを 自律的 に実行する APIの呼び出しやコマンド実行などの 副作用を及ぼす ことができる 副作用の結果をもとに次の アクション を開始できる 例: Devin、Cline、GitHub Copilot agents、OpenAI Operatorなど その副作用の結果を使って次のアクションを開始することができるということは、つまりいちいち人間が細かく指示をしなくても勝手に動くことができる ということです。 前提条件(利用できる手段や禁止事項など)と目的を示してやれば、あとは勝手にタスクをこなしてくれるというわけです。

Slide 13

Slide 13 text

生成AIをうまく使うためのテクニック

Slide 14

Slide 14 text

生成AIに伝わりやすいプロンプトを書こう 明確かつ直接的に:曖昧さを排除し、明確な要望を伝える 文脈の提供:背景情報や目的を説明する 例示:期待する出力の例を示す 役割のアサイン:どんな立場で出力させたいか 出力形式の指定:出力形式を明示的に指定する プロンプトチェーン:複雑なタスクは段階的に指示を出す → つまり人間に指示するときとだいたい同じ。 ほしい出力を得るために、出力の方向を狭めてやる、というのが基本です。

Slide 15

Slide 15 text

例: 簡素すぎるプロンプト Nature Remoの説明文を書いて

Slide 16

Slide 16 text

簡素すぎるプロンプトに対する出力例 # Nature Remo の説明 Nature Remo(ネイチャーレモ)は、スマートホームを簡単に実現できるIoTデバイスです。 主にエアコン、テレビ、照明などの家電を一つのアプリからコントロールできるようにする赤外線リモコンハブとして機能します。 ## 主な特徴 - **スマートフォン操作**: 専用アプリを使って外出先からでも家電をコントロール - **音声アシスタント連携**: Amazon Alexa、Google アシスタント、Apple Siri などと連携可能 - **センサー機能**: 室温、湿度、照明、人感(モデルによる)などの環境センサーを搭載 - **自動化**: 温度や時間に基づいて家電の動作を自動化 - **簡単設定**: WiFiに接続するだけで、複雑な工事は不要 Nature Remoは、既存の赤外線リモコン対応家電をスマート化できるため、新しい家電を購入する必要なく、 手軽にスマートホーム環境を構築できる点が特徴です。 日本の企業Nature Inc.が開発した製品で、コンパクトなデザインながら多機能な点が評価されています。 いかにも生成AIが出してきそうな文章が出てきました。説明的で、箇条書きを多用しがちです。 間違ってはいないんですが、これを外に出す文章、例えばリリース記事などの下書きとして使うのはちょっと難しそうです。

Slide 17

Slide 17 text

プロンプトの例: 役割のアサイン・文脈の提供 あなたはNature Remoの熱烈なファンです。 あらゆる対応家電を連携し、日々の生活でオートメーションを使い込んでいます。 あなたはまだNature Remoを使ったことがない人をターゲットに、 その魅力を伝える記事を執筆する依頼を受けました。 スマートホームに詳しくない人でもわかるような言葉を使い、 熟考に熟考を重ねた文章を400字程度に収めて提出してください。 あなたの才能を存分に発揮した、熱い文章を期待しています。 今回は役割のアサインと文脈の提供を試してみました。 「Nature Remoの熱烈なファン」という役割で、 「Remoを使ったことがない人をターゲットに、その魅力を伝える記事を執筆する」という文脈を与えています。 最後に「熱い文章」というのも入れてみました。

Slide 18

Slide 18 text

役割のアサイン・文脈の提供した場合の出力例 帰宅前にエアコンをON。朝起きると自動で照明が点灯。 「テレビつけて」と話しかけるだけでリビングが映像で彩られる。 こんな未来的な生活、実は今すぐ始められるんです。 私がNature Remoと出会って3年。この小さな白いデバイスが、面倒だった家電操作をすべて変えてくれました。 リモコンを探す煩わしさから解放され、スマホ1つで家中の家電を操れる喜びは何物にも代えがたいのです。 Nature Remoの素晴らしさは「難しくない」こと。 設置は置くだけ、アプリで簡単設定。スマホが使えれば誰でも始められます。 エアコン、照明、テレビ、オーディオ...あらゆる家電があなたの指先で踊り出します。 外出先から冷蔵庫を確認できる未来はまだ先かもしれませんが、帰宅時に快適な温度の部屋が待っている未来は、Nature Remoがもう届けてくれています。 一度この便利さを知ったら、もう元の生活には戻れません。 ちょっとした時間の余裕が、あなたの日常に新しい豊かさをもたらすはずです。 スマートホームは、もう特別なものではありません。Nature Remoと共に、その第一歩を踏み出してみませんか? ストーリ仕立てで文学的な、エモ目の表現の文章が出てきました。 これをそのまま使えるかと言うと指示を出した人の判断に委ねられるわけですが、先程の例と比べると生成AI感はだいぶ下がったと思います。 これにテクニックで挙げた「例示」として、過去に書いた自分の文章などを与えると、より精度の高いものが出てきます。

Slide 19

Slide 19 text

プロンプトの例: 出力形式の指定・例示 Nature Inc. の製品データを出力してください。 要件は以下のとおりです。 - フォーマットはJSONとする - 1製品を1オブジェクトで表し、それらのオブジェクトを配列に格納する - オブジェクトのキーはすべて小文字のアルファベットとする 以下に出力の書き出しを示します。 この続きを出力してください。 ```json [ { "name": "Nature Remo Lapis", "price": 7980, "released": "2024/7/6" },

Slide 20

Slide 20 text

出力形式を指定・例示した場合の出力例 [ { "name": "Nature Remo Lapis", "price": 7980, "released": "2024/7/6" }, { "name": "Nature Remo Mini", "price": 4980, "released": "2023/11/15" }, { "name": "Nature Sensor Air", "price": 12800, "released": "2024/3/22" }, { "name": "Nature Plant Monitor", "price": 6500, "released": "2023/9/10" }, { "name": "Nature Solar Panel", "price": 29800, "released": "2024/5/1" } ]

Slide 21

Slide 21 text

出力形式を指定・例示 出力形式を指定する例です。Nature社の製品データをJSONフォーマットで出力させようとしています。 最後はJSONが途切れているように見えますが、わざと途中までしか書いていません。 出力結果を確認すると、確かにJSON形式になっていることがわかります。 言葉で「JSONで出力して」と指示してもよいのですが、キー名などを細かく指定したい場合は例示を使うと確実です。 出力結果の内容までよく見ると、明らかに間違った内容が出力されていることがわかります。 これは次に紹介する「ハルシネーション」です。

Slide 22

Slide 22 text

生成AIが苦手なことを知ろう エスパーではない:必要な出力を得るためにはそれに見合ったコン テキストを与える必要がある 否定形の指定: 「〇〇ではないもの」のような指示は的はずれな出 力になりがち ハルシネーション:存在しない情報を自信を持って提示する場合が ある 出力は固定ではない:あくまでも確率的に答えを出すので毎回違っ た回答になる 出力の幅が広すぎるものは的はずれな出力になりがちです。

Slide 23

Slide 23 text

生成AIが苦手なことを知ろう・続き これらも苦手・・・だけど最近は克服しつつある 最新情報:学習データのカットオフ日以降の情報は知らない 非公開情報の知識:学習できない情報は扱えない 複雑な数学計算:多段階の計算では誤りが発生しやすくなる 生成AIのモデルが作られたのはもちろん過去のことなので、その時点までの知識しかありません。 これらの問題を克服するための手段として、RAGやMCP等の技術がありますが、今回は割愛します。

Slide 24

Slide 24 text

苦手なことの例: 数学計算・ハルシネーション 19947902975848938093432を素因数分解して この非常に大きな数を素因数分解します。 19947902975848938093432 = 2^3 × 3 × 11 × 41 × 2081 × 9539 × 13841356557 これが19947902975848938093432の素因数分解です 大きな数字を素因数分解させてみました。 素因数分解を選んだのは、単純に解くのが難しいのと、答え合わせが簡単だからです。 それらしい回答を出してきましたが、検算すると(続く)

Slide 25

Slide 25 text

苦手なことの例: 数学計算・ハルシネーション ばっちり間違っている $ ruby -e 'p 2**3 * 3 * 11 * 41 * 2081 * 9539 * 13841356557' 2974002771571197585912

Slide 26

Slide 26 text

「わからない」と回答することを許可すると 13841356557を素因数分解して わからない場合は「わからない」と答えて 13841356557という数を素因数分解することを求められていますが、これは11桁の大きな数字です。 このような大きな数の素因数分解は特殊なアルゴリズムやコンピュータプログラムを使用しないと非常に困難です。 したがって、手計算での正確な素因数分解を提供することができないため、「わからない」とお答えします。 今度は諦めることを許可してみました。 計算問題に限らず、答えを求めるようなプロンプトにはわからないと答えることを許可することで、ハルシネーションに惑わされる機会が減ります。

Slide 27

Slide 27 text

プロンプト・コンテキストを育てよう 自分の代わりに文章を書かせるなら → 自分のペルソナを定義して使わせる 文章のレベルをそろえるなら → 対象読者を具体的に定義する 特定プロジェクト用のコード生成 → コーディングルールやレビュー観点など

Slide 28

Slide 28 text

プロンプト・コンテキストの管理 各サービスの仕組みを利用するとよいでしょう。 ChatGPTのプロジェクト(Plus/Pro、共有はTeamプランのみ) Claudeのプロファイル個人設定 DevinのKnowledge Cursorのrules

Slide 29

Slide 29 text

モデルを使い分ける モデルによって得意なタスク が異なる。 適切なモデルを選択するとよ り効果的。 Claudeはコード生成が得意、 Geminiは入力トークン数が多 い、など。 図: ChatGPTのモデル選択

Slide 30

Slide 30 text

生成AIを使うときの注意点

Slide 31

Slide 31 text

利用規約とプライバシーポリシーを読もう 商用利用の可否 生成結果の著作権の扱い 利用データ収集の有無 このあたりは生成AIではないサービスを使う場合も同じですね。 業務で使うなら利用規約を読みましょう。

Slide 32

Slide 32 text

例: 生成AIに利用規約 を読ませる とはいえ利用規約とかプライバシーポリシーを頭から読むの はしんどいよ!というのはもちろんそうなので、そういうと きこそ生成AIに頑張ってもらいましょう。 ChatGPTであればURLを与えればそのページに書いてあるこ とを読んだ上で回答してくれます。 いったん欲しい情報を抜き出させてから改めて原文を見に行 くようにするとだいぶ楽になります。

Slide 33

Slide 33 text

「学習に使われてしまう」とは ユーザーのプロンプトが新しい生成AIモデルの作成や、ファインチ ューニングに使われること 例: 社内の機密情報をプロンプトに含めたら、その生成AIサービ スの、別の利用者の出力にもそれが現れてしまった! プライバシーポリシーを読むしか無い

Slide 34

Slide 34 text

例: ChatGPTの場合 As noted above, we may use Content you provide us to improve our Services, for example to train the models that power ChatGPT. 前述のとおり、お客様からご提供いただいたコンテンツは、 ChatGPTの基盤となるモデルのトレーニングなど、サービス向上 のために利用させていただく場合があります。 “ “ Read our instructions⁠ on how you can opt out of our use of your Content to train our models. モデルのトレーニングにおけるお客様のコンテンツの利用をオプ トアウトする方法については、こちらの手順をご覧ください。 “ “

Slide 35

Slide 35 text

自分で裏を取ろう 生成AIの出力は必ず検証が必要 事実や統計データは複数の信頼できる情報源で確認する 引用された論文や記事が実際に存在するか確認することが重要 コード生成結果はセキュリティ面も含めてレビューが必要 専門分野の情報は、その分野の専門家にレビューしてもらうと安心 要するに生成AIを信用するなというはなしです。 利用規約を読ませたところでプロンプトに「原文の引用を添えてください」と書いたのは、裏を取りやすくするための工夫です。 なんなら原文の引用がでたらめなこともあります。

Slide 36

Slide 36 text

コストを意識しよう 特に従量課金プランの場合! 入出力量やAPI呼び出し回数に応じて課金される モデルの規模が大きいほどコストが高くなる傾向がある 長い会話履歴や大量のデータ処理は、コスト増加につながる 用途に応じた適切なプランの選択や、コスト上限の設定を検討する ChatGPT PlusとかProなどの、月額固定のサービスであれば問題ないですが、従量課金なプランは注意が必要です。 ほとんどの場合は入出力トークンの量に応じて課金額が決まるので、こまめに利用状況を確認するようにしましょう。

Slide 37

Slide 37 text

例: ClaudeのAPI料金プラン モデル間の差は4〜20倍! モデル 入力単価 出力単価 Claude 3.5 Haiku $0.80 / MTok $4/MTok Claude 3.7 Sonnet $3 / MTok $15/MTok Claude 3 Opus $15 / MTok $75/MTok Pricing \ Anthropic 例としてClaudeのAPI料金プランを持ってきました。 モデルごとに単価が異なるんですが、 一番安い3.5 Haikuと3 Opusでは約20倍の差があります。 あと、入力よりも出力の単価のほうが高いのもポイントですね。 用途に合わせてモデルを選択しましょうというはなしをしましたが、コスト面でも適切なものを選んだほうがいいでしょう。 油断してるとあっという間にお金が溶けます。

Slide 38

Slide 38 text

生成AIは高い? 結局はコストに見合った成果が得られるかどうか 定量的に効果を計測できるといい タスクのつまり具合 リリースの数 利用者の満足度調査 など 結局はそれに見合った成果が得られるかどうかでしょう。 例えばDevinのTeamプランは月$500からです。 単体で見ると高そうですが、それで各エンジニアの手が5%でも空くならコスパが良すぎる買い物になりますよね。 そのあたりを評価するためにも、定期的に定量評価できると良さそうです。

Slide 39

Slide 39 text

プロダクション環境での利用

Slide 40

Slide 40 text

プロダクション環境での利用 自分たちが生成AIサービスのユーザーになるのではなく、 自分たちが提供しているサービスに生成AIを組み込むはなし。

Slide 41

Slide 41 text

エンドユーザーに提供する機能に組み込む 例: 既存機能の強化:検索強化、レコメンデーションなど ユーザー体験向上:CS対応、自然言語インターフェースなど 継続的なモニタリング:不適切コンテンツ検出と対応など これらを実施する場合に気をつけたいこと データプライバシーの確保:ユーザーデータの扱いなど フォールバック機構:AIが適切に応答できない場合の代替手段用意

Slide 42

Slide 42 text

数式では表しにくい条件の判定に利用する 例えばシステムの監視に使うことを考えると: 異常検知:通常のパターンから外れた挙動の検知と説明 ログ分析:大量のログから重要なイベントやパターンを抽出、要約 アラート生成:関連メトリクスの収集・要約・説明 インシデント対応:過去のインシデントとの比較や解決策の提案 セキュリティ監視:ログ等から潜在的な脅威パターンを検出

Slide 43

Slide 43 text

データ分析のための独自モデルを作る 課題がはっきりしているのなら: 領域特化型モデル:特定領域向けにチューニングしたモデル開発 データ機密の確保:社内データを社内で分析する環境として カスタム知識ベース:社内文書や専門知識を学習させる ビジネスロジックの理解:企業固有の業務ルールや専門用語の学習 モデルは例えばAmazon SageMaker Canvasなどで作れます。

Slide 44

Slide 44 text

まとめ

Slide 45

Slide 45 text

まとめ 生成AIの使い方を理解して「上手に」使いましょう 何事もトライアンドエラー! 色々試して、うまくいったこと、 うまくいかなかったことを教えて下さい

Slide 46

Slide 46 text

余談

Slide 47

Slide 47 text

余談 今回のスライドはアウトラインからClaudeで生成しました 「生成しました」といっても最初だけで、大幅に手直ししています。平気でハルシネーションを盛り込んでくるので。

Slide 48

Slide 48 text

余談: 最初のアウトライン ## そもそも生成AIって? - 今までのプログラムとの違い - AIと生成AIの違い - 生成AIの仕組み - 生成AIを使ったサービスの構成 ## 生成AIを利用したサービス - 対話型 - エージェント型 - 具体的なサービス例 ## 生成AIをうまく使うためのテクニック - 生成AIに伝わりやすいプロンプトを書こう - 生成AIが苦手なことを知ろう - プロンプトを育てよう ## 生成AIを使うときの注意点 - 「学習に使われてしまう」とは - 利用規約を読もう - 自分で裏を取ろう - コストを意識しよう ## プロダクション環境での利用 - エンドユーザーに提供する機能に組み込む - 数式では表しにくい監視に利用する - データ分析のための独自LLMを作る

Slide 49

Slide 49 text

余談: アウトライン→スライド本文 プロンプト 選択範囲内のテキストを、Marp対応フォーマットでスライドにしてください。 作業を始める前に、以下の注意点をよく読んでください。 - 見出し `##` は扉スライドとして使用する - 各リストアイテムについて1〜3枚程度のスライドを作成する - 各スライドの内容は箇条書きで3〜5件程度に収める - 参考資料へのURLを可能な限り添える。URLはコメントアウト `` で記載する - スライド本文の各文末は丁寧語(ですます調)で統一する 以上の注意点を守り、作業を開始してください。 それらしいものはすぐ出てくるけど裏取りが大変。

Slide 50

Slide 50 text

付録

Slide 51

Slide 51 text

付録: サービスとモデルの違い ChatGPT: 生成AIをりよするための「サービス」 o3-mini、GPT-4o など: 生成AIの「モデル」 サービスとモデルを混同しがち。

Slide 52

Slide 52 text

付録: 参考資料 人工知能 - Wikipedia 生成的人工知能 - Wikipedia 大規模言語モデル - Wikipedia 言語モデル - Wikipedia GPT (言語モデル) - Wikipedia Gemini (言語モデル) - Wikipedia 生成AIについてググっても生成AIで生成した記事ばかり出てくるので、結局Wikipediaを読んでました。 「生成AIに聞けばいいんじゃない?」という意見もあると思いますが、裏を取るには結局自分で探しに行かないといけないので。