VertexAI Gemini Chat
Vertex AI Gemini API 允许开发人员使用 Gemini 模型 构建生成式 AI 应用程序。 Vertex AI Gemini API 支持多模式提示作为输入和输出文本或代码。多模态模型是能够处理来自多种模态的信息的模型,包括图像、视频和文本。例如,您可以向模型发送一盘饼干的照片,并要求它为您提供这些饼干的食谱。
Gemini 是由 Google DeepMind 开发的一系列生成式 AI 模型,专为多模式用例而设计。 Gemini API 使您可以访问 Gemini 1.0 Pro Vision 和 Gemini 1.0 Pro 型号。 Vertex AI Gemini API 模型的规格请参见模型信息。
先决条件
设置您的 Java 开发环境。
通过运行以下命令进行身份验证。使用你的Google Cloud project ID
替换PROJECT_ID
,Google Cloud username
替换 ACCOUNT
。
gcloud config set project PROJECT_ID &&
gcloud auth application-default login ACCOUNT
自动配置
Spring AI 为 VertexAI Gemini 对话客户端 提供 Spring Boot 自动配置。要启用它,请将以下依赖项添加到项目的 Maven pom.xml
文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-gemini-spring-boot-starter</artifactId>
</dependency>
或者,在你的 Gradle 构建文件 build.gradle
中添加:
dependencies {
implementation 'org.springframework.ai:spring-ai-vertex-ai-gemini-spring-boot-starter'
}
Chat 属性
spring.ai.vertex.ai.gemini
前缀的属性,是用于配置与 VertexAI 的连接。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.vertex.ai.gemini.projectId |
Google Cloud Platform project ID | - |
spring.ai.vertex.ai.gemini.location |
Region | - |
spring.ai.vertex.ai.gemini.credentialsUri |
Vertex AI Gemini 凭证的 URI。当提供时,它用于创建一个GoogleCredentials` 实例来验证VertexAI`. |
- |
spring.ai.vertex.ai.gemini.chat
前缀的属性,可让您配置 VertexAI Gemini 对话客户端的实现。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.vertex.ai.gemini.chat.options.model |
要使用的 Vertex AI Gemini 对话模型 | gemini-pro-vision |
spring.ai.vertex.ai.gemini.chat.options.temperature |
控制输出的随机性。值的范围可以超过 [0.0,1.0](含)。接近 1.0 的值将产生更加多样化的响应,而接近 0.0 的值通常会导致生成器的响应不那么令人惊讶。该值指定后端在调用生成器时使用的默认值。 | 0.8 |
spring.ai.vertex.ai.gemini.chat.options.topK |
采样时要考虑的最大标记数。生成结合使用 Top-k 和核采样。 Top-k 采样考虑 topK 个最可能的标记集。 | - |
spring.ai.vertex.ai.gemini.chat.options.topP |
采样时要考虑的令牌的最大累积概率。生成结合使用 Top-k 和核采样。核心采样考虑概率和至少为 topP 的最小标记集。 | - |
spring.ai.vertex.ai.gemini.chat.options.candidateCount |
生成的要返回的响应消息的数量。该值必须介于 [1, 8] 之间(含)。默认为 1。 | - |
spring.ai.vertex.ai.gemini.chat.options.maxOutputTokens |
要生成的最大令牌数。 | - |
spring.ai.vertex.ai.gemini.chat.options.frequencyPenalty |
- | |
spring.ai.vertex.ai.gemini.chat.options.presencePenalty |
- | |
spring.ai.vertex.ai.gemini.chat.options.functions |
由名称标识的函数列表,用于在单个提示请求中启用函数调用。具有这些名称的函数必须存在于 functionCallbacks 注册表中。 | - |
提示: 所有 spring.ai.vertex.ai.gemini.chat.options
前缀的属性, 可以在运行期间通过添加特定请求参数到 Prompt
调用 实现覆盖.
聊天选项
VertexAiGeminiChatOptions.java 提供了模型配置,例如:temperature、topK、topP 等。
启动时,可以使用VertexAiGeminiChatOptions(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()
));
提示: 除了特定于模型的 VertexAiChatPaLm2Options 创建的可移植 ChatOptions 实例。
Function Calling(函数调用)
您可以使用 VertexAiGeminiChatClient
注册自定义 Java 函数,并让 Gemini Pro 模型智能地选择输出包含调用一个或多个注册函数的参数的 JSON 对象。这是一种将 LLM 功能与外部工具和 API 连接起来的强大技术。阅读有关Vertex AI Gemini 函数调用的更多信息。
多模态
多模态是指模型同时理解和处理来自各种来源(包括文本、图像、音频和其他数据格式)的信息的能力。这种范式代表了人工智能模型的重大进步。
谷歌的 Gemini AI 模型通过理解和集成文本、代码、音频、图像和视频来支持此功能。有关更多详细信息,请参阅博客文章Gemini 简介。
Spring AI 的 Message 接口 通过引入Media 类型
来支持多模态AI模型。
该类型包含有关消息中媒体附件的数据和信息,使用 Spring 的 org.springframework.util.MimeType
和 java.lang.Object
作为原始媒体数据。
下面是从 VertexAiGeminiChatClientIT.java 中截取的简单代码示例,演示了用户文本与图像的组合。
byte[] data = new ClassPathResource("/vertex-test.png").getContentAsByteArray();
var userMessage = new UserMessage("Explain what do you see o this picture?",
List.of(new Media(MimeTypeUtils.IMAGE_PNG, data)));
ChatResponse response = chatClient.call(new Prompt(List.of(userMessage)));
Sample Controller (自动配置)
创建 一个新的 Spring Boot 项目并将其添加 spring-ai-vertex-ai-palm2-spring-boot-starter
到您的 pom(或 gradle)依赖项中。
在 src/main/resources
目录下添加一个application.properties
文件,以启用和配置 VertexAi 对话客户端:
spring.ai.vertex.ai.gemini.project-id=PROJECT_ID
spring.ai.vertex.ai.gemini.location=LOCATION
spring.ai.vertex.ai.gemini.chat.options.model=vertex-pro-vision
spring.ai.vertex.ai.gemini.chat.options.temperature=0.5
提示: 将 api-key
替换为您的 VertexAI 凭证。
这将创建一个可以注入到您的类中的 VertexAiGeminiChatClient
实现。下面是一个@Controller
使用聊天客户端生成文本的简单类的示例。
@RestController
public class ChatController {
private final VertexAiGeminiChatClient chatClient;
@Autowired
public ChatController(VertexAiGeminiChatClient 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);
}
}
手动配置
VertexAiGeminiChatClient 实现 ChatClient
和 StreamingChatClient
, 并使用 轻量级 Api 客户端连接到 Vertex AI Gemini 服务。
添加 spring-ai-vertex-ai-gemini
依赖到你的项目 Maven pom.xml
文件:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-gemini</artifactId>
</dependency>
或者,在你的 Gradle 构建文件 build.gradle
中添加:
dependencies {
implementation 'org.springframework.ai:spring-ai-vertex-ai-gemini'
}
接下来, 创建一个 VertexAiGeminiChatClient
并将其用于文本生成:
VertexAI vertexApi = new VertexAI(projectId, location);
var chatClient = new VertexAiGeminiChatClient(vertexApi,
VertexAiGeminiChatOptions.builder()
.withTemperature(0.4)
.build());
ChatResponse response = chatClient.call(
new Prompt("Generate the names of 5 famous pirates."));
VertexAiGeminiChatOptions
提供聊天请求的配置信息.VertexAiGeminiChatOptions.Builder
是一个流式选项生成器.
最后编辑:Jeebiz 更新时间:2024-07-06 19:00