Llama Chat
Meta 的 Llama Chat 是 Llama 大型語言模型系列的一部分。它擅長對話式應用,參數規模從 70 億到 700 億不等。Llama Chat 利用公共數據集和超過 100 萬個人工標註,提供具備上下文意識的對話。
Llama-Chat 在來自公共數據源的 2 兆個 tokens 上進行訓練,提供廣泛的知識以進行深入的對話。嚴格的測試,包括超過 1,000 小時的紅隊演練和標註,確保了效能和安全性,使其成為 AI 驅動對話的可靠選擇。
AWS Llama 模型頁面 和 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 新增到您的建置檔案中。 |
啟用 Llama Chat 支援
預設情況下,Bedrock Llama 模型是停用的。若要啟用它,請將 spring.ai.bedrock.llama.chat.enabled
屬性設定為 true
。匯出環境變數是設定此組態屬性的一種方式
export SPRING_AI_BEDROCK_LLAMA_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.llama.chat
是配置 Llama 聊天模型實作的屬性前綴。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.bedrock.llama.chat.enabled |
啟用或停用 Llama 支援 |
false |
spring.ai.bedrock.llama.chat.model |
要使用的模型 ID(請參閱下方) |
meta.llama3-70b-instruct-v1:0 |
spring.ai.bedrock.llama.chat.options.temperature |
控制輸出的隨機性。值可以介於 [0.0,1.0] 之間,包含端點值。值越接近 1.0,產生的回應就越多元;值越接近 0.0,模型的回應通常越不令人意外。此值指定後端在呼叫模型時要使用的預設值。 |
0.7 |
spring.ai.bedrock.llama.chat.options.top-p |
取樣時要考慮的 tokens 的最大累積機率。模型使用組合的 Top-k 和 nucleus sampling。Nucleus sampling 考慮機率總和至少為 topP 的最小 tokens 集合。 |
AWS Bedrock 預設值 |
spring.ai.bedrock.llama.chat.options.max-gen-len |
指定在產生的回應中要使用的 tokens 最大數量。一旦產生的文字超過 maxGenLen,模型將會截斷回應。 |
300 |
請查看 LlamaChatBedrockApi#LlamaChatModel 以取得其他模型 ID。另一個支援的值是 meta.llama2-13b-chat-v1
。模型 ID 值也可以在 AWS Bedrock 文件中找到基礎模型 ID。
所有以 spring.ai.bedrock.llama.chat.options 為前綴的屬性都可以在執行時被覆寫,方法是將請求特定的 執行期選項 新增到 Prompt 呼叫中。 |
執行期選項
BedrockLlChatOptions.java 提供了模型組態,例如 temperature、topK、topP 等。
在啟動時,可以使用 BedrockLlamaChatModel(api, options)
建構子或 spring.ai.bedrock.llama.chat.options.*
屬性來配置預設選項。
在執行時,您可以透過將新的、請求特定的選項新增到 Prompt
呼叫中來覆寫預設選項。例如,要覆寫特定請求的預設 temperature
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
BedrockLlamaChatOptions.builder()
.withTemperature(0.4)
.build()
));
除了模型特定的 BedrockLlamaChatOptions 之外,您還可以使用的可攜式 ChatOptions 實例,使用 ChatOptionsBuilder#builder() 建立。 |
範例控制器
建立 一個新的 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.llama.chat.enabled=true
spring.ai.bedrock.llama.chat.options.temperature=0.8
將 regions 、access-key 和 secret-key 替換為您的 AWS 憑證。 |
這將建立一個 BedrockLlamaChatModel
實作,您可以將其注入到您的類別中。以下是一個簡單的 @Controller
類別範例,該類別使用聊天模型進行文字生成。
@RestController
public class ChatController {
private final BedrockLlamaChatModel chatModel;
@Autowired
public ChatController(BedrockLlamaChatModel 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);
}
}
手動配置
BedrockLlamaChatModel 實作了 ChatModel
和 StreamingChatModel
,並使用 底層 LlamaChatBedrockApi 用戶端 連接到 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 新增到您的建置檔案中。 |
接下來,建立一個 BedrockLlamaChatModel 並使用它進行文字生成
LlamaChatBedrockApi api = new LlamaChatBedrockApi(LlamaChatModel.LLAMA2_70B_CHAT_V1.id(),
EnvironmentVariableCredentialsProvider.create(),
Region.US_EAST_1.id(),
new ObjectMapper(),
Duration.ofMillis(1000L));
BedrockLlamaChatModel chatModel = new BedrockLlamaChatModel(this.api,
BedrockLlamaChatOptions.builder()
.withTemperature(0.5)
.withMaxGenLen(100)
.withTopP(0.9).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."));
底層 LlamaChatBedrockApi 用戶端
LlamaChatBedrockApi 提供了一個基於 AWS Bedrock 的輕量級 Java 用戶端 Meta Llama 2 和 Llama 2 Chat 模型。
以下類別圖說明了 LlamaChatBedrockApi 介面和建構區塊

LlamaChatBedrockApi 支援 meta.llama3-8b-instruct-v1:0
、meta.llama3-70b-instruct-v1:0
、meta.llama2-13b-chat-v1
和 meta.llama2-70b-chat-v1
模型,用於同步(例如 chatCompletion()
)和串流(例如 chatCompletionStream()
)回應。
以下是一個簡單的程式碼片段,說明如何以程式方式使用 API
LlamaChatBedrockApi llamaChatApi = new LlamaChatBedrockApi(
LlamaChatModel.LLAMA3_70B_INSTRUCT_V1.id(),
Region.US_EAST_1.id(),
Duration.ofMillis(1000L));
LlamaChatRequest request = LlamaChatRequest.builder("Hello, my name is")
.withTemperature(0.9)
.withTopP(0.9)
.withMaxGenLen(20)
.build();
LlamaChatResponse response = this.llamaChatApi.chatCompletion(this.request);
// Streaming response
Flux<LlamaChatResponse> responseStream = this.llamaChatApi.chatCompletionStream(this.request);
List<LlamaChatResponse> responses = this.responseStream.collectList().block();
請參閱 LlamaChatBedrockApi.java 的 JavaDoc 以取得更多資訊。