Giter VIP home page Giter VIP logo

systempromptswitchinggptbot's Introduction

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ファイルをアップロードします。

systempromptswitchinggptbot's People

Contributors

07jp27 avatar rukasakurai avatar

Stargazers

Apps Dev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.