Claude Platform Docs
SDK, CLI 및 라이브러리클라이언트 SDK

Go SDK

컨텍스트 기반 취소와 함수형 옵션을 지원하는 Anthropic Go SDK를 설치하고 구성합니다

Anthropic Go 라이브러리는 Go로 작성된 애플리케이션에서 Claude API에 편리하게 접근할 수 있도록 해 줍니다.

설치

import (
	"github.com/anthropics/anthropic-sdk-go" // imported as anthropic
)

go get으로 설치합니다:

go get github.com/anthropics/anthropic-sdk-go

요구 사항

이 라이브러리는 Go 1.24 이상이 필요합니다.

사용법

package main

import (
	"context"
	"fmt"

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

func main() {
	client := anthropic.NewClient(
		option.WithAPIKey("my-anthropic-api-key"), // defaults to os.LookupEnv("ANTHROPIC_API_KEY")
	)
	message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
		MaxTokens: 1024,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("What is a quaternion?")),
		},
		Model: anthropic.ModelClaudeOpus5_5,
	})
	if err != nil {
		panic(err.Error())
	}
	for _, block := range message.Content {
		if textBlock, ok := block.AsAny().(anthropic.TextBlock); ok {
			fmt.Println(textBlock.Text)
		}
	}
}

Workload Identity Federation을 포함한 인증 옵션은 인증을 참조하세요. API 키가 워크스페이스로 범위가 지정되지 않은 개인 또는 서비스 계정 키인 경우 anthropic-workspace-id 요청 헤더에 워크스페이스 ID를 설정하세요. 워크스페이스 선택에서 이 SDK의 요청별 옵션을 확인할 수 있습니다.

요청 필드

Anthropic 라이브러리는 요청 필드에 Go 1.24+ encoding/json 릴리스의 omitzero 시맨틱을 사용합니다.

필수 기본형 필드(예: int64 또는 string)에는 `json:"...,required"` 태그가 붙습니다. 이러한 필드는 제로 값이라도 항상 직렬화됩니다.

선택적 기본형 타입은 param.Opt[T]로 래핑됩니다. 이러한 필드는 anthropic.String(string) 또는 anthropic.Int(int64)와 같이 제공되는 생성자로 설정할 수 있습니다.

모든 param.Opt[T], map, slice, struct 또는 문자열 enum은 `json:"...,omitzero"` 태그를 사용합니다. 이들의 제로 값은 생략된 것으로 간주됩니다.

param.IsOmitted(any) 함수로 모든 omitzero 필드의 존재 여부를 확인할 수 있습니다.

p := anthropic.ExampleParams{
	ID:   "id_xxx",                // required property
	Name: anthropic.String("..."), // optional property

	Point: anthropic.Point{
		X: 0,                // required field will serialize as 0
		Y: anthropic.Int(1), // optional field will serialize as 1
		// ... 생략된 선택 필드는 직렬화되지 않습니다
	},

	Origin: anthropic.Origin{}, // the zero value of [Origin] is considered omitted
}

param.Opt[T] 대신 null을 보내려면 param.Null[T]()를 사용하세요. struct T 대신 null을 보내려면 param.NullStruct[T]()를 사용하세요.

p.Name = param.Null[string]()       // 'null' instead of string
p.Point = param.NullStruct[Point]() // 'null' instead of struct

param.IsNull(p.Name)  // true
param.IsNull(p.Point) // true

요청 struct에는 요청 본문에 규격에 맞지 않는 필드를 보낼 수 있는 .SetExtraFields(map[string]any) 메서드가 있습니다. 추가 필드는 키가 일치하는 모든 struct 필드를 덮어씁니다.

struct 대신 사용자 지정 값을 보내려면 제네릭 함수 param.Override를 사용하세요(예: param.Override[anthropic.FooParams](12)).

// API가 특정 타입을 지정하지만,
// 다른 값을 보내고 싶은 경우에는 [SetExtraFields]를 사용하세요:
p.SetExtraFields(map[string]any{
	"x": 0.01, // send "x" as a float instead of int
})

// 객체 대신 숫자를 보냅니다
custom := param.Override[anthropic.FooParams](12)

요청 유니온

유니온은 각 변형(variant)마다 "Of" 접두사가 붙은 필드를 가진 struct로 표현됩니다. 하나의 필드만 제로가 아닌 값을 가질 수 있습니다. 제로가 아닌 필드가 직렬화됩니다.

