07JP27 / SystemPromptSwitchingGPTBot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SystemPromptSwitchingGPTBot

1つのボットでシステムプロンプトや各種パラメーターを切り替えながらChatGPTと対話できます。構想としてはGPTsを1つのボットの中で使うようなイメージです。 Teamsを前提に開発していますが、Azure Botを使用しているためSlackやLINEなどの各種チャットサービスにも対応しているはずです。

セットアップ方法

前提条件

  • このリポジトリをフォーク&クローンまたはダウンロード

  • Azure OpenAI ServiceまたはOpenAIの準備

    • Azure OpenAI Service:GPT-35-turboまたはGPT-4のデプロイ
  • ローカル実行を行う場合は以下の環境がローカルマシンに準備されていること

    • .NET 8
    • VS CodeまたはVisual Studio
    • Bot Framework Emulator
    • Azure CLI

Azure OpenAI Serviceのデプロイ

  1. Azure OpenAI Serviceをデプロイします。
  2. gpt-35-turboまたはgpt-4のいずれかをデプロイします。

システムプロンプト設定の改変

app/GptConfiguration/ディレクトリ配下に各種システムプロンプトの設定ファイルがあります。これらのファイルを編集することでシステムプロンプトの設定を変更できます。また、IGptConfigurationを実装したクラスを作成することで独自のシステムプロンプト設定を新規作成することもできます。

ローカル実行

  1. 対象のAzure OpneAI Serviceのアクセス制御でローカル実行ユーザーにRBAC「Cognitive Services OpenAI User」ロールを付与します。すでに共同作成者がついている場合でも必ず別途付与してください
  2. appsettings.Development.jsonにAzure OpenAI Serviceのエンドポイントとデプロイ名をセットします。
  3. ターミナルでaz loginを実行してAzure OpenAI ServiceのリソースのRBACに登録したアカウントでAzureにログインします。
  4. dotnet runまたは再生マークボタンでローカル実行します。
  5. ローカルサーバーが起動したらBot Framework Emulatorでhttp://localhost:3978/api/messagesに接続します。(ポートが異なる場合があります。環境に合わせてください。)
  6. チャットできることを確認します。

Azureへのデプロイ

Azure Web Appsのデプロイとセットアップ

  1. Azure Web Appsをデプロイします。
  2. システム割当マネージドIDの有効化します。
  3. マネージドIDをAzure OpenAI Serviceのリソースのアクセス制御に「Cognitive Services OpenAI User」として追加します。

Azure Botのデプロイとセットアップ

  1. Azure Botをデプロイします。

    1. データ所在地:「グローバル」
    2. 価格レベル:「Standard」
    3. アプリの種類:「シングルテナント」
    4. 作成の種類:「新しい Microsoft アプリ ID の作成」
  2. 「チャンネル」画面の「利用可能なチャンネル」セクションからTeamsを有効化します。

  3. デプロイしたAzure Botの「構成」画面の「メッセージングエンドポイント」に「{Web AppsのURL}/api/messages」(例:https://xxxx.azurewebsites.net/api/messages)を入力して適用します。

  4. 「構成」メニューから以下の情報をメモします。

    • Microsoft App ID
    • アプリ テナントID
  5. Microsoft App IDの横の「パスワードの管理」をクリックしてEntra IDのアプリ登録画面へ遷移します。

  6. 「新しいクライアントシークレット」をクリックしてシークレットを作成します。作成したシークレットの「値」をメモします。シークレットの値は作成直後しか表示されません。メモせずに画面遷移をすると2度と表示できないのでご注意ください。

Azure Web Appsのアプリケーション設定

  1. Azure Web Appsの「構成」メニューをクリックして「アプリケーション設定」を表示します。

  2. 「新しいアプリケーション」をクリックして以下の6つのアプリケーション設定を登録します。

    • MicrosoftAppType:SingleTenant
    • MicrosoftAppId:Azure BotからメモしたMicrosoft App ID
    • MicrosoftAppPassword:Entra IDのアプリ登録で作成、メモしたクライアントシークレットの値
    • MicrosoftAppTenantId:Azure Botからメモしたアプリ テナントID
    • OpenAIEndpoint:Azure OpenAI Serviceのエンドポイント
    • OpenAIDeployment:Azure OpenAI Serviceのデプロイ名
  3. 「保存」をクリックしてアプリケーション設定を反映します。

Azure Web Appsのアプリケーションデプロイ

  • 本リポジトリにはデプロイ用のGitHub Actionsが含まれています。GitHub Actionsを使用してデプロイする場合はそれを使用してください。
  • ローカルからデプロイする場合はaz cliやVS CodeのAzure App Service拡張機能を使用してデプロイしてください。

Teamsでの動作確認

Manifestの作成

  1. manifest/manifest.jsonの中の<xxx>となっているプレースホルダーをご自身の設定に書き換えます。
  2. manifest.jsoncolor.pngoutline.pngをzip圧縮します。このときに3つのファイルが入っているフォルダを圧縮するのではなく、3つのファイルを直接圧縮してください。フォルダを圧縮するとインポートできません。

Teamsへのインポート

  • サイドローディングがサポートされている環境ではアプリをアップロードして個人用のアプリをインストールすることができます。
  • 組織全体に配布する場合はTeamsの管理者である必要があります。「Teams管理センター」へアクセスして「Teamsアプリ」→「アプリの管理」から「新しいアプリのアップロード」を選択して圧縮したmanifestファイルをアップロードします。

About


Languages

Language:C# 48.6%Language:HTML 46.3%Language:Smalltalk 5.1%