Bedrock Anthropic 3
Anthropic Claude (英語) は、さまざまなアプリケーションで使用できる基礎的な AI モデルのファミリです。
Claude モデルには以下の高度な機能があります
200k トークンのコンテキストウィンドウ: Claude は 200,000 に匹敵する豊富なトークン容量を誇り、技術ドキュメント、コードベース、文学作品などのアプリケーションで広範な情報を処理するのに最適です。
サポートされているタスク: Claude の多用途性は、要約、Q&A、傾向予測、ドキュメント比較などのタスクにおよび、対話からコンテンツ生成まで幅広いアプリケーションを可能にします。
AI 安全機能: Anthropic の安全性研究に基づいて構築された Claude は、インタラクションにおける有用性、誠実さ、無害性を優先し、ブランドリスクを軽減し、責任ある AI の動作を保証します。
AWS Bedrock Anthropic モデルページ [Amazon] および Amazon Bedrock ユーザーガイド には、AWS ホストモデルの使用方法に関する詳細情報が含まれています。
Anthropic の Claude 2 と 3 つのモデルは、Anthropic 独自のクラウドプラットフォームでも直接利用できます。Spring AI は、アクセスするための専用の Anthropic Claude クライアントを提供します。 |
前提条件
API アクセスの設定については、Spring Amazon Bedrock に関する AI ドキュメントを参照してください。
自動構成
spring-ai-bedrock-ai-spring-boot-starter
依存関係をプロジェクトの Maven pom.xml
ファイルに追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bedrock-ai-spring-boot-starter</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
Anthropic チャットを有効にする
デフォルトでは、Anthropic モデルは無効になっています。これを有効にするには、spring.ai.bedrock.anthropic3.chat.enabled
プロパティを true
に設定します。環境変数のエクスポートは、この構成プロパティを設定する 1 つの方法です。
export SPRING_AI_BEDROCK_ANTHROPIC3_CHAT_ENABLED=true
チャットのプロパティ
プレフィックス spring.ai.bedrock.aws
は、AWS Bedrock への接続を設定するためのプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.bedrock.aws.region | 使用する AWS リージョン。 | 米国東部 -1 |
spring.ai.bedrock.aws.timeout | 使用する AWS タイムアウト。 | 5 分 |
spring.ai.bedrock.aws.access-key | AWS アクセスキー。 | - |
spring.ai.bedrock.aws.secret-key | AWS の秘密鍵。 | - |
プレフィックス spring.ai.bedrock.anthropic3.chat
は、Claude のチャットモデル実装を構成するプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.bedrock.anthropic3.chat.enabled | Bedrock Anthropic チャットモデルを有効にします。デフォルトでは無効になっています | false |
spring.ai.bedrock.anthropic3.chat.model | 使用するモデル ID。同期レスポンスとストリーミングレスポンスの両方で、 |
|
spring.ai.bedrock.anthropic3.chat.options.temperature | 出力のランダム性を制御します。値の範囲は [0.0,1.0] です | 0.8 |
spring.ai.bedrock.anthropic3.chat.options.top-p | サンプリング時に考慮するトークンの最大累積確率。 | AWS Bedrock のデフォルト |
spring.ai.bedrock.anthropic3.chat.options.top-k | 生成が次のトークンを生成するために使用するトークンの選択肢の数を指定します。 | AWS Bedrock のデフォルト |
spring.ai.bedrock.anthropic3.chat.options.stop-sequences | ジェネレーティブが認識するシーケンスを最大 4 つ設定します。停止シーケンスの後、生成はさらなるトークンの生成を停止します。返されるテキストには停止シーケンスは含まれません。 | 10 |
spring.ai.bedrock.anthropic3.chat.options.anthropic-version | 使用するジェネレーティブのバージョン。 | bedrock-2023-05-31 |
spring.ai.bedrock.anthropic3.chat.options.max-tokens | 生成されるレスポンスで使用するトークンの最大数を指定します。この最大値に達する前にモデルが停止する可能性があることに注意してください。このパラメーターは、生成するトークンの絶対最大数のみを指定します。最適なパフォーマンスを得るために、4,000 トークンの制限を推奨します。 | 500 |
他のモデル ID については、AnthropicChatModel [GitHub] (英語) を参照してください。サポートされている値は次のとおりです: anthropic.claude-instant-v1
、anthropic.claude-v2
、anthropic.claude-v2:1
. モデル ID 値は基本モデル ID に関する AWS Bedrock ドキュメント [Amazon] にもあります。
spring.ai.bedrock.anthropic3.chat.options というプレフィックスが付いたすべてのプロパティは、リクエスト固有のランタイムオプションを Prompt 呼び出しに追加することで実行時にオーバーライドできます。 |
ランタイムオプション
Anthropic3ChatOptions.java [GitHub] (英語) は、温度、topK、topP などのモデル構成を提供します。
起動時に、BedrockAnthropicChatModel(api, options)
コンストラクターまたは spring.ai.bedrock.anthropic3.chat.options.*
プロパティを使用してデフォルトのオプションを構成できます。
実行時に、新しいリクエスト固有のオプションを Prompt
呼び出しに追加することで、デフォルトのオプションをオーバーライドできます。たとえば、特定のリクエストのデフォルトの温度をオーバーライドするには、次のようにします。
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
Anthropic3ChatOptions.builder()
.withTemperature(0.4)
.build()
));
モデル固有の AnthropicChatOptions [GitHub] (英語) に加えて、ChatOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ChatOptions [GitHub] (英語) インスタンスを使用できます。 |
マルチモーダル
マルチモダリティとは、テキスト、イメージ、音声、その他のデータ形式を含むさまざまなソースからの情報を同時に理解して処理するモデルの機能を指します。このパラダイムは、AI モデルの大幅な進歩を表しています。
現在、Anthropic、Claude 3 は、images
の base64
ソース型と、image/jpeg
、image/png
、image/gif
、image/webp
メディア型をサポートしています。詳細については、ビジョンガイド (英語) を参照してください。
Spring AI の Message
インターフェースは、メディア型を導入することでマルチモーダル AI モデルをサポートします。この型には、生のメディアデータに Spring の org.springframework.util.MimeType
および java.lang.Object
を使用して、メッセージ内のメディア添付ファイルに関するデータと情報が含まれます。
以下は、Anthropic3ChatModelIT.java [GitHub] (英語) から抽出された簡単なコード例で、ユーザーテキストとイメージの組み合わせを示しています。
byte[] imageData = new ClassPathResource("/test.png").getContentAsByteArray();
var userMessage = new UserMessage("Explain what do you see o this picture?",
List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageData)));
ChatResponse response = chatModel.call(new Prompt(List.of(userMessage)));
assertThat(response.getResult().getOutput().getContent()).contains("bananas", "apple", "basket");
入力イメージ test.png
:
「この写真に何が写っているか説明してください」というテキストメッセージとともに、次のようなレスポンスが生成されます。
The image shows a close-up view of a wire fruit basket containing several pieces of fruit. The basket appears to be made of thin metal wires formed into a round shape with an elevated handle. Inside the basket, there are a few yellow bananas and a couple of red apples or possibly tomatoes. The vibrant colors of the fruit contrast nicely against the metallic tones of the wire basket. The shallow depth of field in the photograph puts the focus squarely on the fruit in the foreground, while the basket handle extending upwards is slightly blurred, creating a pleasing bokeh effect in the background. The composition and lighting give the image a clean, minimalist aesthetic that highlights the natural beauty and freshness of the fruit displayed in this elegant wire basket.
サンプルコントローラー
新しい Spring Boot プロジェクトを作成し、spring-ai-bedrock-ai-spring-boot-starter
を pom (または gradle) の依存関係に追加します。
src/main/resources
ディレクトリに application.properties
ファイルを追加して、Anthropic チャットモデルを有効にして構成します。
spring.ai.bedrock.aws.region=eu-central-1
spring.ai.bedrock.aws.timeout=1000ms
spring.ai.bedrock.aws.access-key=${AWS_ACCESS_KEY_ID}
spring.ai.bedrock.aws.secret-key=${AWS_SECRET_ACCESS_KEY}
spring.ai.bedrock.anthropic3.chat.enabled=true
spring.ai.bedrock.anthropic3.chat.options.temperature=0.8
spring.ai.bedrock.anthropic3.chat.options.top-k=15
regions 、access-key 、secret-key を AWS 認証情報に置き換えます。 |
これにより、クラスに挿入できる BedrockAnthropicChatModel
実装が作成されます。以下は、テキスト生成にチャットモデルを使用する単純な @Controller
クラスの例です。
@RestController
public class ChatController {
private final BedrockAnthropic3ChatModel chatModel;
@Autowired
public ChatController(BedrockAnthropic3ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatModel.call(message));
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatModel.stream(prompt);
}
}
手動構成
BedrockAnthropic3ChatModel [GitHub] (英語) は ChatModel
および StreamingChatModel
を実装し、低レベル Anthropic3ChatBedrockApi クライアントを使用して Bedrock Anthropic サービスに接続します。
spring-ai-bedrock
依存関係をプロジェクトの Maven pom.xml
ファイルに追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bedrock</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
次に、BedrockAnthropic3ChatModel [GitHub] (英語) を作成し、テキスト生成に使用します。
Anthropic3ChatBedrockApi anthropicApi = new Anthropic3ChatBedrockApi(
AnthropicChatBedrockApi.AnthropicModel.CLAUDE_V3_SONNET.id(),
EnvironmentVariableCredentialsProvider.create(),
Region.US_EAST_1.id(),
new ObjectMapper(),
Duration.ofMillis(1000L));
BedrockAnthropic3ChatModel chatModel = new BedrockAnthropic3ChatModel(anthropicApi,
AnthropicChatOptions.builder()
.withTemperature(0.6f)
.withTopK(10)
.withTopP(0.8f)
.withMaxTokensToSample(100)
.withAnthropicVersion(AnthropicChatBedrockApi.DEFAULT_ANTHROPIC_VERSION)
.build());
ChatResponse response = chatModel.call(
new Prompt("Generate the names of 5 famous pirates."));
// Or with streaming responses
Flux<ChatResponse> response = chatModel.stream(
new Prompt("Generate the names of 5 famous pirates."));
低レベル Anthropic3ChatBedrockApi クライアント
Anthropic3ChatBedrockApi [GitHub] (英語) は、AWS Bedrock Anthropic Claude 形 [Amazon] 上にある軽量の Java クライアントを提供します。
クライアントは、同期 (例: chatCompletion()
) およびストリーミング (例: chatCompletionStream()
) レスポンスの両方に対して、anthropic.claude-3-opus-20240229-v1:0
、anthropic.claude-3-sonnet-20240229-v1:0
、anthropic.claude-3-haiku-20240307-v1:0
およびレガシー anthropic.claude-v2
、anthropic.claude-v2:1
、anthropic.claude-instant-v1
モデルをサポートします。
API をプログラムで使用する方法の簡単なスニペットを次に示します。
Anthropic3ChatBedrockApi anthropicChatApi = new Anthropic3ChatBedrockApi(
AnthropicModel.CLAUDE_V2.id(), Region.EU_CENTRAL_1.id(), Duration.ofMillis(1000L));
AnthropicChatRequest request = AnthropicChatRequest
.builder(String.format(Anthropic3ChatBedrockApi.PROMPT_TEMPLATE, "Name 3 famous pirates"))
.withTemperature(0.8f)
.withMaxTokensToSample(300)
.withTopK(10)
.build();
// Sync request
AnthropicChatResponse response = anthropicChatApi.chatCompletion(request);
// Streaming request
Flux<AnthropicChatResponse> responseStream = anthropicChatApi.chatCompletionStream(request);
List<AnthropicChatResponse> responses = responseStream.collectList().block();
詳細については、Anthropic3ChatBedrockApi.java [GitHub] (英語) の JavaDoc を参照してください。