链接: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>

添加仓库和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'
}
Tip
请参考依赖管理章节,以将Spring AI BOM添加到你的构建文件中。

聊天属性

前缀`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 配置聊天客户端的实现。

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

这是一个如何以编程方式使用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!"));