共用方式為


Microsoft Foundry 快速入門

Note

本文件指的是 Microsoft Foundry(經典版) 入口網站。

🔄如果你正在使用新的入口網站,請切換至 Microsoft Foundry(新版)文件

Note

本文件指的是 Microsoft Foundry(新) 入口網站。

在這個快速入門中,你將使用 Microsoft Foundry 來:

  • 建立專案
  • 部署模型
  • 執行聊天完成
  • 建立和執行代理程式
  • 將檔案上傳至代理程式

在這個快速入門中,你將使用 Microsoft Foundry 來:

  • 建立專案
  • 部署模型
  • 準備好編碼 - 安裝必要的套件並驗證
  • 與模特兒聊天
  • 建立專員
  • 與代理程式聊天

Microsoft Foundry SDK 提供多種語言版本,包括 Python、Java、TypeScript 和 C#。 此快速入門提供每個語言的指示。

Tip

本文的其餘部分說明如何建立和使用 Foundry 專案。 請參考快速入門:如果你想使用以樞紐為基礎的專案,請開始 使用 Microsoft Foundry(Hub 專案 )。 我需要哪種類型的專案?

Prerequisites

Important

在開始之前,請確保您的開發環境已準備就緒。
本快速入門著重於 案例特定的步驟 ,例如 SDK 安裝、驗證和執行範例程式碼。

建立資源

在入口網站中,您可以探索來自許多不同提供者的豐富尖端模型目錄。 在本教學課程中,搜尋並選取 gpt-4o 模型。

  1. 登入 Microsoft Foundry。 確定新鑄造廠的開關是關閉的。 這些步驟指的是 Foundry (傳統版)

  2. 如果你正在一個專案中,請在左上角的導覽列中選擇 Microsoft Foundry 以離開該專案。 稍後您將建立一個新的專案。

  3. 從登陸頁面或 模型目錄中,選取 gpt-4o (或 gpt-4o-mini)。

    截圖顯示如何在 Foundry 平台入口處開始使用模型。

  4. 選取 [ 使用此模型]。 出現提示時,輸入新的專案名稱,然後選取 [建立]。

  5. 檢閱部署名稱,然後選取 [建立]。

  6. 然後選取部署類型之後,選取 [連線並部署 ]。

  7. 部署之後,從部署頁面選取 [ 在 Playground 中開啟 ]。

  8. 您進入聊天遊樂場,模型已預先部署並可供使用。

如果您要建立代理程式,則可以改為 從建立代理程式開始。 步驟類似,但順序不同。 建立專案後,您將到達客服專員遊樂場,而不是聊天遊樂場。

現在您已經有了代理程式,您可以在程式碼或入口網站中與其互動。

你會從 Microsoft Foundry 入口網站開始建立專案並部署模型。 本快速入門使用 gpt-4-1-mini 模型,但您可以使用數個提供者提供的任何支援模型。

  1. 登入 Microsoft Foundry。 確定新鑄造廠的開關是關閉的。 這些步驟指的是Foundry (classic)
    登入 Microsoft Foundry。 確定 新 Foundry 的開關是開啟的。 這些步驟指的是 Foundry(新)
  2. 項目有助於組織您的工作。 你正在處理的專案會顯示在左上角。
  3. 若要建立新專案,請選取專案名稱,然後選取 [建立新專案]。
  4. 為您的專案命名,然後選取 建立專案
  5. 現在將模型部署到專案中:
    1. 選取右上角導覽中的 探索
    2. 選取 [模型]
    3. 搜尋 gpt-4.1-mini 模型。
    4. 選擇部署預設設定( Deploy>Default settings )來加入你的專案。

Foundry Models 讓客戶能利用單一端點與憑證,使用旗艦模型供應商最強大的模型。 這表示您可以在模型之間切換,並從您的應用程式取用它們,而不需要變更單行程序代碼。

您現在已準備好繼續與您的模型互動並建立代理程式。

準備好編碼

Tip

程式碼使用 Foundry 專案(經典版)API ,且與 Foundry 專案(新)API(預覽版)不相容。 切換至 Foundry(新)文檔,以便於了解 Foundry 專案(新)API(預覽版)。

  1. 安裝下列套件:

    pip install openai azure-identity azure-ai-projects==1.0.0
    
  2. Microsoft Foundry Models 讓客戶能利用單一端點與憑證,使用旗艦模型供應商最強大的模型。 這表示您可以在模型之間切換,並從您的應用程式取用它們,而不需要變更單行程序代碼。

    在專案的 [概觀] 區段中複製 Foundry 專案端點。 您馬上就會用到它。

    此螢幕快照顯示 Foundry 專案的專案概觀。

    Tip

    如果你看不到 Foundry 專案端點,代表你使用的是基於集線器的專案。 (請參閱 項目類型)。 切換至 Foundry 專案,或使用上述步驟建立一個專案。

    1. 從右上角導覽中選取 [首頁 ]。
    2. 選取 [ 金鑰] ,然後複製 端點。 您馬上就會用到它。
  3. 在執行 Python 腳本之前,請務必先使用 CLI az login (或 az login --use-device-code) 命令登入以驗證。

按照以下說明或取得程式碼:

Important

本文中的程式碼會使用目前處於預覽狀態的套件。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

設定環境變數

將端點儲存為環境變數。 此外,請設定這些值以用於指令碼。

  1. 從歡迎畫面複製您的終端點。 您將在下一個步驟中使用它。

    Microsoft Foundry 模型歡迎畫面的截圖,顯示端點網址和複製按鈕。

  2. 設定這些環境變數以在您的文稿中使用:

    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(經典版)文件 以查看 Foundry 專案(經典版)的 API 版本。

  1. 安裝這些套件,包括 azure-ai-projects 的預覽版。 此版本使用 Foundry 專案(新)API (預覽版)。

    pip install azure-ai-projects --pre
    pip install openai azure-identity python-dotenv
    
  2. 在執行 Python 腳本之前,請務必先使用 CLI az login (或 az login --use-device-code) 命令登入以驗證。

按照以下說明或取得程式碼:

與模特兒聊天

聊天完成是 AI 應用程式的基本建置組塊。 使用聊天完成功能,您可以傳送一系列訊息,並從模型取得回應。

Tip

程式碼使用 Foundry 專案(經典版)API ,且與 Foundry 專案(新)API(預覽版)不相容。 切換至 Foundry(新)文檔,以便於了解 Foundry 專案(新)API(預覽版)。

以此程式碼中的 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(經典版)文件 以查看 Foundry 專案(經典版)的 API 版本。

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(經典版)文件 以查看 Foundry 專案(經典版)的 API 版本。

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(新)文檔,以便於了解 Foundry 專案(新)API(預覽版)。

以此程式碼中的 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(經典版)文件 以查看 Foundry 專案(經典版)的 API 版本。

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}")

將檔案新增至代理程式

代理程式透過使用工具具有強大的功能。 讓我們添加一個文件搜索工具,使我們能夠進行知識檢索。

Tip

程式碼使用 Foundry 專案(經典版)API ,且與 Foundry 專案(新)API(預覽版)不相容。 切換至 Foundry(新)文檔,以便於了解 Foundry 專案(新)API(預覽版)。

以此程式碼中的 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 入口網站中開啟它。 選取資源群組,然後選取 [ 刪除]。 確認您想要刪除資源群組。

Azure 入口網站中,尋找並選取您的資源群組。 選取 [刪除] ,然後確認刪除資源群組及其所有相關聯的資源。

後續步驟