cloud

Azure Functions Pythonでストリーミングを実装するときの注意点

  • POST
はじめに 2024年5月から、Azure FunctionsのPythonでもHTTP Streamingが公式サポートされるようになりました。 本記事では、実装の流れとハマりやすい落とし穴について解説します。 ストリーミングとは ストリーミングとは、サーバーからのレスポンスを一括で応答せず、小さなデータに分割し、逐次的に配信する通信方式のことを指します。 小規模データに分割して、逐次配信するため、応答時間が短縮されるため、 動画や音声などの大規模データの配信や、チャット通知や株価更新など、リアルタイム性が求められる場面で利用されています。 SSE(Server-Sent Events)とは SSEは、日本語にするサーバー送信イベント。 クライアントが最初に送信する HTTP GETリクエスト をトリガーに、サーバーが通信を閉じずに継続送信する仕組みです。 サーバーは Content-Type: text/event-stream ヘッダーを返し、その後は通信を閉じずイベントを逐次的にクライアントへ送信し続けます。 類似の通信方式として、WebSocketがありますが、こちらは双方向の通信方式になります。 SSE:サーバー → クライアントの一方向通信(クライアントから送信するのは初回リクエストのみ) WebSocket:サーバー ↔ クライアントの双方向通信 背景と利用例 近年、ChatGPTをはじめとする生成AIサービスの急速な普及により、ストリーミング応答への需要が高まっています。 従来の一括応答方式では、大規模言語モデル(LLM)が長文を生成する際、すべての応答が完了するまでユーザーは待つ必要がありました。しかし、ストリーミング方式を採用することで、生成されたトークンから順次表示できるため、体感速度が大きく向上し、ユーザー体験が劇的に改善されます。 SSEは「受信専用のリアルタイム更新」が求められるケースに適しております。たとえば OpenAIのChatGPTをはじめとする生成AIサービス では、返答を一括で返すのではなく、トークン単位でストリーミング表示 する際に用いられることが多く、ユーザーはレスポンスを待たずに順次内容を確認できるため、体感速度が大きく向上いたします。 このような生成AIの普及を背景に、Azure Functionsでも2024年5月にPythonでのHTTP Streamingが正式サポートされ、モダンなAIアプリケーション開発がより容易になりました。 Azure Functionsでストリーミングを実装する 以前のAzure Functionsでは言語ランタイムがPythonの場合、Streamingがサポートされていませんでしたが、 2024年5月から、Azure FunctionsのPythonでもHTTP Streamingが公式サポートされるようになりました。 Functionsでストリーミングを実装する場合、以下の設定が必要になります。 環境変数設定 ストリーミングを使用する場合は、Azure Functionsの環境変数に以下の設定が必要になります。 この2つの変数の設定がないと、Functionsのリクエストがタイムアウトします。 設定がなくてもエラーログなどは出力されないので、トラブルシューティングに難儀することになることを防ぐため、設定忘れがないよう注意しましょう。 PYTHON_ENABLE_INIT_INDEXING=1 PYTHON_ISOLATE_WORKER_DEPENDENCIES=1 requirements.txt ストリーミングする際は、拡張機能としてFast-APIを有効にする必要があります。 azure-functions azurefunctions-extensions-http-fastapi function_app.py 下記はHello → from → Azure → Functions → Stream!の順に文字列をストリーミングで応答するコードです。

Azure OpenAIでGPT-Image-1をPythonのopenaiライブラリから使用する方法まとめ【注意点・トークン消費検証】

  • POST