유니온의 하위 속성은 유니온 struct의 메서드를 통해 접근할 수 있습니다. 이러한 메서드는 값이 있는 경우 해당 값에 대한 포인터를 반환합니다.

// 하나의 필드만 0이 아닌 값을 가질 수 있습니다. 필드 설정 여부는 param.IsOmitted()로 확인하세요
type AnimalUnionParam struct {
	OfCat *Cat `json:",omitzero,inline"`
	OfDog *Dog `json:",omitzero,inline"`
}

animal := AnimalUnionParam{
	OfCat: &Cat{
		Name: "Whiskers",
		Owner: PersonParam{
			Address: AddressParam{Street: "3333 Coyote Hill Rd", ZipCode: 0},
		},
	},
}

// 필드 변경
if address := animal.GetOwner().GetAddress(); address != nil {
	address.ZipCode = 94304
}

매개변수 역직렬화

Param 타입(MessageNewParams 또는 ToolUnionParam처럼 Param으로 끝나는 타입)은 나가는 요청 전용으로 설계되었습니다. JSON으로는 올바르게 마샬링되지만 왕복(round-trip) 역직렬화를 완전히 지원하지는 않습니다. 원시 JSON을 param struct로 언마샬링하면, 기반 JSON이 유효하더라도 OfBashTool20250124와 같은 타입이 지정된 유니온 필드는 nil이 됩니다.

원시 JSON(예: 데이터베이스, 미들웨어 또는 이전 요청에서 가져온 JSON)으로부터 매개변수를 재구성해야 하는 경우, UnmarshalJSON을 호출하여 유니온이 아닌 필드를 채운 다음 param.SetJSON을 사용하여 올바른 재직렬화를 위해 원시 바이트를 첨부하세요:

// params를 직렬화합니다(예: 저장 또는 전달용)
b, err := json.Marshal(original)
if err != nil {
	panic(err)
}

// 나중에 저장된 JSON에서 params를 재구성합니다
var params anthropic.MessageNewParams
if err := params.UnmarshalJSON(b); err != nil {
	panic(err)
}
param.SetJSON(b, &params)

// params.Model 및 기타 스칼라 필드는 UnmarshalJSON으로 채워집니다.
// params.Tools[0].OfBashTool20250124는 nil이지만(union 제한 사항),
// 원시 JSON은 보존됩니다. API 호출을 위해 params를 다시 마샬링하면
// 도구가 올바르게 직렬화됩니다.
b2, _ := json.Marshal(params)
fmt.Println(string(b) == string(b2)) // true

이 사용 사례에서는 더 일반적인 param.Override[T](any)보다 param.SetJSON(v1.20.0부터 사용 가능)이 권장됩니다. 타입 매개변수를 명시할 필요가 없고 왕복 의도를 명확하게 드러내기 때문입니다.

응답 객체

응답 struct의 모든 필드는 일반 값 타입입니다(포인터나 래퍼가 아님). 응답 struct에는 각 속성에 대한 메타데이터를 담은 특수한 JSON 필드도 포함되어 있습니다.

type Animal struct {
	Name   string `json:"name,nullable"`
	Owners int    `json:"owners"`
	Age    int    `json:"age"`
	JSON   struct {
		Name        respjson.Field
		Owners      respjson.Field
		Age         respjson.Field
		ExtraFields map[string]respjson.Field
	} `json:"-"`
}

선택적 데이터를 처리하려면 JSON 필드의 .Valid() 메서드를 사용하세요. .Valid()는 필드가 존재하고, null이 아니며, 성공적으로 언마샬링된 경우 true를 반환합니다.

.Valid()가 false이면 해당 필드는 제로 값을 갖습니다.

raw := `{"owners": 1, "name": null}`

var res Animal
json.Unmarshal([]byte(raw), &res)

// 일반 필드에 접근

res.Owners // 1
res.Name   // ""
res.Age    // 0

// 선택적 필드 확인

res.JSON.Owners.Valid() // true
res.JSON.Name.Valid()   // false
res.JSON.Age.Valid()    // false

// 원시 JSON 값

res.JSON.Owners.Raw()                  // "1"
res.JSON.Name.Raw() == "null"          // true
res.JSON.Name.Raw() == respjson.Null   // true
res.JSON.Age.Raw() == ""               // true
res.JSON.Age.Raw() == respjson.Omitted // true

