個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

C# だけで Azure OpenAI の RAG を試してみたい (9)デフォルトのチャットアプリをデプロイしてみる

①Web アプリをデプロイするボタンを押下 ②デプロイ設定の入力 ③デプロイが進行 ④デプロイが完了したら、アプリにアクセスする ⑤動作確認 前の記事 hiro128.hatenablog.jp 前回の記事でプレイグラウンドで動作確認をしましたが、プレイグラウンドは公開できま…

C# だけで Azure OpenAI の RAG を試してみたい(目次)

目次 目次 C# だけで Azure OpenAI の RAG を試してみたい (1)検討したシステム構成と処理フロー C# だけで Azure OpenAI の RAG を試してみたい (2)C# によるテキストのクレンジング・チャンクの方針 C# だけで Azure OpenAI の RAG を試してみたい (3…

C# だけで Azure OpenAI の RAG を試してみたい (8)「データの追加」とプレイグラウンドでの動作確認

データの追加 「データの追加」を開始する データソースの選択 「インデックスデータフィールドのマッピング」の設定 「データの管理」の設定 「設定のレビュー」行い完了させる プレイグランドでの動作確認 前の記事 hiro128.hatenablog.jp データの追加 チ…

C# だけで Azure OpenAI の RAG を試してみたい (7)インデックスへのドキュメント登録

ドキュメントの登録 Embedding の取得 ドキュメントのアップロード ドキュメントの削除時の注意点 ソースコード全体 前の記事 hiro128.hatenablog.jp ドキュメントの登録 作成したソースコードの詳細は以下を参照ください。 github.com Embedding の取得 チ…

C# だけで Azure OpenAI の RAG を試してみたい (6)AI Search の検索インデックス作成

AI Search の検索インデックス作成 フィールド セマンティック構成 ベクタープロファイル 前の記事 hiro128.hatenablog.jp AI Search の検索インデックス作成 クロールしてクレンジングしたはてなブログ記事のドキュメントを登録する AI Search のインデック…

C# だけで Azure OpenAI の RAG を試してみたい (5)Blob コンテナ上でのソースデータの更新日時の管理

留意点②:Blob コンテナ上でのソースデータの更新日時の管理 Blob メタデータへ url と 最終更新日時を付加したうえで、Blob 上の既存項目から更新があればアップロードする 前の記事 hiro128.hatenablog.jp 留意点②:Blob コンテナ上でのソースデータの更新…

C# だけで Azure OpenAI の RAG を試してみたい (4)html ファイルのクレンジング

html ファイルのクレンジング どのような実装をしたのか 参考にした Python のサンプルの実装 移植した C# の実装 前の記事 hiro128.hatenablog.jp html ファイルのクレンジング 作成したソースコードの詳細は以下を参照ください。 github.com どのような実…

C# だけで Azure OpenAI の RAG を試してみたい (3)TokenCounter の実装

TokenCounter の実装 Tokenizer のライブラリ 作成した C# のソースコード 前の記事 hiro128.hatenablog.jp TokenCounter の実装 SplitPlainTextParagraphs メソッドで正しくトークンをカウントするために必要な tokenCounter パラメーターはソースコードを…

C# だけで Azure OpenAI の RAG を試してみたい (2)C# によるテキストのクレンジング・チャンクの方針

C# のみで RAG を構築する場合の留意点 留意点①:C# によるテキストのクレンジング・チャンク SemanticKernel.TextChunker を使う SplitPlainTextParagraphs メソッドの留意点 前の記事 hiro128.hatenablog.jp C# のみで RAG を構築する場合の留意点 C# では…

C# だけで Azure OpenAI の RAG を試してみたい (1)検討したシステム構成と処理フロー

はじめに カスタマイズ方針 検討したシステム構成と処理フロー 注意 ソースコードと各プロジェクトの解説 はじめに 最近 Azure OpenAI の RAG について色々調べていますが、サンプルアプリは Python が多いです。 自分は C# が大好きなので、C# でやってみた…

Azure Functions のローカルデバッグで Azure Blob Storage トリガーのリトライ回数、同時実行数を制御する方法

ブレークポイントやコンソールに出力させてデバッグしたいときに、リトライが発生して、関数が複数実行されると非常にデバッグがやりにくいです。 それを制御する設定です。なお、この設定値は Source = BlobTriggerSource.EventGridの場合でも有効です。Azu…

GitHub Copilot Chat の AI-Powered Rename Suggestions を試してみた(2)

前回 Visual Studio Preview の既知の問題で時間を溶かしてあまり詳しく挙動を確認できなかったので、再度どれくらいいい感じにリネームしてくれるか確認してみました。 hiro128.hatenablog.jp well-known なアルゴリズム well-known なアルゴリズムのネーミ…

GitHub Copilot Chat の AI-Powered Rename Suggestions を試してみた(ら詰みかけた話)

AI-Powered Rename Suggestionsを試しました。以下のブログで紹介されていた記事です。 devblogs.microsoft.com 動作させるのに地獄を見る… この機能、2023/12/24 現在、Visual Studio 2022 Preview Version 17.9.0 Preview 2 (この時点での最新版)では不具…

「山東探究塾II中間発表会」に研究助言者として参加してきました。

2023年7月18日に、母校である山形県立山形東高等学校の「山東探究塾II中間発表会」に研究助言者として参加してきました。 山東探究塾とは「主体的・協働的で深い学び(探究型学習)による様々な教育プログラムを通して、将来、地域や国内外の課題を解決でき…