はじめに GPT-Image-1は、OpenAIが提供する最新の画像生成モデルです。 この記事では、PythonのopenaiライブラリからGPT-Image-1を使用するにあたって導入から実装、料金や注意点まで体系的に整理します。 GPT-Image-1の概要 GPT-Image-1は、テキストからの画像生成や既存画像の編集を行うことができる画像生成モデルです。 以下の2つの機能が提供されています。 Image Genaration (画像生成) Image Edit (画像編集) OpenAI公式: GPT-Image-1 Image Genaration (画像生成) 入力したテキストプロンプトを元に画像を生成するAPIです。 gpt-image-1ではストリーミングを設定することができ、ストリーミングを有効にすると生成途中の中間画像を生成させることができます。 中間画像 完成画像 Image Edit (画像編集) 既存の画像に対して、画像の編集し、新たな画像を生成することが可能です。 入力したプロンプトにもとづき画像を編集 (例:背景を赤色にして、人物画像を追加して) 複数の入力画像を合成して、新たな画像を生成 (例: 2つの画像を合成して) 入力画像とともにマスク画像を指定することで、マスク画像に表示されている画像のみを編集対象にできる (例: 背景は同じまま、男性の画像を女性に変更する) マスク画像は入力画像の一部を透過したもので透明になっている部分のみが編集対象 以下にImage Editでマスク画像を使って既存の画像を編集した例を示します。 元画像 マスク画像 編集画像 料金体系 Azure OpenAIでは以下の料金体系で提供されています。 GPT-5と比較すると入力テキストのトークンの料金も4倍に上がっています。 ※GPT-Image-1 Globalの料金 モデル名 バージョン 提供状態 入力テキスト料金[$/1Mトークン] 入力画像[$/1Mトークン] 出力料金[$/1Mトークン] 備考 GPT-Image-1 gpt-image-1 GA 5 10 40 GPT-5 gpt-5-2025-08-07 GA 1.

【2025年07月】3大クラウド(Azure, AWS, Google Cloud)のAI系サービスリリースノート

  • POST
はじめに この記事では、Azure、AWS、Google Cloudの3大クラウドサービスのAIサービスの新規機能リリース履歴をまとめています。 主に以下のURLの情報をもとに新機能のキャッチアップを行っています。 Azure公式ドキュメント: Azure OpenAI Serviceニュース Azure公式ドキュメント: Azure AI Agent Serviceニュース Github: Azure公式ドキュメント管理リポジトリ Github: Azure OpenAI APIプレビューバージョン一覧 Github: Azure OpenAI API安定版バージョン一覧 AWS公式ドキュメント: AWS Bedrockリリースノート Google Cloud公式ドキュメント: Vertex AIリリースノート Anthropic公式ドキュメント: APIバージョン一覧 Azure 2025年07月02日: GPT-image-1アップデート(プレビュー) APIに「input_fidelity」パラメータが追加 元画像のスタイルや特徴をどの程度保持するかを調整可能に 以下のようなケースで有用 顔の特徴を保持したまま写真を編集 異なるスタイル間で元の人物に似せたアバター作成 複数人物の顔を合成 マーケティングアセットや製品写真でブランドアイデンティティを維持 Eコマースやファッション分野でリアルさを損なわず商品画像を編集 画像生成・編集APIで部分的な画像ストリーミングに対応

Azure AI Fondry Agenst ServiceのSDKについてまとめてみた

  • POST
はじめに 2025年05月20日からAzure AI Foundry Agent Serviceが一般提供が開始されました。 この記事では、Azure AI Foundry Agent ServiceのSDKについて紹介します。 GitHub: azure-sdk-for-python Azure公式ドキュメント: azure-sdk-for-python Azure公式ドキュメント: azure-sdk-for-python: readme Azure AI Foundry Agent Serviceとは Azure AI Foundry Agent Serviceは、AI エージェントの構築・管理ができるAzureのマネージドサービスです。 Azure AI Foundry Agent Serviceは、以下のような機能を提供しています。 AI Foundry PortalやAzure AI Foundry SDKを使って、エージェントの構築、管理が可能 複数のAIエージェントを組み合わせるマルチエージェントの構築が可能 A2A(Agent2Agent)、MCP(Model Context Protocol) などの業界標準プロトコルをサポート スレッドによるステートフルAPIをサポートしており、クライアントアプリ側での対話履歴の保持が不要 Azure AI Foundry Agent Service のセットアップパターン Azure AI Foundry Agent Service には、以下の2つのセットアップパターンがあります。 1. Basic setup(基本セットアップ) Agent Serviceで使用するデータをMicrosoftのマネージドリソース上に保持させる方法です。 通常、AzureでRAGアーキテクチャを構築する場合、Azure AI Searchなど高額なリソースを作成する必要がありますが、Basic setupを使用すれば、リソースの用意が不要なのでコストを下げることができます。

【2025年06月】3大クラウド(Azure, AWS, Google Cloud)のAI系サービスリリースノート

  • POST