이러한 .JSON struct에는 struct에 지정되지 않은 JSON 응답의 모든 속성을 담은 ExtraFields map도 포함되어 있습니다. 이는 아직 SDK에 반영되지 않은 API 기능에 유용할 수 있습니다.

body := res.JSON.ExtraFields["my_unexpected_field"].Raw()

응답 유니온

응답에서 유니온은 각 객체 변형의 가능한 모든 필드를 포함하는 평탄화된 struct로 표현됩니다. 변형으로 변환하려면 .AsFooVariant() 메서드를 사용하거나, 있는 경우 .AsAny() 메서드를 사용하세요.

응답 값 유니온에 기본형 값이 포함된 경우, 기본형 필드는 속성과 나란히 위치하지만 Of 접두사가 붙고 json:"...,inline" 태그를 갖습니다.

type AnimalUnion struct {
	// 변형 [Dog], [Cat]에서
	Owner Person `json:"owner"`
	// 변형 [Dog]에서
	DogBreed string `json:"dog_breed"`
	// 변형 [Cat]에서
	CatBreed string `json:"cat_breed"`
	// ...

	JSON struct {
		Owner respjson.Field
		// ...
	} `json:"-"`
}

// animal 변형인 경우
if animal.Owner.Address.ZipCode == "" {
	panic("missing zip code")
}

// 변형에 따라 분기
switch variant := animal.AsAny().(type) {
case Dog:
case Cat:
default:
	panic("unexpected type")
}

오류 처리

API가 성공이 아닌 상태 코드를 반환하면 SDK는 *anthropic.Error 타입의 오류를 반환합니다. 여기에는 요청의 StatusCode, *http.Request, *http.Response 값과 함께 오류 본문의 JSON이 포함됩니다 (SDK의 다른 응답 객체와 매우 유사합니다). 오류에는 응답 헤더의 RequestID도 포함되어 있어 Anthropic 지원팀과 문제를 해결할 때 유용합니다.

오류를 처리하려면 errors.As 패턴을 사용하세요:

_, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
	MaxTokens: 1024,
	Messages: []anthropic.MessageParam{{
		Content: []anthropic.ContentBlockParamUnion{{
			OfText: &anthropic.TextBlockParam{
				Text: "What is a quaternion?",
			},
		}},
		Role: anthropic.MessageParamRoleUser,
	}},
	Model: anthropic.ModelClaudeOpus5_5,
})
if err != nil {
	var apierr *anthropic.Error
	if errors.As(err, &apierr) {
		println("Request ID:", apierr.RequestID)
		println(string(apierr.DumpRequest(true)))  // Prints the serialized HTTP request
		println(string(apierr.DumpResponse(true))) // Prints the serialized HTTP response
	}
	panic(err.Error()) // POST "/v1/messages": 400 Bad Request (Request-ID: req_xxx) { ... }
}

다른 오류가 발생하면 래핑되지 않은 상태로 반환됩니다. 예를 들어 HTTP 전송이 실패하면 *net.OpError를 래핑한 *url.Error를 받을 수 있습니다.

재시도

특정 오류는 기본적으로 짧은 지수 백오프와 함께 자동으로 2회 재시도됩니다. SDK는 기본적으로 모든 연결 오류, 408 Request Timeout, 409 Conflict, 429 Rate Limit, 그리고 500 이상의 Internal 오류를 재시도합니다.

WithMaxRetries 옵션을 사용하여 이를 구성하거나 비활성화할 수 있습니다:

// 모든 요청에 대한 기본값을 구성합니다:
client := anthropic.NewClient(
	option.WithMaxRetries(0), // default is 2
)

// 요청별로 재정의합니다:

	client.Messages.New(
		context.TODO(),
		anthropic.MessageNewParams{
			MaxTokens: 1024,
			Messages: []anthropic.MessageParam{{
				Content: []anthropic.ContentBlockParamUnion{{
					OfText: &anthropic.TextBlockParam{
						Text: "What is a quaternion?",
					},
				}},
				Role: anthropic.MessageParamRoleUser,
			}},
			Model: anthropic.ModelClaudeOpus5_5,
		},
		option.WithMaxRetries(5),
	)

타임아웃

스트리밍이 아닌 Messages 요청은 기본적으로 10분 후에 타임아웃되며, 다른 요청에는 기본 타임아웃이 없습니다. 요청 수명 주기에 대한 타임아웃을 구성하려면 context를 사용하세요.

