链接:https://developers.generativeai.google/api/rest/generativelanguage[创造性语言] PaLM API允许开发者使用PaLM模型构建生成型AI应用。大型语言模型(LLMs)是一种强大而多功能的机器学习模型,它使计算机能够通过一系列提示理解和生成自然语言。PaLM API基于谷歌的下一代LLM,即PaLM。它擅长执行各种不同的任务,如代码生成、推理和写作。您可以使用PaLM API为内容生成、对话代理、摘要和分类系统等用例构建生成型AI应用。
基于链接:https://developers.generativeai.google/api/rest/generativelanguage/models[模型 REST API]。
先决条件
要访问PaLM2 REST API,你需要从链接:https://makersuite.google.com/app/apikey[makersuite] 获取一个访问API密钥。
Note
|
目前PaLM API在美国以外地区不可用,但你可以使用VPN进行测试。 |
Spring AI项目定义了一个名为`spring.ai.vertex.ai.api-key`的配置属性,你应该将其设置为获取的`API Key`的值。导出一个环境变量是设置该配置属性的一种方式:
export SPRING_AI_VERTEX_AI_API_KEY=<INSERT KEY HERE>
自动配置
Spring AI为VertexAI聊天客户端提供了Spring Boot自动配置。要启用它,请将以下依赖添加到您项目的Maven `pom.xml`文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2-spring-boot-starter</artifactId>
</dependency>
或者添加到你的Gradle build.gradle
构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-vertex-ai-palm2-spring-boot-starter'
}
Tip
|
请参考依赖管理章节,以将Spring AI BOM添加到你的构建文件中。 |
聊天属性
前缀`spring.ai.vertex.ai`被用作属性前缀,让你能够连接到VertexAI。
属性 |
描述 |
默认值 |
-------------------------------------- |
---------------- |
|
--------------------------------------------------------------- |
spring.ai.vertex.ai.ai.base-url |
|
连接的URL地址 |
||
spring.ai.vertex.ai.api-key |
API密钥 |
- |
前缀 spring.ai.vertex.ai.chat
是一个属性前缀,它允许你为 VertexAI Chat 配置聊天客户端的实现。
Property | Description | Default |
---|---|---|
spring.ai.vertex.ai.chat.enabled |
启用 Vertex AI PaLM API 聊天客户端。 |
true |
spring.ai.vertex.ai.chat.model |
这是要使用的 Vertex 聊天模型 |
chat-bison-001 |
spring.ai.vertex.ai.chat.options.temperature |
控制输出的随机性。值可以在 [0.0,1.0] 范围内变动,包含边界。接近 1.0 的值将生成更多样化的响应,而接近 0.0 的值通常会导致来自生成器的响应较少出乎意料。此值指定后端在进行呼叫生成器时使用的默认值。 |
0.7 |
spring.ai.vertex.ai.chat.options.topK |
在抽样时考虑的最大令牌数。生成器使用结合了 Top-k 和核心抽样的方法。Top-k 抽样考虑最可能的 topK 个令牌集合。 |
20 |
spring.ai.vertex.ai.chat.options.topP |
在抽样时考虑的令牌的最大累积概率。生成器使用结合了 Top-k 和核心抽样的方法。核心抽样考虑最小的令牌集合,其概率和至少为 topP。 |
- |
spring.ai.vertex.ai.chat.options.candidateCount |
要返回的生成响应消息的数量。此值必须在 [1, 8] 之间,包含边界。默认为 1。 |
1 |
Tip
|
所有以 spring.ai.vertex.ai.chat.options 为前缀的属性都可以在运行时被覆盖,方法是在 Prompt 调用时添加一个特定于请求的 [chat-options]。
|
运行时选项
''VertexAiPaLm2ChatOptions.java'' 提供了模型配置,例如温度(temperature)、topK等。
在启动时,可以使用`VertexAiPaLm2ChatClient(api, options)`构造函数或`spring.ai.vertex.ai.chat.options.*`属性来配置默认选项。
在运行时,你可以通过向`Prompt`调用添加新的、请求特定的选项来覆盖默认选项。例如,为了覆盖特定请求的默认温度:
ChatResponse response = chatClient.call(
new Prompt(
"Generate the names of 5 famous pirates.",
VertexAiPaLm2ChatOptions.builder()
.withTemperature(0.4)
.build()
));
Tip
|
除了特定于模型的 VertexAiPaLm2ChatOptions ,您还可以使用可移植的 ChatOptions 实例,该实例通过 ChatOptionsBuilder#builder() 创建。
|
样本控制器
访问'''https://start.spring.io/''' [创建] 一个新的Spring Boot项目,并将 spring-ai-vertex-ai-palm2-spring-boot-starter
添加到你的pom(或gradle)依赖中。
在`src/main/resources`目录下添加一个`application.properties`文件,以启用并配置VertexAi聊天客户端:
spring.ai.vertex.ai.api-key=YOUR_API_KEY
spring.ai.vertex.ai.chat.model=chat-bison-001
spring.ai.vertex.ai.chat.options.temperature=0.5
Tip
|
将 api-key 替换为您的 VertexAI 凭证。
|
这将创建一个`VertexAiPaLm2ChatClient`实现,你可以将其注入到你的类中。这里有一个简单的`@Controller`类的例子,它使用聊天客户端进行文本生成。
@RestController
public class ChatController {
private final VertexAiPaLm2ChatClient chatClient;
@Autowired
public ChatController(VertexAiPaLm2ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatClient.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 chatClient.stream(prompt);
}
}
手动配置
The VertexAiPaLm2ChatClient 实现了 ChatClient
接口,并使用 [low-level-api] 连接到 VertexAI 服务。
将`spring-ai-vertex-ai-palm2`依赖添加到您的项目的Maven `pom.xml`文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2</artifactId>
</dependency>
或者添加到你的Gradle build.gradle
构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-vertex-ai-palm'
}
Tip
|
请参考依赖管理章节,以将Spring AI BOM添加到你的构建文件中。 |
接下来,创建一个`VertexAiPaLm2ChatClient`并使用它来进行文本生成:
VertexAiPaLm2Api vertexAiApi = new VertexAiPaLm2Api(< YOUR PALM_API_KEY>);
var chatClient = new VertexAiPaLm2ChatClient(vertexAiApi,
VertexAiPaLm2ChatOptions.builder()
.withTemperature(0.4)
.build());
ChatResponse response = chatClient.call(
new Prompt("Generate the names of 5 famous pirates."));
VertexAiPaLm2ChatOptions` 提供了聊天请求的配置信息。VertexAiPaLm2ChatOptions.Builder
是一个流畅的选项构建器。
Low-level VertexAiPaLm2Api 客户端
[VertexAiPaLm2Api]是一个轻量级的Java客户端,用于VertexAiPaLm2Api聊天API。
以下类图说明了`VertexAiPaLm2Api`聊天接口和构建模块:
这是一个如何以编程方式使用API的简单示例:
VertexAiPaLm2Api vertexAiApi = new VertexAiPaLm2Api(< YOUR PALM_API_KEY>);
// 生成
var prompt = new MessagePrompt(List.of(new Message("0", "Hello, how are you?")));
GenerateMessageRequest request = new GenerateMessageRequest(prompt);
GenerateMessageResponse response = vertexAiApi.generateMessage(request);
// Embed text
Embedding embedding = vertexAiApi.embedText("Hello, how are you?");
// Batch embedding
List<Embedding> embeddings = vertexAiApi.batchEmbedText(List.of("Hello, how are you?", "I am fine, thank you!"));