---
title: Microsoft Foundry의 Claude
url: https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry
description: Azure 네이티브 엔드포인트와 인증을 사용하여 Microsoft Foundry를 통해 Claude 모델에 액세스하세요.
---

이 가이드에서는 Anthropic의 클라이언트 SDK 중 하나 또는 직접 HTTP 요청을 사용하여 Microsoft Foundry에서 Claude를 설정하고 API를 호출하는 방법을 보여줍니다. Microsoft Foundry에서 Claude에 액세스하면 Claude 사용량은 Azure Marketplace를 통해 청구됩니다. Azure 구독을 통해 비용을 관리하면서 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 토큰 "context window"(컨텍스트 윈도우)](https://platform.claude.com/docs/ko/build-with-claude/context-windows) 같은 기능을 사용할 수 있습니다.

Claude는 Foundry 리소스에서 Global Standard 및 US Data Zone Standard 배포 유형으로 제공되며, Azure Marketplace를 통해 Claude Consumption Units로 청구됩니다. 자세한 내용은 [Microsoft Foundry의 Claude 가격](https://platform.claude.com/docs/ko/about-claude/pricing#claude-in-microsoft-foundry-pricing)을 참조하세요.

## 호스팅 옵션

Microsoft Foundry의 Claude 모델은 두 가지 "hosting option"(호스팅 옵션)으로 제공됩니다. 호스팅 옵션은 배포를 구성할 때 선택합니다.

|             | Hosted on Azure                        | 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/ko/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 예제에 필요하며, 그 외에는 선택 사항)
* **Foundry User**(이전 명칭 Azure AI User) 또는 **Cognitive Services User**와 같이 리소스를 사용할 수 있도록 허용하는 Azure RBAC 역할

## SDK 설치

Anthropic의 [클라이언트 SDK](https://platform.claude.com/docs/ko/cli-sdks-libraries/overview)는 플랫폼별 패키지 또는 클라이언트 클래스를 통해 Foundry를 지원합니다. 이 페이지의 예제에서는 cURL 및 ant CLI를 사용한 요청도 보여줍니다. CLI를 설정하려면 [CLI 빠른 시작](https://platform.claude.com/docs/ko/cli-sdks-libraries/cli/quickstart)을 참조하세요.

<Note>
  Foundry는 C#, Go, Java, PHP, Python, TypeScript SDK에서 지원됩니다. Foundry는 현재 Ruby SDK에서는 사용할 수 없습니다.
</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는 2단계 계층 구조를 사용합니다. **리소스(resources)**&#xC5D0;는 보안 및 청구 구성이 포함되며, **배포(deployments)**&#xB294; API를 통해 호출하는 모델 인스턴스입니다. 먼저 Foundry 리소스를 생성한 다음, 그 안에 하나 이상의 Claude 배포를 생성합니다.

### Foundry 리소스 프로비저닝

Azure에서 서비스를 사용하고 관리하는 데 필요한 Foundry 리소스를 생성합니다. 다음 지침에 따라 [Foundry 리소스](https://learn.microsoft.com/en-us/azure/ai-services/multi-service-resource?pivots=azportal#create-a-new-azure-ai-foundry-resource)를 생성할 수 있습니다. 또는 Foundry 리소스 생성을 포함하는 [Foundry 프로젝트](https://learn.microsoft.com/en-us/azure/foundry/how-to/create-projects) 생성부터 시작할 수도 있습니다.

리소스를 프로비저닝하려면:

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:** 기본값은 모델 ID이지만 사용자 지정할 수 있습니다(예: `my-claude-deployment`). 배포 이름은 생성 후 변경할 수 없습니다.
   * **Region scope:** Global을 선택하거나, Azure에서 호스팅되는 모델의 경우 Data Zone을 선택합니다. Data Zone을 선택하면 US Data Zone Standard 배포가 생성되며, 이는 추론을 미국 내에서 유지하고 Claude API에서 [`inference_geo: "us"`](https://platform.claude.com/docs/ko/manage-claude/data-residency#inference-geo)를 설정하는 것과 동일합니다. Claude Sonnet 5.5의 경우 Global을 선택하세요.
   * **Model version:** **Model version settings**를 펼치고 **Model version** 드롭다운 메뉴에서 버전을 선택합니다. 각 [호스팅 옵션](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry#hosting-options)은 별도의 모델 버전으로 나열되며, 해당 호스팅 옵션으로 레이블이 지정됩니다(예: Hosted on Anthropic은 버전 1, Hosted on Azure는 버전 2).

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가 이를 사용하여 `https://{resource}.services.ai.azure.com/anthropic/` 형식의 URL을 구성함) 또는 전체 기본 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# 클라이언트는 항상 리소스 이름으로 기본 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로 액세스를 관리하고, 조직의 ID 관리와 통합하며, 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";

  // 토큰 공급자 패턴을 사용하여 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/ko/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 토큰 컨텍스트 윈도우](https://platform.claude.com/docs/ko/build-with-claude/context-windows)를 지원합니다. Claude Sonnet 4.5(지원 중단)를 포함한 기타 Claude 모델은 200k 토큰 컨텍스트 윈도우를 지원합니다.

### Microsoft Foundry의 Claude에서 지원되지 않는 Claude 기능

* Admin API
* Advisor 도구
* Claude Managed Agents
* Compliance API
* Models API
* Message Batches API
* 서버 측 폴백([`fallbacks` 매개변수](https://platform.claude.com/docs/ko/build-with-claude/refusals-and-fallback#server-side-fallback). 대신 [클라이언트 측 폴백 패턴](https://platform.claude.com/docs/ko/build-with-claude/refusals-and-fallback#client-side-fallback)을 사용하세요)
* [컴퓨터 사용](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/computer-use-tool) 및 [브라우저 사용](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/browser-use-tool) 도구 세트(`computer_toolset_20260801` 및 `browser_toolset_20260801`은 현재 Microsoft Foundry에서 사용할 수 없습니다. 베타 컴퓨터 사용 도구 버전은 [이전 도구 버전](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions)에 나열된 모델에서 계속 사용할 수 있습니다)

### Azure에서 호스팅될 때 지원되지 않는 추가 기능

다음 기능은 Anthropic에서 호스팅되는 배포에서는 사용할 수 있지만 Azure에서 호스팅되는 배포에서는 지원되지 않습니다:

* [코드 실행](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/code-execution-tool)
* `web_search_20250305` 및 `web_fetch_20250910` 이후 버전의 [웹 검색](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/web-search-tool) 및 [웹 페치](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/web-fetch-tool) 도구. Azure에서 호스팅되는 배포는 이러한 기본 버전만 지원하므로 동적 필터링, 응답 포함, 캐시 우회는 사용할 수 없습니다.
* [Agent Skills](https://platform.claude.com/docs/ko/agents-and-tools/agent-skills/overview)
* [프로그래매틱 도구 호출](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/programmatic-tool-calling)
* [Files API](https://platform.claude.com/docs/ko/build-with-claude/files)

Azure에서 호스팅되는 배포에 대해 이러한 기능을 사용하는 요청은 설계상 `400 Bad Request` 오류를 반환합니다. Claude Code는 Azure에서 호스팅되는 배포를 감지하고 기능 세트를 자동으로 조정합니다.

## API 응답

Microsoft Foundry의 Claude API 응답은 표준 [Claude API 응답 형식](https://platform.claude.com/docs/ko/api/messages/create)을 따릅니다. 여기에는 요청에 대한 상세한 토큰 소비 정보를 제공하는 응답 본문의 `usage` 객체가 포함됩니다. `usage` 객체는 모든 플랫폼(Claude API, Amazon Bedrock, Claude Platform on AWS, Foundry, Google Cloud)에서 일관됩니다.

Foundry 고유의 응답 헤더에 대한 자세한 내용은 [상관 관계 요청 ID](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry#correlation-request-ids)를 참조하세요.

## API 모델 ID 및 배포

수명 주기 용어(Deprecated(지원 중단), Retired(종료))는 [모델 지원 중단](https://platform.claude.com/docs/ko/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/ko/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/ko/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 가격, 변환 방식, 모델별 토큰 요율은 [Microsoft Foundry의 Claude 가격](https://platform.claude.com/docs/ko/about-claude/pricing#claude-in-microsoft-foundry-pricing)을 참조하세요.

## 호스팅 옵션 간 마이그레이션

기존 배포를 한 호스팅 옵션에서 다른 호스팅 옵션으로 이동하려면:

1. 모델의 다른 호스팅 버전(Hosted on Azure 또는 Hosted on 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/ko/build-with-claude/overview">
    Claude의 고급 기능과 역량을 살펴보세요.
  </Card>

  <Card title="가격" icon="chart" href="https://platform.claude.com/docs/ko/about-claude/pricing#claude-in-microsoft-foundry-pricing">
    모델 및 기능에 대한 Anthropic의 가격 구조를 알아보세요.
  </Card>

  <Card title="모델 지원 중단" icon="arrow-clockwise" href="https://platform.claude.com/docs/ko/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">
    Azure AI Foundry에 대한 Microsoft의 가격 세부 정보를 확인하세요.
  </Card>

  <Card title="모델 가격" icon="table" href="https://platform.claude.com/docs/ko/about-claude/pricing#model-pricing">
    Anthropic의 모델별 가격 세부 정보를 확인하세요.
  </Card>

  <Card title="Azure 포털" icon="cloud" href="https://portal.azure.com/">
    Azure 리소스를 관리하세요.
  </Card>
</CardGroup>
