VertexAI PaLM2 Chat
PaLM 生成式语言 API 允许开发人员使用 PaLM 模型构建生成 AI 应用程序。大型语言模型 (LLM) 是一种功能强大、多功能的机器学习模型,使计算机能够通过一系列提示理解和生成自然语言。 PaLM API 基于 Google 的下一代 LLM PaLM。它擅长各种不同的任务,例如代码生成、推理和编写。您可以使用 PaLM API 为内容生成、对话代理、摘要和分类系统等用例构建生成式 AI 应用程序。
基于模型 REST API.
先决条件
要访问 PaLM2 REST API,您需要从 makersuite 获取访问API 密钥。
注意: 目前 PaLM API 在美国以外地区不可用,但您可以使用VPN进行测试。
Spring AI 项目定义了一个名为的配置属性spring.ai.vertex.ai.api-key
,您应该将其设置为获取的值API Key。
导出环境变量是设置该配置属性的一种方法:
export SPRING_AI_VERTEX_AI_API_KEY=<INSERT KEY HERE>
添加存储库和 BOM
Spring AI 工件发布在 Spring Milestone
和 Snapshot
存储库中。请参阅存储库部分将这些存储库添加到您的构建系统中。
为了帮助进行依赖管理,Spring AI 提供了 BOM(物料清单),以确保在整个项目中使用一致的 Spring AI 版本。请参阅依赖管理部分将 Spring AI BOM 添加到您的构建系统。
自动配置
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'
}
Chat 属性
spring.ai.vertex.ai
前缀的属性,是用于配置与 VertexAI 的连接。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.vertex.ai.ai.base-url |
要连接的 URL | https://generativelanguage.googleapis.com/v1beta3 |
spring.ai.vertex.ai.api-key |
API 密钥 | - |
spring.ai.vertex.ai.chat
前缀的属性,可让您配置 VertexAI Chat 客户端的实现。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.vertex.ai.chat.enabled |
启用 Vertex AI PaLM API 对话客户端。 | true |
spring.ai.vertex.ai.chat.model |
这是要使用的 Vertex Chat 模型 | 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 |
提示: 所有 spring.ai.vertex.ai.chat.options
前缀的属性, 可以在运行期间通过添加特定请求参数到 Prompt
调用 实现覆盖.
聊天选项
VertexAiPaLm2ChatOptions.java 提供了模型配置,例如:temperature、topK、topP 等。
启动时,可以使用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()
));
提示: 除了特定于模型的 VertexAiPaLm2ChatOptions 创建的可移植 ChatOptions 实例。
Sample Controller (自动配置)
创建 一个新的 Spring Boot 项目并将其添加 spring-ai-vertex-ai-palm2-spring-boot-starter
到您的 pom(或 gradle)依赖项中。
在 src/main/resources
目录下添加一个application.properties
文件,以启用和配置 Anthropic Chat 客户端:
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
提示: 将 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);
}
}
手动配置
VertexAiPaLm2ChatClient 实现 ChatClient
和 StreamingChatClient
, 并使用 轻量级 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'
}
接下来, 创建一个 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
是一个流式选项生成器.
轻量级 VertexAiPaLm2Api 客户端
VertexAiPaLm2Api 提供了轻量级Java 的 VertexAiPaLm2Api 对话客户端。
以下类图说明了 VertexAiPaLm2Api 接口和构建块:
以下是如何以编程方式使用 api 的简单片段:
VertexAiPaLm2Api vertexAiApi = new VertexAiPaLm2Api(<YOUR PALM_API_KEY>);
// Generate
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!"));
最后编辑:Jeebiz 更新时间:2024-07-06 19:00