요청이 재시도되더라도 context 타임아웃은 다시 시작되지 않는다는 점에 유의하세요. 재시도별 타임아웃을 설정하려면 option.WithRequestTimeout()을 사용하세요.

// 모든 재시도를 포함한 요청 전체의 타임아웃을 설정합니다.
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()

	client.Messages.New(
		ctx,
		anthropic.MessageNewParams{
			MaxTokens: 1024,
			Messages: []anthropic.MessageParam{{
				Content: []anthropic.ContentBlockParamUnion{{
					OfText: &anthropic.TextBlockParam{
						Text: "What is a quaternion?",
					},
				}},
				Role: anthropic.MessageParamRoleUser,
			}},
			Model: anthropic.ModelClaudeOpus5_5,
		},
		// 재시도별 타임아웃을 설정합니다
		option.WithRequestTimeout(20*time.Second),
	)

긴 요청

스트리밍을 사용하지 않고 큰 MaxTokens 값을 설정하는 것은 피하세요. 일부 네트워크는 일정 시간이 지나면 유휴 연결을 끊을 수 있으며, 이로 인해 Anthropic으로부터 응답을 받지 못한 채 요청이 실패하거나 타임아웃될 수 있습니다.

또한 이 SDK는 스트리밍이 아닌 요청이 약 10분 이상 걸릴 것으로 예상되는 경우 오류를 반환합니다. .Messages.NewStreaming()을 호출하거나 사용자 지정 타임아웃을 설정하면 이 오류가 비활성화됩니다.

파일 업로드

multipart 요청에서 파일 업로드에 해당하는 요청 매개변수는 io.Reader 타입입니다. io.Reader의 내용은 기본적으로 파일 이름 anonymous_file과 콘텐츠 타입 application/octet-stream을 가진 multipart form 파트로 전송되므로, anthropic.File(reader io.Reader, filename string, contentType string) 헬퍼로 사용자 지정 콘텐츠 타입을 지정하는 것이 권장됩니다. 이 헬퍼는 모든 io.Reader를 적절한 파일 이름과 콘텐츠 타입으로 래핑합니다.

// 파일 시스템의 파일
file, err := os.Open("/path/to/file.json")
anthropic.FileUploadParams{
	File: anthropic.File(file, "custom-name.json", "application/json"),
}

// 문자열로부터 생성한 파일
anthropic.FileUploadParams{
	File: anthropic.File(strings.NewReader("my file contents"), "custom-name.json", "application/json"),
}

파일 이름과 콘텐츠 타입은 io.Reader의 런타임 타입에 Name() string 또는 ContentType() string을 구현하여 사용자 지정할 수도 있습니다. os.File은 Name() string을 구현하므로 os.Open이 반환한 파일은 디스크상의 파일 이름으로 전송된다는 점에 유의하세요.

페이지네이션

이 라이브러리는 페이지네이션된 목록 엔드포인트를 다루기 위한 몇 가지 편의 기능을 제공합니다.

.ListAutoPaging() 메서드를 사용하여 모든 페이지에 걸쳐 항목을 순회할 수 있습니다:

iter := client.Messages.Batches.ListAutoPaging(context.TODO(), anthropic.MessageBatchListParams{
	Limit: anthropic.Int(20),
})
// 필요에 따라 다음 페이지를 자동으로 가져옵니다.
for iter.Next() {
	messageBatch := iter.Current()
	fmt.Println(messageBatch.ID)
}
if err := iter.Err(); err != nil {
	panic(err.Error())
}

또는 간단한 .List() 메서드를 사용하여 단일 페이지를 가져오고, .GetNextPage()와 같은 추가 헬퍼 메서드가 있는 표준 응답 객체를 받을 수 있습니다:

page, err := client.Messages.Batches.List(context.TODO(), anthropic.MessageBatchListParams{
	Limit: anthropic.Int(20),
})
for page != nil {
	for _, batch := range page.Data {
		fmt.Println(batch.ID)
	}
	page, err = page.GetNextPage()
}
if err != nil {
	panic(err.Error())
}

RequestOptions

이 라이브러리는 함수형 옵션 패턴을 사용합니다. option 패키지에 정의된 함수는 RequestOption을 반환하며, 이는 RequestConfig를 변경하는 클로저입니다. 이러한 옵션은 클라이언트에 제공하거나 개별 요청에 제공할 수 있습니다. 예를 들면 다음과 같습니다:

