---
title: Microsoft Foundry 中的 Claude
url: https://platform.claude.com/docs/zh-TW/build-with-claude/claude-in-microsoft-foundry
description: 透過 Microsoft Foundry 使用 Azure 原生端點與驗證機制存取 Claude 模型。
---

本指南說明如何在 Microsoft Foundry 中設定 Claude，並使用 Anthropic 的用戶端 SDK 或直接 HTTP 請求進行 API 呼叫。當您透過 Microsoft Foundry 存取 Claude 時，Claude 的使用費用會透過 Azure Marketplace 計費。您可以使用 Claude Fable 5.1、Claude Opus 5.5、Claude Opus 5、Claude Opus 4.8、Claude Sonnet 5.5、Claude Sonnet 5 和 Claude Haiku 5.5 等 Claude 模型，以及 [1M token「context window」（上下文視窗）](https://platform.claude.com/docs/zh-TW/build-with-claude/context-windows)等功能，同時透過您的 Azure 訂閱管理成本。

Claude 在 Foundry 資源中提供 Global Standard 和 US Data Zone Standard 部署類型，並透過 Azure Marketplace 以 Claude Consumption Units 計費。詳情請參閱 [Microsoft Foundry 中的 Claude 定價](https://platform.claude.com/docs/zh-TW/about-claude/pricing#claude-in-microsoft-foundry-pricing)。

## 託管選項

Microsoft Foundry 中的 Claude 模型提供兩種「hosting option」（託管選項）。您會在設定部署時選擇託管選項。

|        | 託管於 Azure（Hosted on Azure）            | 託管於 Anthropic（Hosted on Anthropic）                                                                                                                                   |
| ------ | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 推論執行位置 | 在 Azure 基礎架構上執行、由 Anthropic 營運的服務     | 在 Anthropic 基礎架構上執行、由 Anthropic 營運的服務                                                                                                                                |
| 模型可用性  | Opus、Sonnet 和 Haiku 系列的最新模型           | Microsoft Foundry 上提供的所有 Claude 模型                                                                                                                                   |
| 部署類型   | Global Standard、US Data Zone Standard | Global Standard                                                                                                                                                      |
| 建議用途   | 大多數工作負載                               | [存取尚未在 Azure 上託管的功能或模型](https://platform.claude.com/docs/zh-TW/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) |

Claude Sonnet 5.5 僅支援 Global Standard 部署。

<Note>
  Anthropic 作為 Microsoft 的獨立處理者。透過 Microsoft Foundry 使用 Claude 的客戶須遵守 Anthropic 的資料使用條款。對於託管於 Azure 的部署，提示和完成內容會保留在 Azure 內。只有使用量中繼資料以及被 Anthropic 安全系統標記的內容會傳出至 Anthropic。Anthropic 將持續履行其安全與資料承諾。
</Note>

## 先決條件

開始之前，請確認您具備：

* 有效的 Azure 訂閱
* [Foundry 入口網站](https://ai.azure.com/)的存取權限
* 已安裝 [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli)（Entra ID 的 cURL 和 CLI 範例需要，其他情況則為選用）
* 允許您使用該資源的 Azure RBAC 角色，例如 **Foundry User**（原 Azure AI User）或 **Cognitive Services User**

## 安裝 SDK

Anthropic 的[用戶端 SDK](https://platform.claude.com/docs/zh-TW/cli-sdks-libraries/overview) 透過平台專用套件或用戶端類別支援 Foundry。本頁的範例也展示了使用 cURL 和 ant CLI 的請求。若要設定 CLI，請參閱 [CLI 快速入門](https://platform.claude.com/docs/zh-TW/cli-sdks-libraries/cli/quickstart)。

<Note>
  C#、Go、Java、PHP、Python 和 TypeScript SDK 支援 Foundry。Ruby SDK 目前不支援 Foundry。
</Note>

<Tabs>
  <Tab title="Python">
    ```bash
    pip install -U "anthropic"

    # 若要使用 Entra ID 驗證，請一併安裝 Azure Identity 程式庫
    pip install azure-identity
    ```
  </Tab>

  <Tab title="TypeScript">
    ```bash
    npm install @anthropic-ai/foundry-sdk

    # 若要使用 Entra ID 驗證，請另外安裝 Azure Identity 程式庫
    npm install @azure/identity
    ```
  </Tab>

  <Tab title="C#">
    ```bash
    dotnet add package Anthropic.Foundry
    ```
  </Tab>

  <Tab title="Go">
    ```bash
    go get github.com/anthropics/anthropic-sdk-go/foundry

    # 若要使用 Entra ID 驗證，請另外安裝 Azure Identity 程式庫
    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    ```
  </Tab>

  <Tab title="Java">
    <Tabs>
      <Tab title="Gradle">
        ```kotlin
        implementation("com.anthropic:anthropic-java:2.73.0")
        implementation("com.anthropic:anthropic-java-foundry:2.73.0")

        // 若要使用 Entra ID 驗證，請另外加入 Azure Identity 程式庫
        implementation("com.azure:azure-identity:1.18.3")
        ```
      </Tab>

      <Tab title="Maven">
        ```xml
        <dependency>
            <groupId>com.anthropic</groupId>
            <artifactId>anthropic-java</artifactId>
            <version>2.73.0</version>
        </dependency>
        <dependency>
            <groupId>com.anthropic</groupId>
            <artifactId>anthropic-java-foundry</artifactId>
            <version>2.73.0</version>
        </dependency>
        <!-- For Entra ID authentication, also add the Azure Identity library -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-identity</artifactId>
            <version>1.18.3</version>
        </dependency>
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="PHP">
    ```bash
    composer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7"
    ```
  </Tab>

  <Tab title="Ruby">
    ```bash
    # Ruby SDK 目前尚未原生支援 Foundry（請參閱 Authentication
    # 中使用標準 Ruby SDK 作為替代方案的範例）
    # Gemfile
    gem "anthropic"
    ```
  </Tab>
</Tabs>

## 佈建

Foundry 採用兩層式階層結構：**資源**（resources）包含您的安全性與計費設定，而**部署**（deployments）則是您透過 API 呼叫的模型實例。您需要先建立一個 Foundry 資源，然後在其中建立一個或多個 Claude 部署。

### 佈建 Foundry 資源

建立 Foundry 資源，這是在 Azure 中使用與管理服務的必要條件。您可以依照這些說明建立 [Foundry 資源](https://learn.microsoft.com/en-us/azure/ai-services/multi-service-resource?pivots=azportal#create-a-new-azure-ai-foundry-resource)。或者，您也可以從建立 [Foundry 專案](https://learn.microsoft.com/en-us/azure/foundry/how-to/create-projects)開始，此過程會一併建立 Foundry 資源。

佈建資源的步驟：

1. 前往 [Foundry 入口網站](https://ai.azure.com/)。
2. 建立新的 Foundry 資源或選取現有資源。
3. 使用 Azure 核發的 API 金鑰或 Entra ID（原 Azure Active Directory）設定存取管理，以進行角色型存取控制。
4. （選用）將資源設定為私人網路（Azure Virtual Network）的一部分，以限制對資源的網路存取。
5. 記下您的資源名稱。您將在 API 端點中以 `{resource}` 使用它（例如 `https://{resource}.services.ai.azure.com/anthropic/v1/*`）。

### 建立 Foundry 部署

建立資源後，部署 Claude 模型以供 API 呼叫使用。以下步驟說明的是新版 Foundry 入口網站（**New Foundry** 切換開關為開啟狀態）：

1. 登入 Foundry 入口網站。在入口網站首頁，選擇右上方導覽列中的 **Discover**，然後選擇左側窗格中的 **Models** 以開啟模型目錄。

2. 搜尋並選擇 Claude 模型（例如 claude-opus-5-5）。無論模型支援多少種託管選項，每個模型在目錄中只會出現一次。

3. 在模型卡片上選擇 **Deploy**，然後選擇 **Custom settings** 以開啟部署設定窗格。如果您改為選擇 **Default settings**，對於兩種託管選項皆提供的模型，部署會自動設定為 Hosted on Azure。

4. 在您的第一個 Claude 部署中，檢閱 Azure Marketplace 條款、選擇產業，然後選擇 **Agree and Proceed** 以接受條款並訂閱 Azure Marketplace 方案。

5. 設定部署：

   * **Deployment name：**&#x9810;設為模型 ID，但您可以自訂（例如 `my-claude-deployment`）。部署名稱在建立後無法變更。
   * **Region scope：**&#x9078;擇 Global，或者對於託管於 Azure 的模型，選擇 Data Zone。選擇 Data Zone 會建立 US Data Zone Standard 部署，將推論保留在美國境內，等同於在 Claude API 上設定 [`inference_geo: "us"`](https://platform.claude.com/docs/zh-TW/manage-claude/data-residency#inference-geo)。對於 Claude Sonnet 5.5，請選擇 Global。
   * **Model version：**&#x5C55;開 **Model version settings**，並從 **Model version** 下拉式選單中選擇版本。每個[託管選項](https://platform.claude.com/docs/zh-TW/build-with-claude/claude-in-microsoft-foundry#hosting-options)都會列為獨立的模型版本，並標示其託管選項（例如，版本 1 為 Hosted on Anthropic，版本 2 為 Hosted on Azure）。

6. 選擇 **Deploy** 並等待佈建完成。

7. 部署完成後，選擇右上方導覽列中的 **Build**，然後選擇左側窗格中的 **Models**，並開啟您的部署。**Details** 分頁會顯示 **Target URI**（您的端點 URL）和 **Key**（您的 API 金鑰）。

如果 **New Foundry** 切換開關為關閉狀態，您使用的是傳統入口網站版面配置。在該版面中，請開啟左側窗格中的 **Model catalog** 來尋找並部署模型，並開啟 **Models + endpoints**（位於 **My assets** 下）來檢視您的部署及其端點詳細資訊。

<Note>
  您選擇的部署名稱會成為您在 API 請求的 `model` 參數中傳入的值。您可以使用不同名稱為同一模型建立多個部署，以管理不同的設定或速率限制。
</Note>

## 驗證

Microsoft Foundry 中的 Claude 支援兩種驗證方式：API 金鑰與 Entra ID 權杖。兩種方式皆使用格式為 `https://{resource}.services.ai.azure.com/anthropic/v1/*` 的 Azure 託管端點。

### API 金鑰驗證

佈建 Foundry Claude 資源後，您可以從 Foundry 入口網站取得 API 金鑰：

1. 在 Foundry 入口網站中，選擇右上方導覽列中的 **Build**，然後選擇左側窗格中的 **Models**。
2. 開啟您的 Claude 部署並選擇 **Details** 分頁。
3. 複製 **Key** 值（並記下您端點的 **Target URI**）。
4. 在請求中使用 `api-key` 或 `x-api-key` 標頭，或將其提供給 SDK。

SDK 的 Foundry 用戶端需要 API 金鑰以及資源名稱或基礎 URL 其中之一，若已定義下列環境變數，會自動從中讀取：

* `ANTHROPIC_FOUNDRY_API_KEY` - 您的 API 金鑰
* `ANTHROPIC_FOUNDRY_RESOURCE` - 您的資源名稱（例如 `example-resource`）
* `ANTHROPIC_FOUNDRY_BASE_URL` - 資源名稱的替代方案：完整的基礎 URL（例如 `https://example-resource.services.ai.azure.com/anthropic/`）。C# SDK 不會讀取此變數：它一律從資源名稱建構基礎 URL。

<Note>
  `resource` 和 `base_url` 參數互斥。請提供資源名稱（SDK 會用它將 URL 建構為 `https://{resource}.services.ai.azure.com/anthropic/`）或直接提供完整的基礎 URL。
</Note>

**使用 API 金鑰的範例：**

<CodeGroup>
  ```bash cURL
  curl https://{resource}.services.ai.azure.com/anthropic/v1/messages \
    -H "content-type: application/json" \
    -H "api-key: YOUR_AZURE_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "messages": [
        {"role": "user", "content": "Hello!"}
      ]
    }'
  ```

  ```bash CLI
  # ant 會讀取 ANTHROPIC_API_KEY 並以 x-api-key 傳送，Foundry 接受此方式
  export ANTHROPIC_API_KEY="YOUR_AZURE_API_KEY"

  ant messages create \
    --base-url https://example-resource.services.ai.azure.com/anthropic \
    --model claude-opus-5-5 \
    --max-tokens 1024 \
    --message '{role: user, content: "Hello!"}' \
    --transform content
  ```

  ```python Python
  import os
  from anthropic import AnthropicFoundry

  client = AnthropicFoundry(
      api_key=os.environ.get("ANTHROPIC_FOUNDRY_API_KEY"),
      resource="example-resource",  # your resource name
  )

  message = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      messages=[{"role": "user", "content": "Hello!"}],
  )
  print(message.content)
  ```

  ```typescript TypeScript
  import AnthropicFoundry from "@anthropic-ai/foundry-sdk";

  const client = new AnthropicFoundry({
    apiKey: process.env.ANTHROPIC_FOUNDRY_API_KEY,
    resource: "example-resource" // your resource name
  });

  const message = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Hello!" }]
  });
  console.log(message.content);
  ```

  ```csharp C#
  using Anthropic.Foundry;
  using Anthropic.Models.Messages;

  // C# 用戶端一律根據資源名稱建構 base URL（基底 URL）。
  // 它不會讀取 ANTHROPIC_FOUNDRY_BASE_URL。
  var client = new AnthropicFoundryClient(
      new AnthropicFoundryApiKeyCredentials(
          Environment.GetEnvironmentVariable("ANTHROPIC_FOUNDRY_API_KEY")!,
          "example-resource"
      )
  );

  var response = await client.Messages.Create(new MessageCreateParams
  {
      Model = "claude-opus-5-5",
      MaxTokens = 1024,
      Messages = [new() { Role = Role.User, Content = "Hello!" }],
  });

  Console.WriteLine(
      string.Join("", response.Content
          .Select(block => block.Value)
          .OfType<TextBlock>()
          .Select(textBlock => textBlock.Text)));
  ```

  ```go Go
  package main

  import (
  	"context"
  	"fmt"
  	"os"

  	"github.com/anthropics/anthropic-sdk-go"
  	"github.com/anthropics/anthropic-sdk-go/foundry"
  )

  func main() {
  	client, err := foundry.NewClient(foundry.ClientConfig{
  		APIKey:   os.Getenv("ANTHROPIC_FOUNDRY_API_KEY"),
  		Resource: "example-resource", // your resource name
  	})
  	if err != nil {
  		panic(err)
  	}

  	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
  		Model:     "claude-opus-5-5",
  		MaxTokens: 1024,
  		Messages: []anthropic.MessageParam{
  			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
  		},
  	})
  	if err != nil {
  		panic(err)
  	}
  	fmt.Println(message.Content)
  }
  ```

  ```java Java
  import com.anthropic.client.AnthropicClient;
  import com.anthropic.client.okhttp.AnthropicOkHttpClient;
  import com.anthropic.foundry.backends.FoundryBackend;
  import com.anthropic.models.messages.MessageCreateParams;

  void main() {
      // 需要環境變數：ANTHROPIC_FOUNDRY_API_KEY、ANTHROPIC_FOUNDRY_RESOURCE
      AnthropicClient client = AnthropicOkHttpClient.builder()
          .backend(FoundryBackend.fromEnv())
          .build();

      MessageCreateParams params = MessageCreateParams.builder()
          .model("claude-opus-5-5")
          .maxTokens(1024)
          .addUserMessage("Hello!")
          .build();

      client.messages().create(params).content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  use Anthropic\Foundry;

  $client = Foundry\Client::withCredentials(
      apiKey: getenv('ANTHROPIC_FOUNDRY_API_KEY'),
      baseUrl: 'https://example-resource.services.ai.azure.com/anthropic',
  );

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => 'Hello!']
      ],
      model: 'claude-opus-5-5',
  );
  echo array_find($message->content, fn ($block) => $block->type === 'text')->text;
  ```

  ```ruby Ruby
  # Ruby SDK 尚未原生支援 Foundry。此範例使用
  # 標準 Ruby SDK 作為替代方案。請明確傳入憑證：若未傳入，
  # 用戶端會改用 ANTHROPIC_API_KEY 或
  # ANTHROPIC_AUTH_TOKEN 環境變數，可能將 Claude API
  # 憑證傳送至您的 Foundry 端點。Foundry
  # 不支援的功能會在伺服器端而非用戶端失敗。如需完整
  # Foundry 支援，請使用 C#、Go、Java、PHP、Python 或 TypeScript SDK。
  require "anthropic"

  client = Anthropic::Client.new(
    base_url: "https://example-resource.services.ai.azure.com/anthropic",
    api_key: ENV.fetch("ANTHROPIC_FOUNDRY_API_KEY")
  )

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello!"}]
  )

  puts message.content.find { it.type == :text }.text
  ```
</CodeGroup>

<Warning>
  請妥善保管您的 API 金鑰。切勿將其提交至版本控制系統或公開分享。任何能存取您 API 金鑰的人都可以透過您的 Foundry 資源向 Claude 發出請求。
</Warning>

### Microsoft Entra 驗證

Entra ID 驗證可讓您透過 Azure RBAC 管理存取權限、與組織的身分管理整合，並避免手動處理 API 金鑰。若要使用 Entra ID 權杖：

1. 為您的 Foundry 資源啟用 [Microsoft Entra ID 驗證](https://learn.microsoft.com/en-us/azure/ai-foundry/model-inference/how-to/configure-entra-id)。
2. 從 Entra ID 取得存取權杖。
3. 在 `Authorization: Bearer {TOKEN}` 標頭中使用該權杖。

**使用 Entra ID 的範例：**

<CodeGroup>
  ```bash cURL
  # 取得 Microsoft Entra ID 權杖
  ACCESS_TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)

  # 使用權杖發出請求。請將 {resource} 替換為您的資源名稱
  curl https://{resource}.services.ai.azure.com/anthropic/v1/messages \
    -H "content-type: application/json" \
    -H "Authorization: Bearer $ACCESS_TOKEN" \
    -H "anthropic-version: 2023-06-01" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "messages": [
        {"role": "user", "content": "Hello!"}
      ]
    }'
  ```

  ```bash CLI
  # 取得 Microsoft Entra ID 權杖
  ACCESS_TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)

  # 使用權杖發出請求。請將 {resource} 替換為您的資源名稱
  # env -u 會取消設定 ANTHROPIC_API_KEY，否則 CLI 會改為傳送該金鑰而非權杖
  env -u ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN="$ACCESS_TOKEN" ant messages create \
    --base-url https://{resource}.services.ai.azure.com/anthropic \
    --model claude-opus-5-5 \
    --max-tokens 1024 \
    --message '{role: user, content: "Hello!"}'
  ```

  ```python Python
  from anthropic import AnthropicFoundry
  from azure.identity import DefaultAzureCredential, get_bearer_token_provider

  # 使用 token provider 模式取得 Microsoft Entra ID 權杖
  token_provider = get_bearer_token_provider(
      DefaultAzureCredential(), "https://ai.azure.com/.default"
  )

  # 建立使用 Entra ID 驗證的用戶端
  client = AnthropicFoundry(
      resource="example-resource",  # your resource name
      azure_ad_token_provider=token_provider,  # Use token provider for Entra ID auth
  )

  # 發送請求
  message = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      messages=[{"role": "user", "content": "Hello!"}],
  )
  print(message.content)
  ```

  ```typescript TypeScript
  import AnthropicFoundry from "@anthropic-ai/foundry-sdk";
  import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";

  // 使用 token provider 模式取得 Entra ID 權杖
  const credential = new DefaultAzureCredential();
  const tokenProvider = getBearerTokenProvider(credential, "https://ai.azure.com/.default");

  // 建立使用 Entra ID 驗證的用戶端
  const client = new AnthropicFoundry({
    resource: "example-resource", // your resource name
    azureADTokenProvider: tokenProvider // Use token provider for Entra ID auth
  });

  // 發送請求
  const message = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Hello!" }]
  });
  console.log(message.content);
  ```

  ```csharp C#
  using Anthropic.Foundry;
  using Anthropic.Models.Messages;
  using Azure.Identity;

  var client = new AnthropicFoundryClient(
      new AnthropicFoundryIdentityTokenCredentials(
          new DefaultAzureCredential(),
          "example-resource"
      )
  );

  var response = await client.Messages.Create(new MessageCreateParams
  {
      Model = "claude-opus-5-5",
      MaxTokens = 1024,
      Messages = [new() { Role = Role.User, Content = "Hello!" }],
  });

  Console.WriteLine(
      string.Join("", response.Content
          .Select(block => block.Value)
          .OfType<TextBlock>()
          .Select(textBlock => textBlock.Text)));
  ```

  ```go Go
  package main

  import (
  	"context"
  	"fmt"

  	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
  	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
  	"github.com/anthropics/anthropic-sdk-go"
  	"github.com/anthropics/anthropic-sdk-go/foundry"
  )

  func main() {
  	credential, err := azidentity.NewDefaultAzureCredential(nil)
  	if err != nil {
  		panic(err)
  	}

  	tokenProvider := func(ctx context.Context) (string, error) {
  		token, err := credential.GetToken(ctx, policy.TokenRequestOptions{
  			Scopes: []string{foundry.EntraIDScope},
  		})
  		return token.Token, err
  	}

  	client, err := foundry.NewClient(foundry.ClientConfig{
  		Resource:             "example-resource", // your resource name
  		AzureADTokenProvider: tokenProvider,
  	})
  	if err != nil {
  		panic(err)
  	}

  	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
  		Model:     "claude-opus-5-5",
  		MaxTokens: 1024,
  		Messages: []anthropic.MessageParam{
  			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
  		},
  	})
  	if err != nil {
  		panic(err)
  	}
  	fmt.Println(message.Content)
  }
  ```

  ```java Java
  import com.anthropic.client.AnthropicClient;
  import com.anthropic.client.okhttp.AnthropicOkHttpClient;
  import com.anthropic.foundry.backends.FoundryBackend;
  import com.anthropic.models.messages.MessageCreateParams;
  import com.azure.identity.AuthenticationUtil;
  import com.azure.identity.DefaultAzureCredentialBuilder;
  import java.util.function.Supplier;

  void main() {
      Supplier<String> bearerTokenSupplier = AuthenticationUtil.getBearerTokenSupplier(
          new DefaultAzureCredentialBuilder().build(),
          "https://ai.azure.com/.default"
      );

      AnthropicClient client = AnthropicOkHttpClient.builder()
          .backend(FoundryBackend.builder()
              .bearerTokenSupplier(bearerTokenSupplier)
              .resource("example-resource")
              .build())
          .build();

      MessageCreateParams params = MessageCreateParams.builder()
          .model("claude-opus-5-5")
          .maxTokens(1024)
          .addUserMessage("Hello!")
          .build();

      client.messages().create(params).content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  use Anthropic\Foundry;

  // 取得 Entra ID 存取權杖，例如使用 Azure CLI：
  //   az account get-access-token --resource https://ai.azure.com \
  //     --query accessToken -o tsv
  $token = getenv('AZURE_ACCESS_TOKEN');

  $client = Foundry\Client::withCredentials(
      authToken: $token,
      baseUrl: 'https://example-resource.services.ai.azure.com/anthropic',
  );

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => 'Hello!']
      ],
      model: 'claude-opus-5-5',
  );
  echo array_find($message->content, fn ($block) => $block->type === 'text')->text;
  ```

  ```ruby Ruby
  # Ruby SDK 目前尚未原生支援 Foundry。此範例使用
  # 標準 Ruby SDK 作為替代方案，並搭配靜態 Entra ID 權杖：由於未內建自動
  # 權杖更新功能，您的應用程式必須自行更新權杖
  # （權杖通常在 1 小時後過期）。請明確傳入憑證：
  # 若未傳入，用戶端會改用 ANTHROPIC_API_KEY 或
  # ANTHROPIC_AUTH_TOKEN 環境變數。如需完整的 Foundry 支援，請使用
  # C#、Go、Java、PHP、Python 或 TypeScript SDK。
  require "anthropic"

  # 取得 Entra ID 存取權杖，例如使用 Azure CLI：
  #   az account get-access-token --resource https://ai.azure.com \
  #     --query accessToken -o tsv
  client = Anthropic::Client.new(
    base_url: "https://example-resource.services.ai.azure.com/anthropic",
    auth_token: ENV.fetch("AZURE_ACCESS_TOKEN")
  )

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello!"}]
  )

  puts message.content.find { it.type == :text }.text
  ```
</CodeGroup>

## 關聯請求 ID

Foundry 會在 HTTP 回應標頭中包含請求識別碼，以供偵錯與追蹤。聯絡支援團隊時，請同時提供 `request-id` 與 `apim-request-id`（Azure API Management）的值，以協助團隊在 Anthropic 與 Azure 系統中快速定位並調查您的請求。

## 功能支援

Microsoft Foundry 中的 Claude 支援大多數 Claude 功能。您可以在[功能概覽](https://platform.claude.com/docs/zh-TW/build-with-claude/overview)中找到目前支援的所有功能。

### 上下文視窗

Claude Fable 5.1、Claude Fable 5、Claude Opus 5.5、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 5.5、Claude Sonnet 5、Claude Sonnet 4.6 和 Claude Haiku 5.5 在 Microsoft Foundry 上具有 [1M token 上下文視窗](https://platform.claude.com/docs/zh-TW/build-with-claude/context-windows)。其他 Claude 模型，包括 Claude Sonnet 4.5（已棄用），具有 200k token 上下文視窗。

### Microsoft Foundry 中的 Claude 不支援的 Claude 功能

* Admin API
* Advisor 工具
* Claude Managed Agents
* Compliance API
* Models API
* Message Batches API
* 伺服器端備援（[`fallbacks` 參數](https://platform.claude.com/docs/zh-TW/build-with-claude/refusals-and-fallback#server-side-fallback)；請改用[用戶端備援模式](https://platform.claude.com/docs/zh-TW/build-with-claude/refusals-and-fallback#client-side-fallback)）
* [電腦使用](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/computer-use-tool)和[瀏覽器使用](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/browser-use-tool)工具集（`computer_toolset_20260801` 和 `browser_toolset_20260801` 目前在 Microsoft Foundry 上尚未提供；對於[較早的工具版本](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions)中列出的模型，beta 版電腦使用工具版本仍可使用）

### 託管於 Azure 時不支援的其他功能

下列功能可用於託管於 Anthropic 的部署，但不支援託管於 Azure 的部署：

* [程式碼執行](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/code-execution-tool)
* 晚於 `web_search_20250305` 與 `web_fetch_20250910` 的[網頁搜尋](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/web-search-tool)與[網頁擷取](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/web-fetch-tool)工具版本。託管於 Azure 的部署僅支援這些基本版本，因此無法使用動態篩選、回應納入與快取略過功能。
* [Agent Skills](https://platform.claude.com/docs/zh-TW/agents-and-tools/agent-skills/overview)
* [程式化工具呼叫](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/programmatic-tool-calling)
* [Files API](https://platform.claude.com/docs/zh-TW/build-with-claude/files)

依設計，對託管於 Azure 的部署使用這些功能的請求會傳回 `400 Bad Request` 錯誤。Claude Code 會偵測託管於 Azure 的部署，並自動調整其功能集。

## API 回應

Microsoft Foundry 中的 Claude 所傳回的 API 回應遵循標準的 [Claude API 回應格式](https://platform.claude.com/docs/zh-TW/api/messages/create)。這包括回應主體中的 `usage` 物件，提供請求的詳細 token 消耗資訊。`usage` 物件在所有平台（Claude API、Amazon Bedrock、Claude Platform on AWS、Foundry 與 Google Cloud）上皆一致。

有關 Foundry 專屬回應標頭的詳細資訊，請參閱[關聯請求 ID](https://platform.claude.com/docs/zh-TW/build-with-claude/claude-in-microsoft-foundry#correlation-request-ids)。

## API 模型 ID 與部署

生命週期術語（Deprecated、Retired）定義於[模型棄用](https://platform.claude.com/docs/zh-TW/about-claude/model-deprecations)。Microsoft Foundry 遵循 Claude API 的生命週期時程。

下列 Claude 模型可透過 Foundry 使用：

| Model                                                                                                    | Default deployment name | Hosted on Azure | Hosted on Anthropic |
| :------------------------------------------------------------------------------------------------------- | :---------------------- | :-------------: | :-----------------: |
| Claude Fable 5.1                                                                                         | `claude-fable-5-1`      |                 |          ✓          |
| Claude Mythos 5.1 ([limited availability](https://support.claude.com/en/articles/14604842))              | `claude-mythos-5-1`     |                 |          ✓          |
| Claude Fable 5                                                                                           | `claude-fable-5`        |                 |          ✓          |
| Claude Mythos 5 ([limited availability](https://support.claude.com/en/articles/14604842))                | `claude-mythos-5`       |                 |          ✓          |
| Claude Opus 5.5                                                                                          | `claude-opus-5-5`       |        ✓        |          ✓          |
| Claude Opus 5                                                                                            | `claude-opus-5`         |        ✓        |          ✓          |
| Claude Opus 4.8                                                                                          | `claude-opus-4-8`       |        ✓        |          ✓          |
| Claude Opus 4.7                                                                                          | `claude-opus-4-7`       |                 |          ✓          |
| Claude Opus 4.6                                                                                          | `claude-opus-4-6`       |                 |          ✓          |
| Claude Opus 4.5                                                                                          | `claude-opus-4-5`       |                 |          ✓          |
| Claude Sonnet 5.5                                                                                        | `claude-sonnet-5-5`     |        ✓        |          ✓          |
| Claude Sonnet 5                                                                                          | `claude-sonnet-5`       |        ✓        |          ✓          |
| Claude Sonnet 4.6                                                                                        | `claude-sonnet-4-6`     |                 |          ✓          |
| Claude Sonnet 4.5 ([deprecated](https://platform.claude.com/docs/zh-TW/about-claude/model-deprecations)) | `claude-sonnet-4-5`     |                 |          ✓          |
| Claude Haiku 5.5                                                                                         | `claude-haiku-5-5`      |        ✓        |          ✓          |
| Claude Haiku 4.5                                                                                         | `claude-haiku-4-5`      |        ✓        |          ✓          |

預設情況下，部署名稱與上表所示的模型 ID 相符。不過，您可以在 Foundry 入口網站中建立不同名稱的自訂部署，以管理不同的設定、版本或速率限制。請在 API 請求中使用部署名稱（不一定是模型 ID）。

<Info>
  [Claude Mythos Preview](https://anthropic.com/glasswing) 是在 Microsoft Foundry 上提供給受邀客戶的研究預覽版。
</Info>

<Tip>
  正在升級到較新的 Claude 模型嗎？在 Claude Code 中，執行 `/claude-api migrate` 即可在您的整個程式碼庫中套用模型 ID 替換與破壞性參數變更。此技能會偵測您的程式碼所針對的雲端平台，並針對該平台調整模型 ID 格式與功能變更。請參閱[遷移至較新的 Claude 模型](https://platform.claude.com/docs/zh-TW/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model)。
</Tip>

## 計費

Microsoft Foundry 中的 Claude 透過 [Azure Marketplace](https://azuremarketplace.microsoft.com/) 計費。使用量以 Claude Consumption Units（CCU）計價，每小時計量，並於每月事後在您的 Azure 帳單上開立發票。CCU 並非預付點數。不存在 CCU 餘額或承諾用量。

有關 CCU 價格、換算機制與各模型 token 費率，請參閱 [Microsoft Foundry 中的 Claude 定價](https://platform.claude.com/docs/zh-TW/about-claude/pricing#claude-in-microsoft-foundry-pricing)。

## 在託管選項之間遷移

若要將現有部署從一種託管選項移至另一種：

1. 建立該模型另一個託管版本（託管於 Azure 或託管於 Anthropic）的新部署。這可以在同一個 Foundry 資源中，也可以在新的資源中。
2. 更新您的應用程式，在 `model` 參數中傳入新的部署名稱。
3. 流量轉移完成後，刪除舊部署。

若新部署位於同一個 Foundry 資源中，您的端點 URL 與驗證方式維持不變。若您建立了新資源，請更新應用程式的端點與憑證以指向新資源。

## 監控與記錄

Azure 透過標準 Azure 模式為您的 Claude 使用量提供監控與記錄：

* **Azure Monitor：** 追蹤 API 使用量、延遲與錯誤率
* **Azure Log Analytics：** 查詢與分析請求／回應記錄
* **Cost Management：** 監控與預測與 Claude 使用量相關的成本

Anthropic 建議至少以 30 天滾動方式記錄您的活動，以了解使用模式並調查任何潛在問題。

<Note>
  Azure 的記錄服務在您的 Azure 訂閱內設定。啟用記錄不會讓 Microsoft 或 Anthropic 存取您的內容，超出計費與服務營運所需的範圍。
</Note>

## 疑難排解

### 驗證錯誤

**錯誤：** `401 Unauthorized` 或 `Invalid API key`

* **解決方法：** 確認您的 API 金鑰正確。您可以在 Foundry 入口網站中部署的 **Details** 分頁（位於 **Build** > **Models** 下）找到它。
* **解決方法：** 若使用 Microsoft Entra ID，請確認您的存取權杖有效且尚未過期。權杖通常在 1 小時後過期。

**錯誤：** `403 Forbidden`

* **解決方法：** 您的 Azure 帳戶可能缺少必要權限。請確認您已獲指派適當的 Azure RBAC 角色（例如 **Foundry User**（原 Azure AI User）或 **Cognitive Services User**）。

### 速率限制

**錯誤：** `429 Too Many Requests`

* **解決方法：** 您已超出速率限制。請在應用程式中實作指數退避與重試邏輯。
* **解決方法：** 考慮透過 Azure 入口網站或 Azure 支援申請提高速率限制。

#### 速率限制標頭

Foundry 的回應中不包含 Anthropic 的標準速率限制標頭（`anthropic-ratelimit-tokens-limit`、`anthropic-ratelimit-tokens-remaining`、`anthropic-ratelimit-tokens-reset`、`anthropic-ratelimit-input-tokens-limit`、`anthropic-ratelimit-input-tokens-remaining`、`anthropic-ratelimit-input-tokens-reset`、`anthropic-ratelimit-output-tokens-limit`、`anthropic-ratelimit-output-tokens-remaining` 與 `anthropic-ratelimit-output-tokens-reset`）。請改用 Azure 的監控工具管理速率限制。

### 模型與部署錯誤

**錯誤：** `Model not found` 或 `Deployment not found`

* **解決方法：** 確認您使用的是正確的部署名稱。如果您尚未建立自訂部署，請使用預設的模型 ID（例如 claude-opus-5-5）。
* **解決方法：** 確認該模型／部署在您的 Azure 區域中可用。

**錯誤：** `Invalid model parameter`

* **解決方法：** model 參數應包含您的部署名稱，該名稱可在 Foundry 入口網站中自訂。請確認部署存在且已正確設定。

## 後續步驟

<CardGroup cols={2}>
  <Card title="功能概覽" icon="stack" href="https://platform.claude.com/docs/zh-TW/build-with-claude/overview">
    探索 Claude 的進階功能與能力。
  </Card>

  <Card title="定價" icon="chart" href="https://platform.claude.com/docs/zh-TW/about-claude/pricing#claude-in-microsoft-foundry-pricing">
    了解 Anthropic 針對模型與功能的定價結構。
  </Card>

  <Card title="模型棄用" icon="arrow-clockwise" href="https://platform.claude.com/docs/zh-TW/about-claude/model-deprecations">
    隨著更安全、更強大的模型推出，Anthropic 會定期淘汰舊模型。查看所有 API 棄用項目及建議的替代方案。
  </Card>
</CardGroup>

## 其他資源

<CardGroup cols={2}>
  <Card title="Foundry 模型目錄" icon="grid" href="https://ai.azure.com/catalog/publishers/anthropic">
    瀏覽 Foundry 目錄中的 Anthropic 模型。
  </Card>

  <Card title="Azure AI Foundry 定價" icon="calculator" href="https://azure.microsoft.com/en-us/pricing/details/ai-foundry/#pricing">
    檢視 Microsoft 的 Azure AI Foundry 定價詳細資訊。
  </Card>

  <Card title="模型定價" icon="table" href="https://platform.claude.com/docs/zh-TW/about-claude/pricing#model-pricing">
    檢視 Anthropic 各模型的定價詳細資訊。
  </Card>

  <Card title="Azure 入口網站" icon="cloud" href="https://portal.azure.com/">
    管理您的 Azure 資源。
  </Card>
</CardGroup>
