Titan Chat
Amazon Titan 基礎模型 (FM) 透過完全託管的 API,為客戶提供廣泛的高效能影像、多模態嵌入和文字模型選擇。Amazon Titan 模型由 AWS 建立,並在大型資料集上預先訓練,使其成為功能強大、通用型的模型,旨在支援各種使用案例,同時也支援負責任地使用 AI。您可以直接使用這些模型,或使用您自己的資料私下自訂它們。
AWS Bedrock Titan 模型頁面和Amazon Bedrock 使用者指南包含如何使用 AWS 託管模型的詳細資訊。
先決條件
請參閱關於 Amazon Bedrock 的 Spring AI 文件,以設定 API 存取權。
自動組態
將 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 新增至您的建置檔案。 |
啟用 Titan Chat
預設情況下,Titan 模型已停用。若要啟用它,請將 spring.ai.bedrock.titan.chat.enabled
屬性設定為 true
。匯出環境變數是設定此組態屬性的一種方式
export SPRING_AI_BEDROCK_TITAN_CHAT_ENABLED=true
Chat 屬性
字首 spring.ai.bedrock.aws
是用於組態連線至 AWS Bedrock 的屬性字首。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.bedrock.aws.region |
要使用的 AWS 區域。 |
us-east-1 |
spring.ai.bedrock.aws.timeout |
要使用的 AWS 超時。 |
5m |
spring.ai.bedrock.aws.access-key |
AWS 存取金鑰。 |
- |
spring.ai.bedrock.aws.secret-key |
AWS 秘密金鑰。 |
- |
字首 spring.ai.bedrock.titan.chat
是用於組態 Titan 的 chat 模型實作的屬性字首。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.bedrock.titan.chat.enabled |
啟用 Bedrock Titan chat 模型。預設為停用 |
false |
spring.ai.bedrock.titan.chat.model |
要使用的模型 ID。請參閱 TitanChatBedrockApi#TitanChatModel 以取得支援的模型。 |
amazon.titan-text-lite-v1 |
spring.ai.bedrock.titan.chat.options.temperature |
控制輸出的隨機性。值可以介於 [0.0,1.0] 之間 |
0.7 |
spring.ai.bedrock.titan.chat.options.topP |
在取樣時要考慮的符記最大累積機率。 |
AWS Bedrock 預設值 |
spring.ai.bedrock.titan.chat.options.stopSequences |
組態最多四個產生器可辨識的序列。在停止序列之後,產生器會停止產生更多符記。傳回的文字不包含停止序列。 |
AWS Bedrock 預設值 |
spring.ai.bedrock.titan.chat.options.maxTokenCount |
指定要在產生的回應中使用的符記最大數量。請注意,模型可能會在達到此最大值之前停止。此參數僅指定要產生的符記絕對最大數量。我們建議限制為 4,000 個符記以獲得最佳效能。 |
AWS Bedrock 預設值 |
請查看 TitanChatBedrockApi#TitanChatModel 以取得其他模型 ID。支援的值為:amazon.titan-text-lite-v1
、amazon.titan-text-express-v1
和 amazon.titan-text-premier-v1:0
。模型 ID 值也可以在 AWS Bedrock 文件中找到基本模型 ID。
所有字首為 spring.ai.bedrock.titan.chat.options 的屬性都可以在執行階段透過將請求特定的執行階段選項新增至 Prompt 呼叫來覆寫。 |
執行階段選項
BedrockTitanChatOptions.java 提供模型組態,例如 temperature、topP 等。
在啟動時,可以使用 BedrockTitanChatModel(api, options)
建構函式或 spring.ai.bedrock.titan.chat.options.*
屬性來組態預設選項。
在執行階段,您可以透過將新的、請求特定的選項新增至 Prompt
呼叫來覆寫預設選項。例如,若要覆寫特定請求的預設 temperature
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
BedrockTitanChatOptions.builder()
.withTemperature(0.4)
.build()
));
除了模型特定的 BedrockTitanChatOptions 之外,您還可以使用可攜式的 ChatOptions 實例,使用 ChatOptionsBuilder#builder() 建立。 |
範例控制器
建立新的 Spring Boot 專案,並將 spring-ai-bedrock-ai-spring-boot-starter
新增至您的 pom (或 gradle) 相依性。
在 src/main/resources
目錄下新增 application.properties
檔案,以啟用和組態 Titan chat 模型
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.titan.chat.enabled=true
spring.ai.bedrock.titan.chat.options.temperature=0.8
將 regions 、access-key 和 secret-key 取代為您的 AWS 憑證。 |
這將建立一個 BedrockTitanChatModel
實作,您可以將其注入到您的類別中。以下是一個簡單的 @Controller
類別範例,該類別使用 chat 模型進行文字產生。
@RestController
public class ChatController {
private final BedrockTitanChatModel chatModel;
@Autowired
public ChatController(BedrockTitanChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.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 this.chatModel.stream(prompt);
}
}
手動組態
BedrockTitanChatModel 實作 ChatModel
和 StreamingChatModel
,並使用 Low-level TitanChatBedrockApi Client 連線至 Bedrock Titanic 服務。
將 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 新增至您的建置檔案。 |
接下來,建立 BedrockTitanChatModel 並將其用於文字產生
TitanChatBedrockApi titanApi = new TitanChatBedrockApi(
TitanChatModel.TITAN_TEXT_EXPRESS_V1.id(),
EnvironmentVariableCredentialsProvider.create(),
Region.US_EAST_1.id(),
new ObjectMapper(),
Duration.ofMillis(1000L));
BedrockTitanChatModel chatModel = new BedrockTitanChatModel(this.titanApi,
BedrockTitanChatOptions.builder()
.withTemperature(0.6)
.withTopP(0.8)
.withMaxTokenCount(100)
.build());
ChatResponse response = this.chatModel.call(
new Prompt("Generate the names of 5 famous pirates."));
// Or with streaming responses
Flux<ChatResponse> response = this.chatModel.stream(
new Prompt("Generate the names of 5 famous pirates."));
Low-level TitanChatBedrockApi Client
TitanChatBedrockApi 提供在 AWS Bedrock Bedrock Titan 模型之上的輕量級 Java 用戶端。
以下類別圖說明了 TitanChatBedrockApi 介面和建置區塊

用戶端支援 amazon.titan-text-lite-v1
和 amazon.titan-text-express-v1
模型,用於同步 (例如 chatCompletion()
) 和串流 (例如 chatCompletionStream()
) 回應。
以下是一個簡單的程式碼片段,說明如何以程式設計方式使用 api
TitanChatBedrockApi titanBedrockApi = new TitanChatBedrockApi(TitanChatCompletionModel.TITAN_TEXT_EXPRESS_V1.id(),
Region.US_EAST_1.id(), Duration.ofMillis(1000L));
TitanChatRequest titanChatRequest = TitanChatRequest.builder("Give me the names of 3 famous pirates?")
.withTemperature(0.5)
.withTopP(0.9)
.withMaxTokenCount(100)
.withStopSequences(List.of("|"))
.build();
TitanChatResponse response = this.titanBedrockApi.chatCompletion(this.titanChatRequest);
Flux<TitanChatResponseChunk> response = this.titanBedrockApi.chatCompletionStream(this.titanChatRequest);
List<TitanChatResponseChunk> results = this.response.collectList().block();
請遵循 TitanChatBedrockApi 的 JavaDoc 以取得更多資訊。