Azure OpenAI Service新機能:Responses APIとComputer Use機能を徹底解説🚀
記事紹介4コマ漫画:
こんにちは!出だしは先日発表のあったChatGPTの新機能4oによる画像生成を試してみた結果です。少し劣後していた画像生成機能の強化があり性能がとても良くなってるように感じます。
では気を取り直して、今回は2025年3月26日頃にAzure OpenAI Serviceで発表された新機能、Responses APIとComputer Use機能について詳しく解説します。AIがブラウザを自律的に操作する時代がついに到来したと言えるでしょう。この記事では、これらの新機能の概要から実装方法、OpenAI版との違い、そして具体的なユースケースまで掘り下げていきたいと思います!
公式ドキュメントのアナウンス:
忙しい人用にまとめスライド(made by 生成AI)
免責事項
本資料は生成AIを使用して作成されたものであり、内容の正確性、完全性、最新性、および有用性を保証するものではありません。本資料に記載されている情報、製品仕様、価格、発表内容などは実際のものとは異なる場合があります。公式情報については、必ずMicrosoft社/OpenAI社の公式ウェブサイトまたは公式ドキュメントをご確認ください。本資料の使用によって生じたいかなる損害(直接的、間接的、偶発的、結果的損害を含む)に対しても、作成者は一切の責任を負いません。本資料を業務判断や意思決定の唯一の根拠として使用することはお控えください。実際のビジネス判断を行う際は、必ず公式の情報源からの確認と専門家の助言を得ることをお勧めします。
1. Responses APIとComputer Use機能の概要
1.1 登場の背景
AIエージェントは産業界を変革しつつあります。Microsoft公式ブログによれば、保険金請求処理、ITサービスデスク管理、サプライチェーン最適化、医療記録分析など、様々な業務領域で自動化と知的支援が急速に進んでいるとのことです。
2025年3月26日、MicrosoftはAzure AI Foundryの一部として以下の2つの革新的技術を発表しました:
- Responses API: AI駆動アプリケーションが情報を取得し、データを処理し、シームレスにアクションを実行できる統合API
- Computer-Using Agent (CUA): ソフトウェアインターフェースを操作し、タスクを実行し、ワークフローを自動化するAIモデル
これらの技術は、AIを単なる「アシスタント」から積極的に行動する「デジタルワーカー」へと進化させる重要な一歩です。
公式動画より:
1.2 Responses APIとは
Azure OpenAI ServiceのResponses APIは、チャットモデルの応答性とアシスタント機能を統合した新しいステートフルAPIです。公式ドキュメントによれば、従来の「Chat Completions API」と「Assistants API」の長所を一つにまとめた「最良の両方」を提供する設計になっています。
"The Responses API is a new stateful API from Azure OpenAI. It brings together the best capabilities from the chat completions and assistants API in one unified experience."
OpenAI版との関係:
Responses APIは、2025年3月11日にOpenAIが先に公開した同名のAPIをAzure向けに提供したものです。OpenAIは公式ブログ「New tools for building agents」においてResponses APIを発表し、エージェント構築を容易にする新たなAPI群の一環として位置づけています。
Azure版はOpenAI版の基本コンセプトと設計思想を継承しつつ、Azure環境に最適化され、企業向けのセキュリティと統合性が強化されています。
ちなみに以前、OpenAI版のResponses APIおよびAgents SDKについての記事も書いていますのでご参考にしてもらえればと思います。
1.3 Computer Use機能とは
Computer Use(コンピューター利用)は、Azure OpenAIが提供する特殊なAIエージェント機能です。公式ドキュメントでは次のように説明されています:
"Computer Use is a specialized AI tool that uses a specialized model that can perform tasks by interacting with computer systems and applications through their UIs. With Computer Use, you can create an agent that can handle complex tasks and make decisions by interpreting visual elements and taking action based on on-screen content."
つまり、Computer UseはコンピューターのGUI操作をAIが自律的に行うためのモデルです。従来のRPAツールが事前定義されたスクリプトやAPI連携に依存するのとは対照的に、Computer Useは画面の視覚情報を解釈し、自律的に意思決定して操作を実行できます。
2. Responses APIの詳細機能と特徴
2.1 主要な機能と仕組み
Responses APIは、以下の主要機能を備えています:
- 複数ツールの統合利用: 単一のAPI呼び出しでLLMが複数のツールを呼び出せます(Computer Useエージェント、関数呼び出し、ファイル検索など)
-
ステートフルな会話管理: サーバー側で会話状態を管理し、
previous_response_id
で前回までのコンテキストを維持します - 関数呼び出し(Function Calling)対応: カスタム関数をツールとして定義し、モデルに呼び出させることができます
- 柔軟な入力形式: テキスト、画像、会話履歴などを組み合わせた入力が可能です
- 会話の継続性: 各応答には一意のレスポンスIDが付与され、次のAPI呼び出し時に前回までのコンテキストが自動で維持されます
2.2 サポートされているモデルとリージョン
現在(2025年3月27日時点)、Responses APIで利用できるモデルは以下の通りです:
- GPT-4 OpenAI (gpt-4o) – OpenAIの最新モデル
- GPT-4o Mini – 軽量化版モデル
- Computer-Use-Preview – UI操作に特化した専用モデル
Responses APIは現在プレビュー段階で、公式ドキュメントによれば以下のリージョンでのみ利用可能です:
利用可能リージョン(2025年3月27日時点)
australiaeast
eastus
eastus2
francecentral
japaneast
norwayeast
southindia
swedencentral
uaenorth
uksouth
westus
westus3
2.3 現時点での制約と未対応機能
公式ドキュメントによれば、Responses API(2025-03-01-preview)は現在(2025年3月27日時点)、以下の機能がサポートされていません:
- Structured outputs: 構造化フォーマットでの出力
- tool_choice: モデルが使用するツールを選択する機能
- image_url pointing to an internet address: インターネット上の画像URLへの直接参照
また、OCRなど一部のビジョンタスクに既知の問題があり、回避策として画像入力時のdetailレベルをhigh
に設定することが推奨されています。
3. Computer Use機能の詳細
3.1 Computer Useモデルの特徴
公式ドキュメントによれば、Computer Useモデルには以下の特徴があります:
- 自律的なUI操作: アプリケーションの起動、ボタンのクリック、フォームへの入力、複数画面にまたがるワークフローの遂行など
- 動的な適応能力: 画面レイアウトやUI要素の変化に対応し、スクリプトに依存しない柔軟な動作調整が可能
- クロスアプリケーション実行: Webアプリとデスクトップアプリを横断的に操作できる
- 自然言語インターフェース: ユーザーが通常の言語で指示するだけで、AIが適切なUI操作に変換する
3.2 サポートされている環境
Computer Useモデルは以下の環境で動作します:
-
ブラウザ環境:
"environment": "browser"
を指定 -
Windows環境:
"environment": "windows"
を指定 -
macOS環境:
"environment": "mac"
を指定 -
Ubuntu環境:
"environment": "ubuntu"
を指定
3.3 モデルの仕組みと動作フロー
Computer Useモデルは、以下のような連続的なループで動作します:
- 初期リクエスト: ユーザーからの指示と初期状態(スクリーンショット)を送信
- アクション決定: モデルが画面を分析し、次のアクション(クリック、タイプなど)を決定
- アクション実行: コードが指示されたアクションを実行(Playwrightなどを使用)
- 結果確認: 実行後のスクリーンショットを撮影
- 次のアクション: 新しいスクリーンショットをモデルに送り、次のアクションを取得
- ループ継続: タスク完了またはループ回数上限に達するまで続行
このアプローチにより、モデルは人間のように画面を見て判断し、操作を行うことができます。
3.4 安全性とセキュリティ対策
Computer Use機能には、以下の3つの安全性チェックメカニズムが組み込まれています:
-
悪意のある指示の検出 (Malicious instruction detection):
スクリーンショット画像を評価し、モデルの挙動を変える可能性のある敵対的コンテンツがないか確認します。 -
無関係なドメイン検出 (Irrelevant domain detection):
現在のURL(提供されている場合)を評価し、会話履歴に基づいて関連性があるか確認します。 -
センシティブなドメイン検出 (Sensitive domain detection):
現在のURL(提供されている場合)をチェックし、ユーザーがセンシティブなドメインにいる場合に警告を発します。
これらのチェックが発動した場合、モデルはpending_safety_checks
パラメータを返し、ユーザーの確認を求めます。確認後は次のリクエストでacknowledged_safety_checks
として承認内容を送信する必要があります。
3.5 利用制限と申請プロセス
Computer Use機能はプレビュー段階であり、利用には事前申請と承認が必要です。公式ドキュメントによれば:
"For access to the computer-use-preview model, registration is required and access will be granted based on Microsoft's eligibility criteria. Customers who have access to other limited access models will still need to request access for this model."
申請は専用フォームから行い、Microsoftによる審査後にアクセス権が付与されます。承認後、自社のAzure OpenAIリソースでcomputer-use-preview
モデルをデプロイして利用できます。
現在(2025年3月27日時点)、Computer UseモデルはEast US 2、Sweden Central、South Indiaの3リージョンでのみ利用可能です。
4. 実装例:Responses APIの基本的な利用
4.1 環境設定と前提条件
Responses APIを利用するには、最新バージョンのOpenAIライブラリが必要です:
pip install --upgrade openai
pip install azure-identity # Entra ID認証を使用する場合
また、APIバージョンには2025-03-01-preview
以降を指定する必要があります。
4.2 基本的なテキスト応答の取得
import os
from openai import AzureOpenAI
from dotenv import load_dotenv
load_dotenv()
# APIキーを使用した認証
client = AzureOpenAI(
api_key = os.environ["AZURE_OPENAI_API_KEY"],
api_version = "2025-03-01-preview", # 必ずpreviewバージョンを指定
azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
)
# Responses API呼び出し - シンプルなテキスト応答
response = client.responses.create(
model="gpt-4o", # デプロイしたモデル名を指定
input="Azure OpenAIのResponses APIについて教えてください。"
)
# 応答テキストを取得して表示
print(response.output_text)
4.3 会話の継続(ステートフル操作)
Responses APIの大きな特徴は、会話状態をサーバー側で維持できることです:
# 第一回目の質問
response = client.responses.create(
model="gpt-4o",
input="AIエージェントとは何ですか?"
)
print("最初の応答:", response.output_text)
# 前回の応答IDを使って会話を継続
second_response = client.responses.create(
model="gpt-4o",
previous_response_id=response.id, # 前回の応答IDを指定
input=[{"role": "user", "content": "具体的な例を挙げて説明してください"}]
)
print("継続応答:", second_response.output_text)
このコードでは、前回の質問内容を明示的に送信していなくても、previous_response_id
を指定することで前回のコンテキストが維持されています。
4.4 関数呼び出しの実装
Responses APIを使って外部APIと連携する例です:
import json
from openai import AzureOpenAI
client = AzureOpenAI(
api_key = os.environ["AZURE_OPENAI_API_KEY"],
api_version = "2025-03-01-preview",
azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
)
# 天気情報取得APIの定義(ダミー)
def get_weather_data(location):
# 実際のAPIでは、ここで外部サービスを呼び出します
weather_data = {
"東京": {"temperature": 22, "condition": "晴れ"},
"大阪": {"temperature": 24, "condition": "曇り"},
"札幌": {"temperature": 15, "condition": "雨"}
}
return weather_data.get(location, {"temperature": 20, "condition": "不明"})
# ツール定義を含むAPI呼び出し
response = client.responses.create(
model="gpt-4o",
tools=[{
"type": "function",
"name": "get_weather",
"description": "特定の場所の天気情報を取得します",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "都市名(例:東京、大阪、札幌)"
}
},
"required": ["location"]
}
}],
input=[{"role": "user", "content": "今日の東京の天気を教えてください"}]
)
# 関数呼び出しの検出と処理
function_call = None
for output in response.output:
if hasattr(output, 'type') and output.type == "function_call":
function_call = output
break
if function_call:
print(f"関数呼び出し: {function_call.name}")
# 関数の引数を解析して実行
args = json.loads(function_call.arguments)
location = args.get("location")
weather_result = get_weather_data(location)
# 関数の実行結果をモデルに送信
second_response = client.responses.create(
model="gpt-4o",
previous_response_id=response.id,
input=[{
"type": "function_call_output",
"call_id": function_call.id,
"output": json.dumps(weather_result)
}]
)
print("最終応答:", second_response.output_text)
else:
print("通常応答:", response.output_text)
4.5 画像を含む入力の処理
Responses APIは画像入力もサポートしています:
import base64
from openai import AzureOpenAI
client = AzureOpenAI(
api_key = os.environ["AZURE_OPENAI_API_KEY"],
api_version = "2025-03-01-preview",
azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
)
# 画像をBase64エンコード
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# 画像ファイルを指定
image_path = "./sample_image.jpg"
base64_image = encode_image(image_path)
# 画像を含む入力を送信
response = client.responses.create(
model="gpt-4o", # Vision機能を持つモデルが必要
input=[
{
"role": "user",
"content": [
{ "type": "input_text", "text": "この画像に何が写っていますか?" },
{
"type": "input_image",
"image_url": f"data:image/jpeg;base64,{base64_image}"
}
]
}
]
)
print(response.output_text)
5. Computer Useモデルの実装例
私自身もまだcomputer-use-previewモデルの申請中ですが、公式ドキュメントを読みながら、実装例を考えてみました。(以下は、動作確認はしていないのであくまで参考程度に読んでもらえればと思います。)
公式ドキュメント:
5.1 環境準備と必要なライブラリ
Computer Useモデルを使用するには、Playwrightなどのブラウザ自動化ライブラリとの連携が必要です:
# 必要なライブラリのインストール
pip install playwright openai azure-identity
playwright install # ブラウザドライバーのインストール
5.2 基本的なComputer Use呼び出し
import os
import asyncio
import base64
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from playwright.async_api import async_playwright
# 設定パラメータ
AZURE_ENDPOINT = os.environ["AZURE_OPENAI_ENDPOINT"]
MODEL = "computer-use-preview" # デプロイ名に置き換え
DISPLAY_WIDTH = 1024
DISPLAY_HEIGHT = 768
API_VERSION = "2025-03-01-preview"
# Entra ID認証
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
# 初期リクエスト関数
async def send_initial_request(client, screenshot_base64, task):
"""モデルへの初期リクエストを送信"""
return client.responses.create(
model=MODEL,
tools=[{
"type": "computer_use_preview",
"display_width": DISPLAY_WIDTH,
"display_height": DISPLAY_HEIGHT,
"environment": "browser" # ブラウザ環境での実行
}],
instructions="あなたはブラウザを操作できるAIエージェントです。キーボードとマウスを制御できます。操作後は必ずスクリーンショットを確認してください。タスク完了後は制御を人間に戻してください。",
input=[{
"role": "user",
"content": [{
"type": "input_text",
"text": task
}, {
"type": "input_image",
"image_url": f"data:image/png;base64,{screenshot_base64}"
}]
}],
reasoning={"generate_summary": "concise"}, # 思考過程の要約を生成
truncation="auto" # 必須パラメータ
)
# メイン関数
async def main():
# OpenAIクライアント初期化
client = AzureOpenAI(
azure_endpoint=AZURE_ENDPOINT,
azure_ad_token_provider=token_provider,
api_version=API_VERSION
)
# Playwrightでブラウザを起動
async with async_playwright() as playwright:
browser = await playwright.chromium.launch(
headless=False, # 操作を視覚的に確認するためfalse
args=[f"--window-size={DISPLAY_WIDTH},{DISPLAY_HEIGHT}"]
)
context = await browser.new_context(
viewport={"width": DISPLAY_WIDTH, "height": DISPLAY_HEIGHT}
)
page = await context.new_page()
# 初期ページに移動
await page.goto("https://www.bing.com")
print("Bing.comに接続しました")
# スクリーンショット取得
screenshot = await page.screenshot()
screenshot_base64 = base64.b64encode(screenshot).decode("utf-8")
# ユーザーのタスクを指定
task = "「Azure AI」について検索して、最初の検索結果を開いてください"
# 初期リクエスト送信
response = await send_initial_request(client, screenshot_base64, task)
print("初期リクエストを送信しました")
# ここに実際のループ処理を実装(省略)
# この部分では、モデルのアクションを解析して実行し、
# 結果のスクリーンショットを再度モデルに送るループを行います
# 最後にブラウザを閉じる
await browser.close()
print("ブラウザを終了しました")
# スクリプト実行
if __name__ == "__main__":
asyncio.run(main())
5.3 アクション処理の実装
Computer Useモデルが提供するアクションを処理するコード例です:
async def handle_action(page, action):
"""モデルからのアクションを実行する関数"""
action_type = action.type
if action_type == "click":
# クリックアクション
x, y = action.x, action.y
print(f"クリック実行: ({x}, {y})")
await page.mouse.click(x, y)
# ページ読み込み完了を待機
try:
await page.wait_for_load_state("domcontentloaded", timeout=3000)
except Exception:
pass
elif action_type == "type":
# テキスト入力アクション
text = action.text
print(f"テキスト入力: {text}")
await page.keyboard.type(text, delay=20) # 自然な入力速度
elif action_type == "keypress":
# キー押下アクション
keys = action.keys
print(f"キー押下: {keys}")
key_mapping = {
"enter": "Enter", "tab": "Tab", "space": " ",
"backspace": "Backspace", "esc": "Escape"
}
for key in keys:
mapped_key = key_mapping.get(key.lower(), key)
await page.keyboard.press(mapped_key)
elif action_type == "scroll":
# スクロールアクション
x, y = action.x, action.y
scroll_x = getattr(action, "scroll_x", 0)
scroll_y = getattr(action, "scroll_y", 0)
print(f"スクロール: ({x}, {y}) オフセット({scroll_x}, {scroll_y})")
await page.mouse.move(x, y)
await page.evaluate(
f"window.scrollBy({{left: {scroll_x}, top: {scroll_y}, behavior: 'smooth'}});"
)
elif action_type == "wait":
# 待機アクション
ms = getattr(action, "ms", 1000)
print(f"待機: {ms}ms")
await asyncio.sleep(ms / 1000)
elif action_type == "screenshot":
# スクリーンショット取得(通常は外部で処理)
print("スクリーンショット取得")
else:
print(f"未対応のアクション: {action_type}")
5.4 完全なループフローの実装
Computer Useの完全なループフローの実装例(一部抜粋):
async def process_model_response(client, response, page, max_iterations=5):
"""モデルの応答を処理し、アクションを実行するループ"""
for iteration in range(max_iterations):
# コンピューター操作の要求を抽出
computer_calls = [
item for item in response.output
if hasattr(item, 'type') and item.type == "computer_call"
]
if not computer_calls:
print("操作要求がありませんでした。制御を人間に戻します。")
break
computer_call = computer_calls[0]
call_id = computer_call.call_id
action = computer_call.action
# 安全性チェックの処理
if hasattr(computer_call, 'pending_safety_checks') and computer_call.pending_safety_checks:
checks = computer_call.pending_safety_checks
print("\n安全性チェックが必要です:")
for check in checks:
print(f"- {check.code}: {check.message}")
# ユーザーに確認(実運用ではより堅牢な実装が必要)
confirm = input("操作を続行しますか? (y/n): ").lower() == 'y'
if not confirm:
print("操作がキャンセルされました。")
break
acknowledged_checks = checks
else:
acknowledged_checks = []
# アクションの実行
try:
await handle_action(page, action)
except Exception as e:
print(f"アクション実行エラー: {e}")
# 新しいスクリーンショットを取得
screenshot_bytes = await page.screenshot()
screenshot_base64 = base64.b64encode(screenshot_bytes).decode("utf-8")
# 次のリクエストの準備
input_content = [{
"type": "computer_call_output",
"call_id": call_id,
"output": {
"type": "input_image",
"image_url": f"data:image/png;base64,{screenshot_base64}"
}
}]
# 確認済みの安全性チェックを追加
if acknowledged_checks:
input_content[0]["acknowledged_safety_checks"] = [
{
"id": check.id,
"code": check.code,
"message": check.message
} for check in acknowledged_checks
]
# 現在のURLを追加(コンテキスト情報として)
try:
url = page.url
if url and url != "about:blank":
input_content[0]["current_url"] = url
except Exception:
pass
# 次のステップのための応答を取得
try:
response = client.responses.create(
model=MODEL,
previous_response_id=response.id,
tools=[{
"type": "computer_use_preview",
"display_width": DISPLAY_WIDTH,
"display_height": DISPLAY_HEIGHT,
"environment": "browser"
}],
input=input_content,
truncation="auto"
)
except Exception as e:
print(f"API呼び出しエラー: {e}")
break
# イテレーション上限に達した場合
if iteration >= max_iterations - 1:
print(f"最大イテレーション数({max_iterations})に達しました。処理を停止します。")
6. OpenAI版とAzure版の違い
6.1 提供形態と機能の違い
OpenAI版のResponses APIとAzure版には、いくつかの重要な違いがあります:
項目 | OpenAI版 | Azure版 |
---|---|---|
提供開始時期 | 2025年3月11日 | 2025年3月26日 |
提供状況 | 全開発者向けプレビュー提供 | プレビュー提供(一部リージョンのみ) |
サポートツール | Web検索、ファイル検索、Computer Use | 現状はComputer Use中心、他は申請制 |
機能制限 | 基本機能フル実装 | Structured outputs、tool_choiceなど一部未対応 |
認証方式 | APIキー | APIキーまたはEntra ID認証 |
企業統合 | 限定的 | Azure基盤と統合(監査、ログ、コンプライアンス) |
料金体系 | トークン使用量+ツール使用料 | トークン使用量+ツール使用料(Azure課金) |
備考
特に注目すべき制約として、Azure版ではWeb検索ツールが組織ごとに明示的な有効化が必要な点があります。「この組織ではWeb Searchツールは有効化されていない」というエラーに遭遇した場合は、プレビュー機能利用の申請フォームでWeb検索ツール利用をリクエストする必要があるそうです。(参考)なお、筆者は申請フォームを見つけられておらず、サポートリクエストなどで聞いてみたほうがいいかもしれないと思いました。Web検索機能周りについては最近はBing Search APIなどの提供方針と絡んで色々と再整理中のようです。
6.2 エンタープライズ機能の強化点
Azure版Responses APIとComputer Useは、エンタープライズ向けに以下の点が強化されています:
- セキュリティとコンプライアンス: Azure AI Foundryのセキュリティ標準に準拠
- データプライバシー: 企業データ保護のための堅牢なプライバシー対策
- Entra ID統合: より安全なトークンベース認証と管理
- 監査ログ: 実行履歴の詳細な記録と追跡
- マネージド環境: Windows 365やAzure Virtual Desktopとの将来的な統合計画
7. 実際のビジネスユースケース
7.1 企業向け適用シナリオ
Microsoftの公式ブログによれば、Responses APIとComputer Useは以下のような業界で既に活用が進んでいます:
保険業界
- 保険金請求処理の自動化
- 顧客ドキュメント分析と情報抽出
- 規約準拠チェックとリスク評価
IT部門
- サービスデスク自動化
- システム監視とインシデント対応
- レガシーシステムとの統合
サプライチェーン管理
- 在庫データ分析と予測
- 配送最適化
- ベンダー評価自動化
医療分野
- 医療記録の分析と要約
- 治療計画支援
- 医療画像解析補助
7.2 実装アイデア
以下は、Responses APIとComputer Useを使った具体的な実装アイデアです:
1. レガシーシステム操作自動化
レガシーシステムへのAPI非対応インターフェースを、Computer Useを使ってGUI操作で自動化します。例えば古い社内システムやERP、顧客管理システムなどへのデータ入力や情報抽出を自動化できます。
# タスク例:「顧客管理システムにログインして、新規顧客XYZ社の情報を登録してください」
# Computer Useが実行する操作ステップ:
# 1. ログイン画面でID/パスワード入力
# 2. 「新規顧客登録」ボタンを押す
# 3. フォームに顧客情報を入力
# 4. 「登録」ボタンを押す
# 5. 完了確認画面を確認
2. クロスプラットフォームデータ統合
異なるアプリケーション間でデータを転送し、統合レポートを作成します。例えばCRMシステム、Excelファイル、Webダッシュボードなど、複数のシステムからデータを収集し、統合分析を行います。
# タスク例:「CRMから今月の売上データを取得し、分析スプレッドシートに入力し、
# その結果をダッシュボードに反映させてPDFでレポートを保存してください」
3. マルチステップ検索と情報抽出
特定のトピックに関する情報を複数のソースから統合的に調査します。例えば特定の技術や市場動向について、複数のニュースサイトや専門Webサイトから情報を収集し、要約と分析を行います。
# タスク例:「量子コンピューティングの最新動向について調査し、
# 主要企業3社の取り組みを比較した表を作成してください」
7.3 企業における検討ポイント
企業でResponses APIとComputer Useを導入する際の検討ポイントは以下の通りです:
-
セキュリティとコンプライアンス: 機密データを取り扱う環境では、適切なアクセス制御や監査ログの設定が必要です。操作シーケンスの事前承認や、特定アクションの制限なども検討すべきでしょう。
-
リソース管理: Computer Useは計算リソースを比較的多く消費します。適切なリソース割り当てと費用管理の計画が必要です。
-
監視とフォールバック: 自動化システムの監視と、問題発生時の人間へのエスカレーション経路を確保する必要があります。
-
テスト環境での検証: 本番環境への導入前に、様々なシナリオを想定したテスト環境での十分な検証が重要です。
-
ユーザートレーニング: 安全で効果的な利用のためのユーザートレーニングプログラムを整備します。特に、安全性チェックの意義と対応方法に関する理解が重要です。
8. デモ・テスト環境の構築ガイド
Computer Useモデルへのアクセス承認を待っている間も、以下の方法でResponses APIのテストや機能理解を進めることができます:
8.1 Responses APIの基本機能テスト
-
GPT-4oを使ったテスト: Computer Useを使わない基本機能(ステートフル会話、関数呼び出し、画像処理など)は、gpt-4oモデルでも試すことができます。
-
環境変数の設定:
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
AZURE_OPENAI_API_VERSION=2025-03-01-preview
- 最小テストスクリプトの実行:
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.environ["AZURE_OPENAI_API_KEY"],
api_version=os.environ["AZURE_OPENAI_API_VERSION"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"]
)
# 基本機能テスト
response = client.responses.create(
model="gpt-4o", # デプロイしたモデル名
input="こんにちは、あなたは何ができますか?"
)
print(response.output_text)
8.2 モックアップによるワークフロー設計
Computer Use機能のアクセス承認を待つ間も、以下の方法でワークフローの設計を進められます:
-
画面設計とフロー図作成: Computer Useが操作する画面遷移フローを図式化します。
-
Playwrightなどでの単独自動化: 実際のAI制御を使わなくても、Playwrightなどでブラウザ操作の自動化スクリプトを先行開発しておくことで、Computer Use承認後にスムーズに統合できます。
-
ハイブリッドモック: Responses APIとPlaywrightを別々に実行し、手動でデータを橋渡しするハイブリッドテストも可能です。
9. まとめ
Azure OpenAI ServiceのResponses APIとComputer Use機能は、AIが実世界のインターフェースと直接対話するフェーズの始まりを感じました。
Responses APIは、従来のChat Completions APIとAssistants APIの長所を統合し、一貫性のあるステートフルな対話を可能にします。これにより、複数のツールを組み合わせたAIエージェントの構築が格段に容易になりました。
Computer Use機能は、AIエージェントがGUIを通じて実際のソフトウェアを操作する革新的な技術です。これはRPAの次世代バージョンと言えるもので、従来の固定スクリプトに依存せず、視覚情報を解釈して柔軟に対応できる点が大きな特徴です。
現在はプレビュー段階であるため、一部の機能制限や地域制約がありますが、今後の発展により企業のデジタルトランスフォーメーションを加速させるツールとなるでしょう。特にレガシーシステム統合、クロスプラットフォーム操作、複雑なマルチステップ処理などの領域で、大きな価値を発揮することが期待されます。
まだアクセス申請中の方も、基本的なResponses API機能のテストやワークフロー設計を進めることで、承認後にすぐに本格的な検証や開発を始められるよう準備しておけるのではないかなと思います。
参考
- Microsoft Azure 公式ブログ: Announcing the Responses API and Computer-Using Agent in Azure AI Foundry
- Microsoft Learn: Azure OpenAI Responses API (Preview) の解説およびComputer Use (preview) の解説
- OpenAI公式ドキュメント: Responses API
免責事項
本記事は情報提供を目的としており、2025年3月27日時点の情報に基づいています。内容の正確性・完全性は保証されず、公式ドキュメントで最新情報をご確認ください。記事内のコードサンプルは自己責任でご利用ください。本記事内容の利用によって生じたいかなる損害(サービスの中断、データ損失、営業損失等を含む)についても、著者は一切の責任を負いません。OpenAIおよびMicrosoftの製品・サービスは各社の利用規約に従ってご利用ください。
Discussion