Jurassic-2 Chat
AI21 Labs Jurassic on Amazon Bedrock Jurassic 是 AI21 Labs 針對企業所推出的可靠 FM 系列,為複雜的語言生成任務提供動力,例如問題解答、文字生成、搜尋和摘要,應用範圍涵蓋數千個實際應用程式。
先決條件
請參閱關於 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 新增至您的建置檔案。 |
啟用 Jurassic-2
預設情況下,Bedrock Jurassic-2 模型為停用狀態。若要啟用它,請將 spring.ai.bedrock.jurassic2.chat.enabled
屬性設定為 true
。匯出環境變數是設定此組態屬性的一種方式
export SPRING_AI_BEDROCK_JURASSIC2_CHAT_ENABLED=true
聊天屬性
字首 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.jurassic2.chat
是用於設定 Jurassic-2 聊天模型實作的屬性字首。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.bedrock.jurassic2.chat.enabled |
啟用或停用對 Jurassic-2 的支援 |
false |
spring.ai.bedrock.jurassic2.chat.model |
要使用的模型 ID(請參閱下方) |
ai21.j2-mid-v1 |
spring.ai.bedrock.jurassic2.chat.options.temperature |
控制輸出的隨機性。值可以介於 [0.0,1.0] 之間,包含端點值。值越接近 1.0,產生的回應變化性越高;值越接近 0.0,模型產生的回應通常越不令人意外。此值指定後端在呼叫模型時要使用的預設值。 |
0.7 |
spring.ai.bedrock.jurassic2.chat.options.top-p |
取樣時要考慮的權杖最大累積機率。模型使用組合的 Top-k 和 nucleus 取樣。Nucleus 取樣會考慮機率總和至少為 topP 的最小權杖集合。 |
AWS Bedrock 預設值 |
spring.ai.bedrock.jurassic2.chat.options.max-tokens |
指定在產生的回應中要使用的最大權杖數。一旦產生的文字超過 maxTokens,模型就會截斷回應。 |
500 |
請查看 Ai21Jurassic2ChatBedrockApi#Ai21Jurassic2ChatModel 以取得其他模型 ID。支援的另一個值為 ai21.j2-ultra-v1
。模型 ID 值也可以在AWS Bedrock 文件中找到基本模型 ID。
所有以 spring.ai.bedrock.jurassic2.chat.options 為字首的屬性都可以在執行階段被覆寫,方法是將請求特定的執行階段選項新增至 Prompt 呼叫。 |
執行階段選項
BedrockAi21Jurassic2ChatOptions.java 提供了模型組態,例如 temperature、topP、maxTokens 等。
在啟動時,可以使用 BedrockAi21Jurassic2ChatModel(api, options)
建構函式或 spring.ai.bedrock.jurassic2.chat.options.*
屬性來設定預設選項。
在執行階段,您可以透過將新的、請求特定的選項新增至 Prompt
呼叫來覆寫預設選項。例如,若要覆寫特定請求的預設 temperature
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
BedrockAi21Jurassic2ChatOptions.builder()
.withTemperature(0.4)
.build()
));
除了模型特定的 BedrockAi21Jurassic2ChatOptions 之外,您還可以使用可攜式的 ChatOptions 實例,該實例是使用 ChatOptionsBuilder#builder() 建立的。 |
範例控制器
建立新的 Spring Boot 專案,並將 spring-ai-bedrock-ai-spring-boot-starter
新增至您的 pom(或 gradle)相依性。
在 src/main/resources
目錄下新增 application.properties
檔案,以啟用和設定 Jurassic-2 聊天模型
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.jurassic2.chat.enabled=true
spring.ai.bedrock.jurassic2.chat.options.temperature=0.8
將 regions 、access-key 和 secret-key 替換為您的 AWS 憑證。 |
這將建立一個 BedrockAi21Jurassic2ChatModel
實作,您可以將其注入到您的類別中。以下是一個簡單的 @Controller
類別範例,該類別使用聊天模型進行文字生成。
@RestController
public class ChatController {
private final BedrockAi21Jurassic2ChatModel chatModel;
@Autowired
public ChatController(BedrockAi21Jurassic2ChatModel 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));
}
}
手動設定
BedrockAi21Jurassic2ChatModel 實作了 ChatModel
,並使用低階用戶端連線到 Bedrock Jurassic-2 服務。
將 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 新增至您的建置檔案。 |
接下來,建立一個 BedrockAi21Jurassic2ChatModel 並將其用於文字生成
Ai21Jurassic2ChatBedrockApi api = new Ai21Jurassic2ChatBedrockApi(Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(),
EnvironmentVariableCredentialsProvider.create(),
Region.US_EAST_1.id(),
new ObjectMapper(),
Duration.ofMillis(1000L));
BedrockAi21Jurassic2ChatModel chatModel = new BedrockAi21Jurassic2ChatModel(this.api,
BedrockAi21Jurassic2ChatOptions.builder()
.withTemperature(0.5)
.withMaxTokens(100)
.withTopP(0.9).build());
ChatResponse response = this.chatModel.call(
new Prompt("Generate the names of 5 famous pirates."));
低階用戶端
Ai21Jurassic2ChatBedrockApi 在 AWS Bedrock Jurassic-2 和 Jurassic-2 Chat 模型之上提供了一個輕量級 Java 用戶端。
Ai21Jurassic2ChatBedrockApi
支援 ai21.j2-mid-v1
和 ai21.j2-ultra-v1
模型,並且僅支援同步 (chatCompletion()
)。
以下是如何以程式設計方式使用 API 的簡單程式碼片段
Ai21Jurassic2ChatBedrockApi jurassic2ChatApi = new Ai21Jurassic2ChatBedrockApi(
Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(),
Region.US_EAST_1.id(),
Duration.ofMillis(1000L));
Ai21Jurassic2ChatRequest request = Ai21Jurassic2ChatRequest.builder("Hello, my name is")
.withTemperature(0.9)
.withTopP(0.9)
.withMaxTokens(20)
.build();
Ai21Jurassic2ChatResponse response = this.jurassic2ChatApi.chatCompletion(this.request);
請參閱 Ai21Jurassic2ChatBedrockApi.java 的 JavaDoc 以取得更多資訊。