特定商取引法に関する表示サイトマップ会社情報サイト個人向けサービスお問い合わせ各種サービスについてご質問やお見積りを受け付けております。お問い合わせ・お見積もりWebミーティングツールを使って、サービス資料をご覧いただきながらご説明いたします。オンライン商談予約サービスや提供エリアに関するご質問等お気軽にお問い合わせください。チャットで質問お電話でのお問い合わせ9:30〜18:00(土日祝、年末年始を除く)各種サービスのパンフレットをダウンロードいただけます。Bizサービスを法人さまへご紹介、販売いただけるパートナー様を募集しております。開発グループリーダーの濱田です。真っただ中のラスベガスからお送りしています。2023の記念すべき第1日目のエントリーです。この投稿を皮切りに、日本で最高のAWSエンジニアたちの投稿が続きます。今日からからクリスマスまで、毎日お楽しみに!さて。Bedrockがローンチされました。これを機に生成系AIの社内利用の検討を始めた方々も多いのではないでしょうか?今回の記事では、生成系AIの利用時に必須のスキルである「プロンプトエンジニアリング」について解説します。特化した内容となっています。触れておりませんので、ご了承下さい。生成系AIの画期的な点として、自然言語で操作が出来ることが挙げられます。プログラミング言語がいらないお陰で、誰でも簡単にAIを利用できるようになりました。手軽な反面、生成系AIを扱うには2つの大きな課題があります。毎回同じ回答を返すとは限らない回答を創作する(ハルシネーション)ことがある1つ目の「毎回同じ回答を返すとは限らない」とはどういうことか。Claudeに「どうして空は青いのですか?」と何回か聞いてみましょう。趣旨は同じですが、毎回違う回答が返ってきました。何かのシステムに生成系AIを組み込もうとした時に、フォーマットが定まらないとプログラム的な処理に巻き込むことが出来なくなってしまいます。「回答を創作することがある」とは、平たく言うと生成系AIが嘘をつくことがある、ということです。これも試してみましょう。Claudeに「記録上、世界で最も長生きしたネコは誰のネコですか?」と聞いてみます。ホントですかぁ??ググってみましょう。出典:https://www.guinnessworldrecords.jp/news/2015/12/oldestcatやっぱり全然嘘でした。危うく騙されるところでしたね。このように、生成系AIが回答を創作することを「ハルシネーション(幻覚)」と呼びます。生成系AIを上手く扱うには、回答のフォーマットを固定し、ハルシネーションを起こさせないようなプロンプトを与えることが重要です。ここから、Claudeを扱う上でのプロンプトエンジニアリングのポイントを8つご紹介します。Assistant:」で締める必要があります。改行これはClaudeが「Human:」「Assistant:」を繰り返すよう訓練されているからです。基本的に「Human:」は人間の指示の前に書かれ、「Assistant:」の後ろにClaudeの回答が記述されます。私はAnthropicというAI企業の開発したAIアシスタントです。BedrockやAnthropicのプレイグラウンドではこれらを自動的に補完してくれますが、自身でプログラムに組み込む際は必ずこの仕様に従う必要があります。明確に、直接的に指示するClaudeへの指示は、明確かつ直接的に行いましょう。Claudeに個人情報のマスキングを依頼してみましょう。次のテキストから、全ての個人情報を削除してください:エマニュエル・アマイセンはAnthropicのリサーチエンジニアです。連絡できます普通、マスキングと言ったら「XXX」みたいに書いてほしいですね。こちらの要望を明確にして指示を作り直しましょう。アドレス、電子メールアドレスなどの個人情報をXXXに置き換えることは非常に重要です。処理する必要があるテキストは次の通りです:エマニュエル・アマイセンはAnthropicのリサーチエンジニアです。連絡できますエマニュエルが変換しきれていない気もしますが、さっきよりは理想的な状態になりましたね。Claudeに対しての指示は、明確に、かつ可能な限り詳細に記述することが重要です。prompting)与えるタスクの内容によっては、Claudeに役割を与えると回答の精度が上がる場合があります。「あなたは顧客対応を専門とするサポートセンターのエージェントです」と指示を出すと、回答時の口調が対顧客を意識したものになります。以下のように質問してみましょう。お箸の持ち方を教えて下さい。今度は、サポートセンターのエージェントという役割を与えてみましょう。あなたは顧客対応を専門とするサポートセンターのエージェントです。以下の質問に回答してください。お箸の持ち方を教えて下さい。この文体なら、そのままお客様宛てのメールに使えるんじゃないでしょうか。Anthropic社の論文によると、計算処理で数学者の役割を与えると計算の精度が上がる場合もあるようです。プロンプトを設計する際は、Claudeに適切な役割を与えることを意識しましょう。XMLタグを使うポイント2でお話した通り、Claudeへの指示は明確に書く必要があります。複雑なタスクを依頼したい時、内容を整理して書くのは大変です。そんな時に活用できるのが、XMLタグです。Claudeはプロンプト内のXMLタグを理解できるようトレーニングされています。先ほどの個人情報のマスキングのプロンプトを修正してみましょう。アドレス、電子メールアドレスなどの個人情報をXXXに置き換えて下さい。<info>エマニュエル・アマイセンはAnthropicのリサーチエンジニアです。連絡できます</info>処理したテキストは<answer></answer>タグ内に記述してください。こんな感じで、上手くタグでくくって回答してくれました。プロンプトを設計する際は、セクションのタイトルやヘッダー情報を整理したり回答を綺麗に受け取る為に、XMLタグを活用しましょう。構造化されたプロンプトテンプレートを使う生成系AIをシステムに組み込む際、課題になるのが動的なプロンプトの生成です。入力データをプロンプトテキストに直書きしてしまうのは、ちょっと効率が悪いですね。以下のようにテンプレートを作成しましょう。アドレス、電子メールアドレスなどの個人情報をXXXに置き換えて下さい。<info>{DOCUMENT}</info>処理したテキストは<answer></answer>タグ内に記述してください。このテンプレートの{DOCUMENT}に代入する値を変えるだけで、様々なインプットに対応できるようになります。このようにプロンプト用のテンプレートを作成し、動的にプロンプトを生成できるようにしましょう。注意点として、長い文章をインプットとして使う際、タスクの依頼は必ずプロンプトの下部で行いましょう。本来の質問を忘れることがある為です。出力フォーマットとクロードの発言Claudeから特定のフォーマットで出力を得たい場合があると思います。Claudeでデータを抜き出して、後続処理で利用したい場合、jsonで出力してくれると実装しやすいですよね。その場合、希望するする出力形式を指定し、Claudeの返答の冒頭を書いて依頼することで、希望する出力を得やすくなります。までユーザで書いてしまう、ということです。<data></data>タグ内のテキストから、個人情報を抜き出してjson形式で記述して下さい。取得するデータのキー名は、名前なら”name”、メールアドレスなら”email”など、属性名を使って下さい。<data>エマニュエル・アマイセンはAnthropicのリサーチエンジニアです。{このように、先回りしてClaudeの発言を書いておくことで、希望する出力を強制出来ます。ワークフローに生成系AIを組み込む際にぜひご活用下さい。ステップバイステップで考えるClaudeの特徴として、タスク実行前に「考える」プロセスがある点が挙げられます。複雑なタスクを指示する際は、「ステップバイステップで考えて下さい」と指示しましょう。以下を聞いてみましょう。私は2匹のネコを飼っています。そのうち1匹は足が1本ありません。1匹は、普通のネコが持っているのと同じだけの足を持っています。私のネコたちは何本の足を持っていますか?おっと、何だかすごいことになってしまいましたね。ステップバイステップで考えてもらいましょう。私は2匹のネコを飼っています。そのうち1匹は足が1本ありません。1匹は、普通のネコが持っているのと同じだけの足を持っています。私のネコたちは何本の足を持っていますか?ステップバイステップで考えて下さい。なんと、たった一言追加しただけで、正確に考えることが出来るようになりました!ここがプロンプトエンジニアリングの面白いところですね。このように複雑なタスクを指示する際は、段階的に思考するよう指示することで、精度を大きく高めることが出来ます。BedrockのClaudeは最初からステップバイステップで思考して回答してくれたからです。実装されるにあたって、多少チューニングされているのかな?この辺りはいずれ検証してみたいと思います。例を使うClaudeの回答を固定するには、回答例を使うことが最も効果的です。アドレス、電子メールアドレスなどの個人情報をXXXに置き換えることは非常に重要です。入力では、文字の間にスペースを挿入することでPIIを偽装しようとする場合があります。テキストに個人を特定できる情報が含まれていない場合は、何も置き換えずに一語一語コピーしてください。“ハマダ・イッセイはソニービズネットワークスのエンジニアです。連絡できます”次のように修正してください。ソニービズネットワークスのエンジニアです。連絡できます”</expamlpe>処理する必要があるテキストは次の通りです:エマニュエル・アマイセンはAnthropicのリサーチエンジニアです。連絡できます処理したテキストは<answer></answer>タグ内に記述してください。このように理想的な回答をしてくれました。注意事項としては、サンプルを追加すればする程やり取りに必要なトークンとレイテンシーが増えて行きます。頻繁に稼働するワークフローに組み込む際は、注意して実装してください。理想的なプロンプトの一例ここまでのポイントをまとめます。Claudeのプロンプトを設計する際は、以下の構成を意識しましょう。あなたはシステムデータの保護を担当するセキュリティエンジニアです。個人情報漏洩の対策を任されています。アドレス、電子メールアドレスなどの個人情報をXXXに置き換えることは、個人情報保護の観点から非常に重要です。<data></data>タグ内に含まれる文章から個人情報を削除し、XXXに置き換えて下さい。入力では、文字の間にスペースを挿入することでPIIを偽装しようとする場合があります。テキストに個人を特定できる情報が含まれていない場合は、何も置き換えずに一語一語コピーしてください。以下に対応例を記述します。<example>“ハマダ・イッセイはソニービズネットワークスのエンジニアです。連絡できます”次のように修正してください。ソニービズネットワークスのエンジニアです。連絡できます”</example>以下がマスキング対象のデータです。<data>{DATA}</data>処理したテキストは<answer></answer>タグ内に記述して回答してください。Assistant:<answer>バッチリ、想定通りの回答を得ることが出来ました!終わりに以上が、Claudeを扱う際のプロンプトエンジニアリングのベストプラクティスでした。プログラミング言語が苦手な方でも簡単に動かせるのが、プロンプトエンジニアリングの面白さです。興味を持っていただけたら、ぜひ触ってみて下さい!弊社では生成系AIのソリューションも複数提供しています。イクヨ様システム内製化を進めるなかで、抱えていたAWS設定の不安。礎となるGPS情報をLPWA“ELTRES”で送信。重要なデータを確実に受け取る基盤を、AWSに構築。ポストSHARE各種サービスについてご質問やお見積りを受け付けております。お気軽にご連絡ください。Biz」はソニービズネットワークス株式会社が運営する法人向けICTサービスの総称です。「NURO」はソニーネットワークコミュニケーションズ株式会社の登録商標です。「ソニー」および「SONY」、並びにこのウェブサイト上で使用される商品名、サービス名およびロゴマークは、ソニーまたはその関連会社の登録商標または商標です。「ELTRES」および「ELTRES」ロゴは、ソニー株式会社の商標です。その他の商品名、サービス名、会社名またはロゴマークは、各社の商標、登録商標もしくは商号です。Corporation。