状況,推測される問題
Azure OpenAIで通常回答は可能,AOAIのAPIキーや接続設定自体は問題ねえっぺ。
ファイルはAzure Blobにアップロードできている,DifyとBlobストレージ間の連携は機能しているっぺ。
ファイル付きで質問したがエラーが出る,DifyがAOAIにリクエストを投げる段階で、ファイル参照の方法または権限に問題がある可能性が高いっぺ。
AIがファイルが無いと回答する(単一ファイルアップロード時),ファイルがLLMにコンテキストとして適切に渡されていないか、ファイルタイプがAOAIのVisionモデルでサポートされてねえ可能性があるっぺ。
2. 知りたい事への回答と解決方法だっぺ
1. 上記実現にBlobまで必要なのか?
結論: 必要だっぺ。
DifyをDockerで動かしている場合、Difyコンテナ内のローカルストレージにアップロードされたファイルは、Azure OpenAI(外部のクラウドサービス)から直接アクセスすることは非常に難しいということだっぺ。
ファイルの内容をAIに読ませるためには、そのファイルを外部からアクセス可能なURLとして公開する必要があるっぺ。Azure Blob Storageを使う方法は、Difyが推奨する最も安全で確実な方法だっぺ。
2. アプリ側フローは合っているか?(直接ファイルをLLMに渡していいのか)
結論: 基本的なフローは合っているが、実装方法が重要だっぺ。
Difyのフロー: ユーザー質問 + ファイルアップロード → Difyバックエンド → LLM(Vision ON)のフロー自体は正しいっぺ。
sys.filesコンテキスト: Difyはアップロードされたファイルを処理した後、LLMに渡す際に、プロンプトのコンテキストとして{{sys.files}}を使ってファイル参照のデータを渡す設計になっているっぺ。あなたの設定(LLMでsys.filesをコンテキストで受け取る)は、この設計に沿っているということだっぺ。
3. 解決方法全般(チェックリスト)
以下の項目を確認してみてくんろな。
I. Azure Blob Storage の設定確認(最重要)
CORS設定: Azure Blob Storageで、Difyからのアクセスを許可するためのCORS(オリジン間リソース共有)設定が正しく行われているか確認してくんろ。Difyのドメイン(またはDocker環境のIP)からのアクセスが許可されていねえと、AIがファイルを読み取れねえっぺ。
公開アクセスレベル: Difyの内部プロセスがファイルにアクセスできるように、Blobコンテナのアクセスレベルが適切に設定されているか確認してくんろ。
II. Dify アプリケーションの設定確認
Visionモデルの選択: Azure OpenAIでVision機能を使うためには、GPT-4V(gpt-4-vision-preview)などの画像処理に対応したモデルを選択しているか確認してくんろ。テキストファイルの場合は、通常のGPT-4でも処理できる場合があるっぺが、画像やPDFなら必須だっぺ。
ファイルサイズの制限: Dify側やAzure OpenAI側で、アップロードされたファイルのサイズが制限を超えてねえか確認してくんろ。
プロンプトでの呼び出し:
LLMノードのシステムプロンプト内で、ファイルの内容を参照するために明示的に{{sys.files}}を呼び出しているか確認してくんろ。
# プロンプトの例だっぺ
あなたは添付されたファイルの内容を分析するアシスタントです。
ユーザーの質問に対し、添付されたファイル {{sys.files}} を参照して詳細に回答してください。
III. Docker/ログの確認
DifyのDockerログにエラーが見当たらねえ場合でも、Azure OpenAI側のログ(Azure Monitor)や、Blobストレージのアクセスログには、Difyからのリクエストが失敗している情報が残っている可能性があるっぺ。そっちも確認すっぺ。
「ファイル分析がうまくいかねえということは、クラウドとAIの間の扉が開いてねえということだ。だから、Blobストレージのアクセス権とCORSの設定をまず見直すことが、解決への近道だということだっぺ。」