client := anthropic.NewClient(
	// 클라이언트가 보내는 모든 요청에 헤더를 추가합니다
	option.WithHeader("X-Some-Header", "custom_header_info"),
)

client.Messages.New(context.TODO(), // ...,
	// 헤더를 재정의합니다
	option.WithHeader("X-Some-Header", "some_other_custom_header_info"),
	// sjson 구문을 사용하여 요청 본문에 문서화되지 않은 필드를 추가합니다
	option.WithJSONSet("some.json.path", map[string]string{"my": "object"}),
)

디버깅 중에는 요청 옵션 option.WithDebugLog(nil)이 유용할 수 있습니다.

요청 옵션 전체 목록을 참조하세요.

HTTP 클라이언트 사용자 지정

요청 미들웨어(option.WithMiddleware)와 기본 http.Client 교체(option.WithHTTPClient)에 대해서는 SDK 미들웨어를 참조하세요.

플랫폼 통합

Go SDK는 다음 플랫폼을 지원합니다:

  • Agent Platform: import "github.com/anthropics/anthropic-sdk-go/vertex". vertex.WithGoogleAuth(ctx, region, projectID) 또는 vertex.WithCredentials(ctx, region, projectID, creds)를 사용하세요.
  • Bedrock: import "github.com/anthropics/anthropic-sdk-go/bedrock". Messages API Bedrock 엔드포인트(SSE로 스트리밍)에는 bedrock.NewMantleClient를 사용하고, 또는 bedrock.WithLoadDefaultConfig(ctx) / bedrock.WithConfig(cfg)(bedrock-runtime 경로)를 사용하세요. bedrock 패키지를 임포트하면 (패키지 init()을 통해) SDK의 스트리밍 계층에 application/vnd.amazon.eventstream용 디코더가 전역으로 등록됩니다. 이는 bedrock-runtime WithConfig/WithLoadDefaultConfig 경로를 사용하든 NewMantleClient를 사용하든 적용됩니다.
  • Claude Platform on AWS: import anthropicaws "github.com/anthropics/anthropic-sdk-go/aws". 클라이언트를 생성하려면 anthropicaws.ClientConfig 값과 함께 anthropicaws.NewClient(ctx, cfg)를 사용하세요. 구성에서 WorkspaceID를 설정하거나 ANTHROPIC_AWS_WORKSPACE_ID 환경 변수를 설정하세요. anthropicaws 임포트 별칭은 github.com/aws/aws-sdk-go-v2/aws와 함께 임포트할 때 이름 충돌을 방지합니다. 베타로 제공됩니다.
  • Foundry: import "github.com/anthropics/anthropic-sdk-go/foundry". 클라이언트를 생성하려면 foundry.ClientConfig 값과 함께 foundry.NewClient(cfg)를 사용하세요. 구성에서 APIKey(또는 Microsoft Entra ID의 경우 AzureADTokenProvider)와 Resource를 설정하거나, ANTHROPIC_FOUNDRY_API_KEY 및 ANTHROPIC_FOUNDRY_RESOURCE 환경 변수를 설정하세요.

새 프로젝트에는 bedrock.NewMantleClient를 사용하세요. bedrock.WithLoadDefaultConfig/WithConfig는 Bedrock InvokeModel API를 사용하는 기존 애플리케이션을 위해 유지됩니다.

Go SDK는 github.com/anthropics/anthropic-sdk-go/googlecloud 패키지를 통해 Claude Models on Google Cloud (Anthropic managed)도 지원합니다. 클라이언트를 생성하려면 googlecloud.ClientConfig 값과 함께 googlecloud.NewClient(ctx, cfg)를 호출하세요. 이 클라이언트는 베타입니다. config에 WorkspaceID를 설정하거나 ANTHROPIC_GOOGLE_CLOUD_WORKSPACE_ID 환경 변수를 설정하세요. 클라이언트가 워크스페이스 ID를 확인하는 방법은 프로젝트, 위치 및 워크스페이스 확인을 참조하세요.

고급 사용법

원시 응답 데이터 접근(예: 응답 헤더)

option.WithResponseInto() 요청 옵션을 사용하여 원시 HTTP 응답 데이터에 접근할 수 있습니다. 이는 응답 헤더, 상태 코드 또는 기타 세부 정보를 확인해야 할 때 유용합니다.

