現在の見出し:7.1節:RAGの挙動とエラー内容をチェックする方法
見出し一覧
- 7.1節:RAGの挙動とエラー内容をチェックする方法
- - Azure PortalでRAGの挙動をチェックする方法
- - Function Appのエラーをチェックする方法
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Azure PortalでRAGの挙動をチェックする方法
はじめにトップ画面から「Azure Function」リソースをクリックします。
表示内容の株に関数関数は一定の処理をまとめたプログラムの塊です。名(今回だとragchat)が表示されるので、こちらをクリックします。
関数の実行画面が表示されます。画面上から「Test/Run」をクリックしてください。
画面右に実行内容の入力欄が表示されます。下部にある「Body」欄にJson形式で入力するだけで挙動を実行できます。
例えば「Azureとは」という質問をする場合、Body欄へ以下のように入力し「Run」ボタンをクリックします。
{
"question": "azureとは"
}
もし問題なく動作すると、上記のように回答が表示されます。しかし、原稿のコードだといくつかのエラーポイントがあります。Azure Portalでエラーチャックする方法も含めて解説します。
Function Appのエラーをチェックする方法
Azure ポータルから対象の Function App(rag-function1)を開きます。
左の検索欄へ「logs」と入力し「Monitoring」欄の「Logs」をクリック。上記の画面が表示されるので、右上の「×」ボタンを押して閉じてください。
すると「New Query」という欄が表示されます。右上の「Simple mode」を「KOL mode」へ変更し、画面中央に以下のコードを入力・Runコマンドで実行してください。
exceptions
| where timestamp > ago(30m)
| order by timestamp desc
上記は「直近30分以内に発生した例外例外は予期せぬエラーが発生した場合に通常の処理を中断して別の処理を行う仕組みです。を、exceptionsテーブルから取り出して新しい順に並べる」というSQLSQLはStructured Query Languageの略称です。クエリです。このクレイを実行することで、どのようなエラーが発生しているのか把握できます。
実際に実行すると、おそらく以下のようなエラーが表示されるはずです。
【エラーコード】
Result: Failure Exception: ModuleNotFoundError: No module named 'openai'. Cannot find module. Please check the requirements.txt file for the missing module. For more info, please refer the troubleshooting guide: https://aka.ms/functions-modulenotfound. Current sys.path:
このエラーは「Azure Functions上でopenaiライブラリライブラリは再利用可能なソフトウェアの部品です。が見つからない。requirements.txtにopenaiを追加してデプロイデプロイは開発したアプリケーションやWebサイトを実際に稼働させることです。し直す必要がある」という意味です。
しかし、requirements.txtにopenaiは追加済みなので、別に問題があります。
具体的には、GitHub Actionsにて「pip install -r requirements.txt」をしていましたが、それは「GitHubの一時マシン」に入っただけでAzureへ送るzipフォルダに同梱されていなかったことが理由だと考えられます。
GitHubからAzureへデプロイするまでに、以下のような過程があります。
今回は、上記のstep4で作成した「release.zip」に「Pythonライブラリ(openai など)」が入っていなかったことが原因で、Azure側の「import openai」が失敗しています。
そこで、Yamlの内容を以下のように変更します。
修正内容1. 依存の入れ方を変更
- ・Before: pip install -r requirements.txt(Runnerのグローバルに入るだけ)
- ・After : pip install -r requirements.txt --target=.python_packages/lib/site-packages
・併せて「mkdir -p .python_packages/lib/site-packages」を追加
修正内容2. Zip作成時の除外指定を見直し
- Before: zip -r release.zip . -x "venv/*" ".git/*" ".github/*"
- After : zip -r release.zip . -x "*.git*" ".github*" "venv/*" "__pycache__*" "*.pyc" "*.pyo"
- .python_packages は除外しない(=同梱するため)
- 不要物(__pycache__ など)だけ除外
上記の内容を修正した完成形のYamlが以下のとおりです。
name: Build and deploy Python app to Azure Function App
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies into .python_packages
run: |
python -m pip install --upgrade pip
mkdir -p .python_packages/lib/site-packages
pip install -r requirements.txt --target=.python_packages/lib/site-packages
- name: Create zip for deployment (includes .python_packages)
run: |
zip -r release.zip . -x "*.git*" ".github*" "venv/*" "__pycache__*" "*.pyc" "*.pyo"
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Function App
uses: Azure/functions-action@v1
with:
app-name: 'rag-function1'
package: 'release.zip'
上記内容に修正し、再度エラーが出るかチェックしてみてください。
上記のように「No results found」と表示されていれば、例外処理例外処理はプログラム実行中に発生する予期せぬエラーや異常な状況に対処するための仕組みで、プログラムの安定性と信頼性を向上させます。が発生しなかったということなのでエラーが解決されている可能性が高いです。