GPT-4oによる生成AIチャットアプリ改善:プロンプトサジェスト機能

はじめに

この記事では、弊社が開発した社内向け生成AIチャットアプリの改善について、その中でも特に「プロンプトサジェスト」機能に焦点を当てて紹介します。この機能は、ユーザーが効率的に質問を進めるために、AIが次にすべき質問を自動で提案するものです。また、このプロジェクトでは、Azure OpenAIのGPT-4o(PTU契約(※1))を使用して、高精度な回答生成を実現しています。

なお、リリース当初の取り組みに関する詳細は「Azure OpenAI Serviceで社内版ChatGPTのChatPCAを構築した話」に記載していますので、ご関心のある方はそちらもご覧ください。

リリースの背景

弊社では、7000人の社員が利用できる生成AIチャットアプリを導入しています。しかし、特にAIや生成モデルに不慣れなユーザーにとって、どのように質問をすればよいか分からないという課題がありました。これを解決するために、プロンプトサジェスト機能が開発されました。なお、この機能はすでにMicrosoftのCopilotにも搭載されているため、馴染みのある方も多いかもしれません。

結論

この機能改善によって、以下の効果が得られました:

  • プロンプトサジェスト機能により、ユーザーは次に何を質問すべきかを自動的に提案され、スムーズにチャットを進行できるようになりました。
  • GPT-4oを利用して高精度な質問応答が可能になり、AIとの対話の質が向上しました。

概要の説明

プロンプトサジェスト機能の導入背景
プロンプトサジェスト機能の導入背景
プロンプトサジェスト機能は、ユーザーが入力した直前の質問や会話の流れに基づいて、次にどのような質問をすべきかを自動で提案します。この機能により、新規利用者や生成AIに不慣れな社員でも、AIとの対話をスムーズに進められるようになります。

取り組んだこと

プロンプトサジェストの流れ
プロンプトサジェストの流れ

  1. 固定サジェストプロンプトの導入  

    • チャットの初期画面には、全社共通や事業部ごとのおすすめプロンプトが表示されます。これにより、新規利用者でもすぐに適切な質問を開始できます。また、事業部ごとに異なるプロンプトを表示するカスタマイズも可能で、プロンプトの修正箇所がハイライトされるなど、UI/UXにも工夫が施されています。
  2. 次に質問する内容のサジェスト  

    • チャット中に、ユーザーの直前の発言や会話の流れに基づいて次の質問候補が自動で提案されます。これにより、ユーザーは対話の流れを維持しつつ、適切な質問を選択することが可能です。

ここで、2を実現するために、以下のような指示用のプロンプトを設定しています。


### 指示
あなたはアシスタントの返答に対する質問を考えて、様々な質問の候補を計3つ生成しないといけません。質問は回答例のJSONフォーマットで返してください。もしこの指示に従わない場合、ペナルティを与えます。

### 回答例
{{
  "messages": [
    "ユーザーの質問候補1",
    "ユーザーの質問候補2",
    "ユーザーの質問候補3"
  ]
}}

### 条件
- ユーザーの発言 `{${ユーザーメッセージ}}` とアシスタントの返答 `{${アシスタントメッセージ}}` に続くセンスのある質問を生成してください。  センスのある質問には100万円の報酬が支払われます。  
- 質問候補には必ずバリエーションを持たせてください。似たような質問はペナルティ対象です。  
- 質問は必ず**40文字以下**にしてください。それを超えた場合はペナルティが発生します。  
- 明確に質問として成立する内容のみ生成してください。質問文でないものはペナルティ対象です。  
- 回答にマークダウンは絶対に適用しないでください。適用した場合、ペナルティを与えます(2)

詳細な技術背景や実装の参考情報については、以下の記事をご参照ください:
参考記事: 「OpenAI API Structured OutputsでLLMアプリ開発を高精度化&爆速化🚀」


今後の展望

今回のプロンプトサジェスト機能に続き、今後さらに構造化されたデータの出力が必要になるケースに備えて、弊社のチャットアプリでは、OpenAIのGPT-4o-2024-08-06モデルで導入されたStructured Outputs機能の活用を検討しています。この機能を使うことで、生成AIの出力を直接JSON形式で取得でき、フォーマット指定がプロンプト内で完結するため、効率的なデータパースが可能になります。これにより、開発効率が向上し、データの一貫性や信頼性も高まります。

特に、JSON形式へのパース時に表記揺れなどの影響で発生するエラーのリスクをStructured Outputsで軽減できると考えています。また、大規模なデータベースや社内文書から正確に情報を抽出する際にもこの機能は非常に有効で、セキュリティやデータの正確性をより一層強化します。

ただし、現時点では、このStructured Outputs機能を備えたGPT-4o-2024-08-06モデルはAzure OpenAIのPTU版でまだ利用できないため、Azure側の正式対応を待ちながら社内でのテスト環境整備を進めています。今後、この技術を取り入れることで、より柔軟で高度なAIソリューションを提供できることが期待されています。
(参考記事:Azure OpenAIでStructured Outputsを使う!

まとめ

プロンプトサジェスト機能の導入により、生成AIの利用促進が大きく進展しました。ユーザーは的確な質問提案を受けることで、AIとの対話をスムーズに進めることができ、GPT-4oを活用した高精度な回答が得られることで、業務の効率化も進んでいます。今後もこの機能をさらに発展させ、利用者のニーズに応じた改善が期待されます。

注釈
  • (※1) PTU(Provisioning Throughtput Unit)とは、Azure OpenAIで指定したスループットを事前に予約することで、安定したパフォーマンスを確保できるリソースの管理単位です(参考:プロビジョニングされたスループットとは)。
  • (※2) この指示を導入した理由は、プログラミングのソースコードが含まれると、AIが自動的にマークダウン形式を適用してしまうことがあったためです。フォーマットが崩れると後続処理でのパースに失敗し、エラーが発生するため、この対策としてペナルティを設定しています。

梅本 誠也 Seiya Umemoto

デジタルテクノロジー統括部 生成系AIエンジニアリング部 生成系AIエンジニアリンググループ リードエンジニア

韓国で5年間正規留学し、その間に業務委託で機械学習とデータエンジニアリング方面の開発を経験。新卒でアプリケーションエンジニアとしてフロントエンド、バックエンド、インフラを幅広く経験。パーソルキャリア入社後はデータエンジニアとして、社内のデータ分析基盤の構築と運用保守を担当。一方で、生成系AIを用いたアプリケーション開発にも携わっている。

※2024年10月現在の情報です。