-
Notifications
You must be signed in to change notification settings - Fork 9
chapter2_chat_functionality
Genuの中核機能である「チャット機能」は、Amazon Bedrockの基盤モデルを活用した対話型AIサービスです。自然言語で質問や指示を入力することで、AIから適切な回答を得ることができます。
大規模言語モデル(Large Language Model, LLM)は、Wikipediaなどの大量のテキストデータを使って事前学習することで作られます。
- 事前学習:モデルは文法やよくある言い回しなどを学習します
- 基盤モデル:事前学習によって作られたモデルを指します
- Fine-tuning(事後学習):ラベル付きデータ(例:質問と回答の組み合わせ)を使ってタスクに特化したモデルを作成できます
LLMは入力されたテキストの次に来そうな単語を予測することを繰り返します:
- 「桃太郎がお供に連れていたのは、犬、猿、」と入力
- 学習した知識から「キジ」という単語が次に来る確率が高いと計算
- 確率が高い単語を選び続けることで、最終的にそれらしい文章が完成
ただし、学習データの中に桃太郎に関するテキストが全くない場合は、この質問にうまく答えることはできません。
重要:生成AIを「使う」だけでデータがモデルに学習されることはありません。
- 生成AIモデルにプロンプト(入力データ)を入力して処理結果を取得するだけです
- Amazon Bedrockは、お客様のいかなるデータも保存してモデルの学習に使用したり、第三者に提供したりすることはありません
モデルが知識を獲得するのはデータを「学習」したときだけなので:
- 学習データにない情報:回答することができません
- ハルシネーション:無理やり回答させようとすると、事実と異なる内容が出力されることがあります
- 検証能力の欠如:LLM自身が回答の内容を検証することができません
- 古い情報:学習データの時期によって、最新情報に答えられない場合があります
したがって、業務でLLMを使う場合は、回答の内容の妥当性を自身で確認する必要があります。
Genuでは、用途に合わせて複数の最先端AIモデルから選択できます。
- 特徴:業界最高水準の知能を持つモデル
-
用途:
- 複雑な問題解決
- 高度な分析や推論
- 専門的な知識を要するタスク
- コード生成とレビュー
- 長文の文書作成
-
強み:
- 幅広い知識ベース
- 高い推論能力
- コンテキストの深い理解
- 一貫性のある長文生成
- 特徴:高速で低価格のモデル
-
用途:
- 簡単な質問応答
- 定型的なタスク
- リアルタイム性が求められる処理
- 大量のリクエスト処理
-
強み:
- 低レイテンシ
- コストパフォーマンス
- 高速な応答
- 特徴:最先端のインテリジェンス、コストパフォーマンス、レイテンシーのバランスを実現
-
用途:
- 一般的なビジネスタスク
- カスタマーサポート
- コンテンツ生成
- データ分析
-
強み:
- バランスの取れた性能
- AWSネイティブの統合
- 日本語対応
- 特徴:軽量で高速なモデル
-
用途:
- シンプルなタスク
- リアルタイム処理
- リソース制約のある環境
-
強み:
- 低コスト
- 高速処理
| 要件 | 推奨モデル | 理由 |
|---|---|---|
| 最高品質の回答が必要 | Claude 3.5 Sonnet v2 | 最も高度な推論能力 |
| コストを抑えたい | Claude 3.5 Haiku / Nova Lite | 低価格設定 |
| 高速な応答が必要 | Claude 3.5 Haiku | 低レイテンシ |
| バランス重視 | Amazon Nova Pro | コスト・性能・速度のバランス |
| 専門的・複雑なタスク | Claude 3.5 Sonnet v2 | 高度な理解力 |
- Genuにログイン後、サイドバーから「チャット」を選択
- 初めて使用する場合は「デモ」ボタンをクリックしてサンプルを確認
- テキスト入力ボックスにプロンプト(質問や指示)を入力
- Enterキーまたは送信ボタンをクリックして送信
- 画面上部のモデル選択ドロップダウンをクリック
- 用途に合わせてモデルを選択
- 選択したモデルは次回以降も記憶されます
- 新しい会話の開始:「新しい会話」ボタンをクリック
- 会話の保存:会話は自動的に保存されます
- 過去の会話の閲覧:サイドバーから過去の会話を選択して再開できます
- 会話の削除:不要な会話は削除可能です
- 会話のタイトル編集:会話のタイトルを編集して管理しやすくできます
プロンプトエンジニアリングとは、より正確で関連性の高い応答を得るために、プロンプトに詳細な情報やコンテキストを追加し、継続的に調整するプロセスです。
LLMに対する命令や質問のみが含まれるシンプルなケースです。
例:
桃太郎がお供にしたのはどんな動物ですか
注意点:
- 質問が曖昧だとハルシネーション(誤った情報の生成)が発生する可能性があります
- より具体的な情報を提供することで精度が向上します
事実に基づいた回答や自社ナレッジに基づいた回答をさせるために、コンテキスト(参考情報)を与えるケースです。
例:
以下のドキュメントに基づいて質問に答えてください。
<document>
[ここに参考情報を記載]
</document>
質問:[質問内容]
RAG(Retrieval Augmented Generation): コンテキストの部分に前段で検索して取得した結果を使用する構成です。Genuでは「RAGチャット機能」としてこの仕組みを提供しています(第3章で詳しく解説)。
出力を見やすくするために出力形式(JSON、マークダウンなど)を指定したり、精度を上げるために例を追加するケースです。
例:
以下の形式で出力してください:
- JSON形式
- キーは「name」「description」「category」
- 各項目は日本語で記述
[タスクの内容]
プロンプトは、今日入社したばかりの新入社員に仕事をお願いする気持ちで書くのがおすすめです。
- 同じ命令でも文章が短い方がLLMに意図を伝えやすい
- トークン数が減るためコストも削減できる
悪い例:
私はこれから会議で使用するプレゼンテーション資料を作成しなければならないのですが、そのための構成案について、いくつかアイデアを出していただけないでしょうか。テーマは生成AIについてです。
良い例:
生成AIをテーマにしたプレゼンテーションの構成案を3つ提案してください。
解釈の余地が生まれるような書き方は避けます。
悪い例:
このコードを良くしてください。
良い例:
以下のPythonコードを、パフォーマンスを改善し、可読性を高めるようにリファクタリングしてください。具体的には、ループ処理を最適化し、変数名をわかりやすくしてください。
[コード]
「空気を読め」「察して」「常識でわかるでしょ」は厳禁です。タスクの実行に必要な情報は余さず伝えてください。
悪い例:
Amazon のOLPを一つ教えて
(OLPが何かLLMが理解できない)
良い例:
Amazon のOLP(Our Leadership Principles: 当社の16のリーダーシップ原則)を一つ教えてください。
どんな立場でClaudeに回答して欲しいかの役割を与えることで、目的に沿った回答をさせやすくなります。
例:
あなたはプロフェッショナルなコピーライターです。以下の製品の魅力的なキャッチコピーを5つ提案してください。
[製品情報]
あなたは小学1年生の担任の先生です。以下の内容を小学1年生にもわかるように説明してください。
[説明したい内容]
コンテキスト、例、命令など、テキストの種類に応じてXMLタグを使って範囲を指定すると、Claudeに意図を理解してもらいやすくなります。
例:
あなたは優秀なデータアナリストです。
<context>
当社は小売業を営んでおり、以下は過去1年間の売上データです。
</context>
<data>
[データ内容]
</data>
<instructions>
このデータを分析し、以下の点について報告してください:
1. 売上トレンドの傾向
2. 季節性の有無
3. 今後の改善提案
</instructions>
<output_format>
- マークダウン形式
- 箇条書きで簡潔に
- 重要なポイントは太字で強調
</output_format>
Genuのチャット機能では、プロンプトを2つの部分に分けて入力できます:
- 用途:AIの役割や基本的な指示を設定
-
特徴:
- 会話全体を通じて有効
- AIの振る舞いを制御
- 毎回入力する必要がない
例:
あなたは親切で丁寧なカスタマーサポート担当者です。常に礼儀正しく、わかりやすい言葉で説明してください。技術的な質問には具体的な手順を示してください。
- 用途:具体的な質問や指示
-
特徴:
- 会話のたびに変わる内容
- システムコンテキストと組み合わせて使用
システムコンテキストの設定方法:
- チャット画面で「設定」アイコンをクリック
- 「システムコンテキスト」欄に指示を入力
- 保存して適用
Claudeは幅広い知識を有しており、様々な質問に対して分かりやすく回答します。
プロンプト例:
量子コンピュータと従来のコンピュータの違いを、初心者にもわかるように説明してください。
プロンプト例:
PythonとJavaScriptの違いを、以下の観点から比較してください:
- 使用目的
- 実行環境
- 学習難易度
- 適したプロジェクト
プロンプト例:
Dockerコンテナを使ってNode.jsアプリケーションをデプロイする手順を、ステップバイステップで教えてください。
注意:ハルシネーション(事実に基づかない回答)の可能性があるため、情報の正確性を確認する習慣が重要です。
ユーザーの状況や要件を理解した上で、具体的な質問や指示に対応します。
プロンプト例:
以下の条件を満たすExcel数式を作成してください:
- A列に販売日、B列に販売金額が入力されている
- 今月の販売金額の合計を計算したい
- 空白セルは無視する
プロンプト例:
以下の販売履歴から、傾向と改善提案を教えてください。
<sales_data>
2024年1月: 500万円
2024年2月: 450万円
2024年3月: 600万円
2024年4月: 550万円
2024年5月: 700万円
</sales_data>
プロンプト例:
以下の情報に基づいて、新製品のマーケティング施策を3つ提案してください。
<product_info>
製品名: スマート体温計
ターゲット: 子育て中の親(20-40代)
特徴: スマホと連携、体温履歴の自動記録、発熱時のアラート機能
予算: 月50万円
</product_info>
プログラミング言語での関数作成、アルゴリズムの実装、コードの解説など、開発者の作業効率向上をサポートします。
プロンプト例:
Pythonでフィボナッチ数列のn番目の値を返す関数を、以下の要件で実装してください:
- 関数名: fibonacci
- 引数: n(整数)
- 戻り値: n番目のフィボナッチ数
- メモ化を使用して効率的に実装
- ドキュメント文字列を含める
プロンプト例:
クイックソートアルゴリズムについて、以下の点を説明してください:
1. 動作原理
2. 時間計算量(最良・平均・最悪)
3. 空間計算量
4. 適した使用場面
5. Pythonでの実装例
プロンプト例:
以下のPythonコードをレビューし、改善点を指摘してください。特にパフォーマンス、可読性、セキュリティの観点からお願いします。
<code>
[コード内容]
</code>
Claude 3モデルでは画像を入力してテキストを生成することも可能です。
使い方:
- チャット画面で画像アイコンをクリック
- 分析したいダッシュボードのスクリーンショットをアップロード
- プロンプトを入力
プロンプト例:
このダッシュボードの画像を分析し、以下の点について報告してください:
1. 主要な指標とその傾向
2. 注目すべきポイント
3. 改善が必要と思われる領域
4. 具体的なアクションアイテム
プロンプト例:
この画像に含まれるフローチャートを分析し、処理の流れをステップバイステップで説明してください。
プロンプト例:
このWebサイトのデザインについて、以下の観点からフィードバックをください:
- ユーザビリティ
- 視覚的な魅力
- 情報の階層構造
- 改善提案
プロンプト例:
あなたは世界中から絶賛されているプレゼンテーションの達人です。「これから広がる生成AIの未来」というテーマの30分のプレゼンの構成案を2つ考えてください。それぞれの案に対して、どのような聴衆を想定しているかも教えてください。
Genuのチャット機能は、会話の文脈を保持しながら複数回のやり取りが可能です。
活用例:
ユーザー: Pythonでデータ分析を始めたいのですが、何から学べばいいですか?
Claude: [回答]
ユーザー: では、pandasライブラリの基本的な使い方を教えてください。
Claude: [回答]
ユーザー: 今の説明のコード例をもう少し詳しく解説してください。
前の会話を参照しながら、「今の説明」「それ」などの代名詞を使った質問にも対応できます。
初回の回答が完璧でなくても、フィードバックを与えることで改善できます。
例:
ユーザー: マーケティングメールの文案を作成してください。
Claude: [初回の文案]
ユーザー: もっとフレンドリーなトーンにして、特典の部分を強調してください。
Claude: [改善された文案]
ユーザー: 件名も3つ提案してください。
Claude: [件名の提案]
明確な制約を設けることで、より目的に合った回答を得られます。
プロンプト例:
以下の制約条件を守って、新製品のキャッチコピーを5つ提案してください:
- 15文字以内
- カタカナは使わない
- ポジティブな印象を与える
- ターゲットは20代女性
- 健康志向をアピール
- AIの回答は必ずしも正確ではありません
- 重要な情報は公式ドキュメントや信頼できるソースで確認してください
- 特に医療、法律、金融などの専門分野では専門家に相談してください
- Amazon Bedrockはデータを保存しませんが、社内ポリシーに従って機密情報の扱いには注意してください
- 個人情報や機密データを含める前に、組織のガイドラインを確認してください
- プロンプトは明確かつ簡潔に
- システムコンテキストを活用して繰り返しの入力を削減
- 適切なモデルを選択してコストを最適化
- 差別的、違法、または有害なコンテンツの生成には使用しないでください
- 著作権を侵害するような使い方は避けてください
- AIが生成したコンテンツは人間がレビューしてから使用してください
第2章では、Genuの基本チャット機能について、LLMの基礎知識、利用可能なモデル、プロンプトエンジニアリングの技法、具体的な活用例を詳しく解説しました。次章では、社内データを活用して正確な情報提供を実現するRAG(Retrieval-Augmented Generation)チャット機能について説明します。