Note
このドキュメントでは、 Microsoft Foundry (クラシック) ポータルを参照します。
🔄新しいポータルを使用している場合は、Microsoft Foundry (新しい) ドキュメントに切り替えます。
Note
このドキュメントでは、 Microsoft Foundry (新しい) ポータルを参照します。
このクイック スタートでは、 Microsoft Foundry を使用して次の操作を行います。
- プロジェクトを作成する
- モデルをデプロイする
- チャット補完を実行する
- エージェントを作成して実行する
- エージェントにファイルをアップロードする
このクイック スタートでは、 Microsoft Foundry を使用して次の操作を行います。
- プロジェクトを作成する
- モデルをデプロイする
- コーディングの準備 - 必要なパッケージをインストールして認証する
- モデルとのチャット
- エージェントを作成する
- エージェントとのチャット
Microsoft Foundry SDK は、Python、Java、TypeScript、C# などの複数の言語で使用できます。 このクイック スタートでは、これらの各言語の手順について説明します。
Tip
この記事の残りの部分では、 Foundry プロジェクトを作成して使用する方法について説明します。 代わりにハブベースのプロジェクトを使用する場合は、「 クイック スタート: Microsoft Foundry (ハブ プロジェクト) の使用を開始 する」を参照してください。 必要なプロジェクトの種類
Prerequisites
- アクティブなサブスクリプションを持つ Azure アカウント。 お持ちでない場合は、 無料試用版サブスクリプションを含む無料の Azure アカウントを作成します。
- プロジェクトを使用するために必要な適切なアクセス制御を取得するには、サブスクリプションの 所有者 である必要があります。
- 「開発環境の準備」の説明に従って、必要な言語ランタイム、グローバル ツール、VS Code 拡張機能 をインストールします。
Important
開始する前に、開発環境の準備ができていることを確認します。
このクイック スタートでは、SDK のインストール、認証、サンプル コードの実行などの シナリオ固有の手順 について説明します。
リソースの作成
ポータルでは、さまざまなプロバイダーの最先端モデルの豊富なカタログを調べることができます。 このチュートリアルでは、 gpt-4o モデルを検索して選択します。
-
Microsoft Foundry にサインインします。 [新しいファウンドリー]切り替えがオフになっていることを確認します。 これらの手順は Foundry (クラシック) を参照します。
プロジェクトを使用している場合は、左上の階層リンクで Microsoft Foundry を選択してプロジェクトを終了します。 すぐに新しいものを作成します。
ランディング ページまたは モデル カタログから、 gpt-4o (または gpt-4o-mini) を選択します。
[このモデルを使用する] を選びます。 メッセージが表示されたら、新しいプロジェクト名を入力し、[ 作成] を選択します。
デプロイ名を確認し、[作成] を選びます。
次に、デプロイの種類を選んだ後、[接続とデプロイ] を選びます。
デプロイされた後、デプロイ ページから [プレイグラウンドで開く] を選びます。
モデルが事前にデプロイされて使用できる状態で、チャット プレイグラウンドに移動します。
エージェントを構築する場合は、代わりにエージェントの 作成から始めることができます。 手順は似ていますが、順序は異なります。 プロジェクトが作成されると、チャットプレイグラウンドではなくエージェントプレイグラウンドに到着します。
これでエージェントが作成されたので、コードまたはポータルで操作できます。
Microsoft Foundry ポータルからプロジェクトを作成し、モデルをデプロイします。 このクイック スタートでは gpt-4-1-mini モデルを使用しますが、複数のプロバイダーからサポートされている任意のモデルを使用できます。
- Microsoft Foundry にサインインします。 [新しいファウンドリー]切り替えがオフになっていることを確認します。 これらの手順は Foundry (クラシック) を参照します。
Microsoft Foundry にサインインします。 「新しいファウンドリー」トグルがオンになっていることを確認します。 これらの手順は Foundry (新規) を参照します。
- プロジェクトは、作業の整理に役立ちます。 作業中のプロジェクトが左上隅に表示されます。
- 新しいプロジェクトを作成するには、プロジェクト名を選択してから、 新しいプロジェクトを作成します。
- プロジェクトに名前を付け、[ プロジェクトの作成] を選択します。
- 次に、プロジェクトにモデルをデプロイします。
- 右上のナビゲーションで [ 検出 ] を選択します。
- [ モデル] を選択します。
- gpt-4.1-mini モデルを検索します。
- [ 配置>既定の設定 ] を選択して、プロジェクトに追加します。
Foundry Models を使用すると、お客様は、単一のエンドポイントと資格情報を使用して、フラグシップ モデル プロバイダーの最も強力なモデルを使用できます。 つまり、1 行のコードも変更することなく、モデルを切り替えてお使いのアプリケーションから実行できます。
これで、モデルの操作とエージェントの作成に進む準備ができました。
コーディングの準備をする
Tip
コードは Foundry プロジェクト (クラシック) API を使用し、Foundry プロジェクト (新規) API (プレビュー) と互換性がありません。 Foundry プロジェクトの新しい API (プレビュー) バージョン用の Foundry ドキュメントに切り替えます。
次のパッケージをインストールします。
pip install openai azure-identity azure-ai-projects==1.0.0-
Microsoft Foundry Models を使用すると、お客様は、単一のエンドポイントと資格情報を使用して、フラグシップ モデル プロバイダーから最も強力なモデルを使用できます。 つまり、1 行のコードも変更することなく、モデルを切り替えてお使いのアプリケーションから実行できます。
プロジェクトの [概要] セクションで Foundry プロジェクト エンドポイントをコピーします。 これはすぐに使用します。
Tip
Foundry プロジェクト エンドポイントが表示されない場合は、ハブベースのプロジェクトを使用しています。 (プロジェクト の種類を参照)。 Foundry プロジェクトに切り替えるか、前の手順を使用して作成します。
- 右上のナビゲーションから [ ホーム ] を選択します。
- [キー] を選択し、エンドポイントをコピーします。 これはすぐに使用します。
Python スクリプトを実行する前に、CLI
az login(またはaz login --use-device-code) コマンドを使用して認証を行ってサインインしてください。
以下に従うか、コードを取得します。
Important
この記事のコードでは、現在プレビュー段階にあるパッケージを使用します。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。
環境変数の設定
エンドポイントを環境変数として格納します。 また、スクリプトで使用するためにこれらの値を設定します。
-
ようこそ画面からエンドポイントをコピーします。 次の手順で使用します。
スクリプトで使用する環境変数を設定します。
AZURE_AI_FOUNDRY_PROJECT_ENDPOINT=<endpoint copied from welcome screen> AZURE_AI_FOUNDRY_AGENT_NAME="MyAgent" AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME="gpt-4.1-mini"
インストールと認証
Tip
コードは Foundry プロジェクト (新しい) API (プレビュー) を使用し、Foundry プロジェクト (クラシック) API バージョンと互換性がありません。 Foundry プロジェクト (クラシック) の API バージョン用の Foundry (クラシック) ドキュメントに切り替えてください 。
azure-ai-projectsのプレビュー バージョンを含め、これらのパッケージをインストールします。 このバージョンでは、 Foundry プロジェクト (新規) API (プレビュー) が使用されます。pip install azure-ai-projects --pre pip install openai azure-identity python-dotenvPython スクリプトを実行する前に、CLI
az login(またはaz login --use-device-code) コマンドを使用して認証を行ってサインインしてください。
以下に従うか、コードを取得します。
モデルとのチャット
チャットの完了は、AI アプリケーションの基本的な構成要素です。 チャットの完了を使用すると、メッセージの一覧を送信し、モデルから応答を取得できます。
Tip
コードは Foundry プロジェクト (クラシック) API を使用し、Foundry プロジェクト (新規) API (プレビュー) と互換性がありません。 Foundry プロジェクトの新しい API (プレビュー) バージョン用の Foundry ドキュメントに切り替えます。
- Python
- C#
- TypeScript
- Java (プレビュー)
- REST API
- Foundry ポータル
エンドポイントを次のコードの endpoint に置き換える:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
models = project.get_openai_client(api_version="2024-10-21")
response = models.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful writing assistant"},
{"role": "user", "content": "Write me a poem about flowers"},
],
)
print(response.choices[0].message.content)
モデルとの対話は、AI アプリケーションの基本的な構成要素です。 入力を送信し、モデルから応答を受信します。
Tip
コードは Foundry プロジェクト (新しい) API (プレビュー) を使用し、Foundry プロジェクト (クラシック) API バージョンと互換性がありません。 Foundry プロジェクト (クラシック) の API バージョン用の Foundry (クラシック) ドキュメントに切り替えてください 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
load_dotenv()
print(f"Using AZURE_AI_FOUNDRY_PROJECT_ENDPOINT: {os.environ['AZURE_AI_FOUNDRY_PROJECT_ENDPOINT']}")
print(f"Using AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME: {os.environ['AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME']}")
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
openai_client = project_client.get_openai_client()
response = openai_client.responses.create(
model=os.environ["AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME"],
input="What is the size of France in square miles?",
)
print(f"Response output: {response.output_text}")
エージェントを作成する
デプロイしたモデルを使用してエージェントを作成します。
エージェントは、コア動作を定義します。 作成されると、毎回手順を繰り返すことなく、ユーザーの操作で一貫した応答が保証されます。 エージェントはいつでも更新または削除できます。
Tip
コードは Foundry プロジェクト (新しい) API (プレビュー) を使用し、Foundry プロジェクト (クラシック) API バージョンと互換性がありません。 Foundry プロジェクト (クラシック) の API バージョン用の Foundry (クラシック) ドキュメントに切り替えてください 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition
load_dotenv()
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
agent = project_client.agents.create_version(
agent_name=os.environ["AZURE_AI_FOUNDRY_AGENT_NAME"],
definition=PromptAgentDefinition(
model=os.environ["AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME"],
instructions="You are a helpful assistant that answers general questions",
),
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")
エージェントとのチャット
エージェントを作成してチャットします。
Tip
コードは Foundry プロジェクト (クラシック) API を使用し、Foundry プロジェクト (新規) API (プレビュー) と互換性がありません。 Foundry プロジェクトの新しい API (プレビュー) バージョン用の Foundry ドキュメントに切り替えます。
- Python
- C#
- TypeScript
- Java (プレビュー)
- REST API
- Foundry ポータル
エンドポイントを次のコードの endpoint に置き換える:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FilePurpose
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
agent = project.agents.create_agent(
model="gpt-4o",
name="my-agent",
instructions="You are a helpful writing assistant")
thread = project.agents.threads.create()
message = project.agents.messages.create(
thread_id=thread.id,
role="user",
content="Write me a poem about flowers")
run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
if run.status == "failed":
# Check if you got "Rate limit is exceeded.", then you want to get more quota
print(f"Run failed: {run.last_error}")
# Get messages from the thread
messages = project.agents.messages.list(thread_id=thread.id)
# Get the last message from the sender
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
if message.run_id == run.id and message.text_messages:
print(f"{message.role}: {message.text_messages[-1].text.value}")
# Delete the agent once done
project.agents.delete_agent(agent.id)
print("Deleted agent")
以前に作成した "MyAgent" という名前のエージェントを使用して、質問と関連するフォローアップを行って対話します。 会話は、これらの対話全体の履歴を保持します。
Tip
コードは Foundry プロジェクト (新しい) API (プレビュー) を使用し、Foundry プロジェクト (クラシック) API バージョンと互換性がありません。 Foundry プロジェクト (クラシック) の API バージョン用の Foundry (クラシック) ドキュメントに切り替えてください 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
load_dotenv()
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
agent_name = os.environ["AZURE_AI_FOUNDRY_AGENT_NAME"]
openai_client = project_client.get_openai_client()
# Optional Step: Create a conversation to use with the agent
conversation = openai_client.conversations.create()
print(f"Created conversation (id: {conversation.id})")
# Chat with the agent to answer questions
response = openai_client.responses.create(
conversation=conversation.id, #Optional conversation context for multi-turn
extra_body={"agent": {"name": agent_name, "type": "agent_reference"}},
input="What is the size of France in square miles?",
)
print(f"Response output: {response.output_text}")
# Optional Step: Ask a follow-up question in the same conversation
response = openai_client.responses.create(
conversation=conversation.id,
extra_body={"agent": {"name": agent_name, "type": "agent_reference"}},
input="And what is the capital city?",
)
print(f"Response output: {response.output_text}")
エージェントにファイルを追加する
エージェントには、ツールを使用して強力な機能があります。 知識の取得を可能にするファイル検索ツールを追加しましょう。
- product_info_1.md をダウンロードしてエージェントに渡します。
Tip
コードは Foundry プロジェクト (クラシック) API を使用し、Foundry プロジェクト (新規) API (プレビュー) と互換性がありません。 Foundry プロジェクトの新しい API (プレビュー) バージョン用の Foundry ドキュメントに切り替えます。
- Python
- C#
- TypeScript
- Java (プレビュー)
- REST API
- Foundry ポータル
エンドポイントを次のコードの endpoint に置き換える:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FileSearchTool
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
# Upload file and create vector store
file = project.agents.files.upload(file_path="./product_info_1.md", purpose=FilePurpose.AGENTS)
vector_store = project.agents.vector_stores.create_and_poll(file_ids=[file.id], name="my_vectorstore")
# Create file search tool and agent
file_search = FileSearchTool(vector_store_ids=[vector_store.id])
agent = project.agents.create_agent(
model="gpt-4o",
name="my-assistant",
instructions="You are a helpful assistant and can search information from uploaded files",
tools=file_search.definitions,
tool_resources=file_search.resources,
)
# Create thread and process user message
thread = project.agents.threads.create()
project.agents.messages.create(thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?")
run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
# Handle run status
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Print thread messages
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
if message.run_id == run.id and message.text_messages:
print(f"{message.role}: {message.text_messages[-1].text.value}")
# Cleanup resources
project.agents.vector_stores.delete(vector_store.id)
project.agents.files.delete(file_id=file.id)
project.agents.delete_agent(agent.id)
リソースをクリーンアップする
作成したリソースが不要になった場合は、プロジェクトに関連付けられているリソース グループを削除します。
Microsoft Foundry ポータルで、右上隅にあるプロジェクト名を選択します。 次に、リソース グループのリンクを選択して、Azure portal で開きます。 リソース グループを選択し、[削除] を選択 します。 リソース グループを削除することを確認します。
Azure portal で、リソース グループを見つけて選択します。 [ 削除] を選択し、確認してリソース グループとそれに関連付けられているすべてのリソースを削除します。