// HTTP 응답을 저장할 변수를 생성합니다
var response *http.Response
message, err := client.Messages.New(
	context.TODO(),
	anthropic.MessageNewParams{
		MaxTokens: 1024,
		Messages: []anthropic.MessageParam{{
			Content: []anthropic.ContentBlockParamUnion{{
				OfText: &anthropic.TextBlockParam{
					Text: "What is a quaternion?",
				},
			}},
			Role: anthropic.MessageParamRoleUser,
		}},
		Model: anthropic.ModelClaudeOpus5_5,
	},
	option.WithResponseInto(&response),
)
if err != nil {
	// 오류를 처리합니다
}
fmt.Printf("%+v\n", message.Content)

fmt.Printf("Status Code: %d\n", response.StatusCode)
fmt.Printf("Headers: %+#v\n", response.Header)

OpenTelemetry 추적

애플리케이션이 OpenTelemetry 트레이서 프로바이더를 등록하면 SDK는 전송하는 각 요청에 대해 스팬을 내보냅니다. 스팬을 관측성 플랫폼으로 전송하려면 Claude SDK에서 OpenTelemetry 설정하기를 참조하세요.

사용자 지정/문서화되지 않은 요청 보내기

이 라이브러리는 문서화된 API에 편리하게 접근할 수 있도록 타입이 지정되어 있습니다. 문서화되지 않은 엔드포인트, 매개변수 또는 응답 속성에 접근해야 하는 경우에도 라이브러리를 사용할 수 있습니다.

문서화되지 않은 엔드포인트

문서화되지 않은 엔드포인트에 요청을 보내려면 client.Get, client.Post 및 기타 HTTP 동사를 사용할 수 있습니다. 이러한 요청을 보낼 때도 재시도와 같은 클라이언트의 RequestOptions가 적용됩니다.

var (
	// params는 io.Reader, []byte, encoding/json으로 직렬화 가능한 객체,
	// 또는 이 라이브러리에 정의된 "...Params" 구조체일 수 있습니다.
	params map[string]any

	// result는 []byte, *http.Response, encoding/json으로 역직렬화 가능한 객체,
	// 또는 이 라이브러리에 정의된 모델일 수 있습니다.
	result *http.Response
)
err := client.Post(context.Background(), "/unspecified", params, &result)
if err != nil {
	// ...
}

문서화되지 않은 요청 매개변수

문서화되지 않은 매개변수를 사용하여 요청을 보내려면 option.WithQuerySet() 또는 option.WithJSONSet() 메서드를 사용할 수 있습니다.

params := FooNewParams{
	ID: "id_xxxx",
	Data: FooNewParamsData{
		FirstName: anthropic.String("John"),
	},
}
client.Foo.New(context.Background(), params, option.WithJSONSet("data.last_name", "Doe"))

문서화되지 않은 응답 속성

문서화되지 않은 응답 속성에 접근하려면 result.JSON.RawJSON()으로 응답의 원시 JSON을 문자열로 가져오거나, result.JSON.Foo.Raw()로 결과의 특정 필드에 대한 원시 JSON을 가져올 수 있습니다.

응답 struct에 없는 모든 필드는 저장되며 map[string]respjson.Field 타입인 result.JSON.ExtraFields를 통해 접근할 수 있습니다.

시맨틱 버전 관리

이 SDK의 각 메이저 버전은 기본적으로 anthropic-version 헤더에 하나의 API 버전을 보내며, 새로운 API 버전마다 새로운 메이저 버전이 출시됩니다. 2026-10-21을 보내는 첫 번째 메이저 버전은 2.0.0이며, 모듈 경로는 github.com/anthropics/anthropic-sdk-go/v2입니다. API 버전 2026-10-21로 마이그레이션을 참조하세요.

이 패키지는 일반적으로 SemVer 규칙을 따르지만, 일부 하위 호환되지 않는 변경 사항은 마이너 버전으로 릴리스될 수 있습니다:

  1. 기술적으로는 공개되어 있지만 외부 사용을 의도하거나 문서화하지 않은 라이브러리 내부 변경 사항.
  2. 실제로 대다수 사용자에게 영향을 미치지 않을 것으로 예상되는 변경 사항.

원활한 업그레이드 경험을 신뢰할 수 있도록 하위 호환성을 중요하게 다룹니다.

피드백을 환영합니다. 질문, 버그 또는 제안 사항이 있으면 이슈를 열어 주세요.

추가 리소스

Was this page helpful?