Visual Studio 2022 for Mac v17.6 Preview 2 にアップデートしたら...

「壊れているため開けません。ゴミ箱に入れる必要があります。」 なんじゃこりゃ!? アプリをゴミ箱に捨てて、インストーラーDLしてインストールし直したら直りました。

Orleans の Microsoft learn モジュール

Orleans について一通り、学んだ後は以下のモジュールにトライしてみると、より深く理解が得られます。おすすめです。learn.microsoft.com

Xamarin から .NET へのアップグレード

公式でも、Xamarin から .NET へのアップグレードが案内されるようになりました。いよいよ Xamarin が終焉が近くなってきました。 learn.microsoft.com Xamarin.Forms から MAUI への移行は .NET Upgrade Assistant が利用できます。 learn.microsoft.com Xa…

Orleans の構成要素:サイロ

目次 目次 サイロの役割 サイロの実装例 前の記事はこちらです。 hiro128.hatenablog.jp サイロの役割 サイロは複数の仮想アクターつまりグレインをホストするコンテナです。サイロは単一ではその効力を発揮できません。複数のサイロによって構成されるグル…

Orleans の構成要素:グレイン

目次 目次 グレインの役割 グレインの取得 グレインの実装例 インターフェース グレインのその他の特長 前の記事はこちらです。 hiro128.hatenablog.jp グレインの役割 グレインはユーザー定義のID(identity)、業務ロジック(behavior)、およびインメモリ…

Orleans の構成要素:フロントエンド

目次 目次 フロントエンドの役割 フロントエンドの実装例 前の記事はこちらです。 hiro128.hatenablog.jp フロントエンドの役割 フロントエンドは、www と Orleans の世界のゲートウェイの役割を果たします。 ( REST API と Orleans 独自の世界を相互変換す…

Orleans の基本的な構成を App Service にデプロイする(4)動作確認

目次 目次 Web App Azure Table 前の記事はこちらです。 hiro128.hatenablog.jp Web App フロントエンドにアクセスできて、サイロ01、サイロ02にアクセスできなければデプロイ成功です。 フロントエンド パブリックアクセス可 サイロ01 パブリックアクセス不…

ARM版 Visual Studio 2022 Preview でついに MAUI がサポート

ARM版 Visual Studio 2022 Preview 17.6.0 Preview 1.0 でついに MAUI がサポートされました! 詳細は後日レポート予定です。

Orleans の概要と基本構成のデプロイまで(目次)

目次 目次 Orleans は何を解決するために生まれ、どのようなフレームワークなのか Orleans の 構成と重要なプリミティブ(構成要素) Orleans の構成要素:フロントエンド Orleans の構成要素:グレイン Orleans の構成要素:サイロ Orleans の基本的な構成…

Orleans の 構成と重要なプリミティブ(構成要素)

目次 目次 Orleans の構成 Orleans の重要なプリミティブ(構成要素) 前の記事はこちらです。 hiro128.hatenablog.jp Orleans の構成 Orleans の構成は以下のようになっています。Orleans のクラスターは1つの巨大なコンピューターのように取り扱われます。…

Orleans の基本的な構成を App Service にデプロイする(2)VNet の設定

目次 目次 構成図 アドレス空間 接続デバイス(プライベートエンドポイント) サブネット 前の記事はこちらです。 hiro128.hatenablog.jp 構成図 構成では、フロントエンドのみパブリックアクセス可能、2つのサイロとストレージはプライベートアクセスのみ可…

Orleans は何を解決するために生まれ、どのようなフレームワークなのか

目次 目次 古典的なWebアプリの問題点 対策としてキャッシュ、キューなどを追加するも新たな問題が 根本解決のためのアプローチ(Orleans のコンセプト) 結局 Orleans とは Orleans のメリット 古典的なWebアプリの問題点 読み取り要求のたびにデータベース…

Orleans の基本的な構成を App Service にデプロイする(1)構成の確認

目次 目次 方針 構成 前の記事はこちらです。 hiro128.hatenablog.jp 方針 Orleans の基本的な構成のデプロイを App Service にデプロイしてみましょう。 基本的な方針を以下の通りとします フロントエンドのみパブリックアクセス可能 2つのサイロとストレー…

Orleans の 永続データオブジェクト

Orleans では、グレインの永続化とサイロのメンバーシップ管理用のテーブルとして、永続データオブジェクトを利用します。 Microsoft によってメンテされているグレインの永続化ストレージパッケージは以下です。 ADO.NET Azure Blob Storage、Azure Table S…

Orleans の基本的な構成を App Service にデプロイする(3)App Service の プライベートポート

目次 目次 WebSocket をオンにする VnetPrivatePortsCount VnetPrivatePortsCount を PowerShell で設定 アプリケーションコードで利用する際の注意点 前の記事はこちらです。 hiro128.hatenablog.jp WebSocket をオンにする サイロのインスタンス同士やサイ…

.NET MAUI の主なプロジェクトテンプレート(Xamarin との比較)

Xamarin でサポートされていたプロジェクトは .NET MAUI でサポートされているのでしょうか。 というわけで.NET MAUI の主なプロジェクトテンプレートを Xamarin と比較してみました。 下記の表の「短い名前」は、 .NET CLI で dotnet new mauiのように「短…