はじめに この記事では、Azure、AWS、Google Cloudの3大クラウドサービスのAIサービスの新規機能リリース履歴をまとめています。 主に以下のURLの情報をもとに新機能のキャッチアップを行っています。 Azure公式ドキュメント: Azure OpenAI Serviceニュース Azure公式ドキュメント: Azure AI Agent Serviceニュース Github: Azure公式ドキュメント管理リポジトリ Github: Azure OpenAI APIプレビューバージョン一覧 Github: Azure OpenAI API安定版バージョン一覧 AWS公式ドキュメント: AWS Bedrockリリースノート Google Cloud公式ドキュメント: Vertex AIリリースノート Anthropic公式ドキュメント: APIバージョン一覧 Azure 2025年06月17日: codex-mini と o3-pro モデルがリリース codex-mini と o3-pro モデルが利用可能になりました。 codex-miniは、OpenAIのo4-miniから派生した、コーディングタスクに特化したAIモデルです。 o3-proは6月10日にOpenAIから提供されたo3シリーズはで最も高性能なモデルです。 項目 o3-pro codex-mini リージョン East US2, Sweden Central(Global Standard) East US2, Sweden Central(Global Standard) アクセス要否 o3アクセス済みなら申請不要、それ以外は申請必要 アクセス申請不要 価格 $20(入力) / $80(出力) $1.

Azure FunctionsでWe were not able to load some functions in the list due to errorsエラーの対処

  • POST
はじめに Azure Functionsを運用していると、突然関数リストが表示されなくなり、「We were not able to load some functions in the list due to errors」というエラーメッセージが表示されることがあります。 本記事では、Application InsightsでOpenTelemetry(OTEL)を使用している場合に発生する、OTEL_SERVICE_NAME環境変数が未定義であることが原因のエラーについて、その原因と対処方法をご紹介します。 エラーの症状 Azure PortalでFunctionsのページを開いたときに、以下のようなエラーメッセージが表示され、関数のリストが読み込めなくなります。 We were not able to load some functions in the list due to errors. Refresh the page to try again. Error while loading Ask questions and use troubleshooting tools to investigate these errors. Diagnose and solve problems この状態では: 関数の一覧が表示されない 個別の関数の詳細も確認できない コード上ではApplication Insightsへのデータ送信は正常に動作している エラーの原因 このエラーは、Application InsightsでOpenTelemetry(OTEL)を使用している場合に、OTEL_SERVICE_NAME環境変数が設定されていないことが原因です。 Azure FunctionsでOpenTelemetryを使用してテレメトリデータを送信する際、サービス名を識別するためにOTEL_SERVICE_NAME環境変数が必要になります。

Azure Durable Functionsでスロット使用時にリクエストが別のスロットにルーティングされる事象

  • POST
はじめに 本記事では、Azure Durable Functions を使用して開発・運用されている方向けに、デプロイスロットを併用する環境で発生する「リクエストが別スロットにルーティングされる事象」について解説します。 特に、本番と検証で同一のストレージアカウントを利用している場合は注意が必要です。 Azure Durable Functionsとは Azure Durable FunctionsはAzure Functionsの拡張機能です。 詳細は以下の記事をご参照ください。 Azure Durable Functionsとは 事象 Azure Durable Functions において2つのスロット(production と staging)で運用をしていました。 上記構成においてstagingスロット上のアプリにリクエストしていたにも関わらず、オーケストレーター関数がproductionのアクティビティ関数を実行する事象が発生していたため調査を行いました。 原因 Durable Functions では、状態管理およびオーケストレーション処理に Azure Storage(Queue や Table)を使用しています。 このとき、本番と検証のスロットで同一のストレージアカウントおよび同一の TaskHubName を利用している場合、Durable Functions のステート情報が混在し、スロット間でリクエストが交差してしまうことがあります。 詳細は以下の Stack Overflow のディスカッションもご参照ください: Azure Durable Functions invoked in mixed slots 対策 1. host.json の Task Hub 名をスロットごとに分ける Durable Functions では host.json ファイルで durableTask.hubName を指定できます。スロットごとに異なる名前を明示的に設定することで、ステートの混在を防止できます。 { "version": "2.