【AI】谷歌----1、spirng ai 调用 谷歌大模型 Gemini 聊天大模型LLM 详细教程
本文介绍了如何使用Google的Gemini大模型API: 注册使用:需通过Google官网(ai.google.dev)注册账号,注意选择中国区手机号接收验证码。 API获取:登录后可在线调试并获取API密钥(如AIzaSyDYoUmWiiupm...),通用接口地址为generativelanguage.googleapis.com/v1beta/。 费用说明:免费额度为每分钟5次请求,收费按
·
一、Gemini官网
官网地址:https://ai.google.dev
「使用条件:」
- Google账号
- 有外网
然后注册谷歌账号。(手机号记得选中国,要不收不到短信)
注册后自动跳转到以下页面
二、在线调试
三、获取秘钥
秘钥:AIzaSyDYoUmWiiupmxxxxxxxxxx
四、API文档
地址 (自己去熟悉)
https://ai.google.dev/gemini-api/docs?hl=zh-cn
**收费标准
- 免费额度:根据谷歌 AI 官方文档,Gemini 2.5 Pro 免费层级的调用速率限制为每分钟 5 次请求,每分钟 25 万 tokens,每天 100 次请求。
- 收费标准:对于最多 200,000 个 tokens 的输入,Gemini 2.5 Pro
的费用为每百万输入 tokens 1.25 美元,每百万输出 tokens 为 10 美元。而对于超过 200,000 个 tokens
的输入,费用为每百万输入 tokens 2.50 美元,输出 tokens 为每百万 15 美元。**
五、java调用大模型代码
模型 gemini-2.5-pro
通用接口地址
https://generativelanguage.googleapis.com/v1beta/
导入依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
六、java 案例代码
package com.xiaozhi.llm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.model.NoopApiKey;
import org.springframework.ai.model.SimpleApiKey;
import org.springframework.ai.model.tool.ToolCallingChatOptions;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.http.client.JdkClientHttpRequestFactory;
import org.springframework.http.client.reactive.JdkClientHttpConnector;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import java.net.http.HttpClient;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
public class GuGe_Gemini_Test {
private final Logger logger = LoggerFactory.getLogger(GuGe_Gemini_Test.class);
public static void main(String[] args) {
/**
* 【创建LLM模型参数 】provider-->>: gemini
* 【创建LLM模型参数 】model-->>: gemini-2.5-pro
* 【创建LLM模型参数 】endpoint-->>: https://generativelanguage.googleapis.com/v1beta/
* 【创建LLM模型参数 】apiKey-->>: AIzaSyDYoUmWiiupmmLIonGxynQcmeO0NtteLbc
* 【创建LLM模型参数 】appId-->>: null
* 【创建LLM模型参数 】apiSecret-->>: null
* 【创建LLM模型参数 】topP-->>: 0.9
* 【创建LLM模型参数 】temperature-->>: 0.7
*/
String provider = "gemini";//供应商
String model = "gemini-2.5-pro";//模型名称
String endpoint = "https://generativelanguage.googleapis.com/v1beta/"; //端点(地址)
String apiKey = "AIzaSyDYoUmWiiupxxxxxxxxxx"; //秘钥
String appId = null;//appID
String apiSecret = null;//
Double temperature = 0.7;//
Double topP = 0.9;
provider = provider.toLowerCase();
GuGe_Gemini_Test test = new GuGe_Gemini_Test();
ChatModel chatModel = test.newOpenAiChatModel(endpoint, appId, apiKey, apiSecret, model, temperature, topP);
//初始化AI设置
ChatOptions chatOptions = ToolCallingChatOptions.builder().build();
// 设置系统角色
String systemPrompt = "你是一个友好且知识渊博的助手,擅长用简洁明了的语言回答问题。" +
"当回答技术问题时,请提供足够的细节但不要过于冗长。";
// 初始化消息列表,添加系统消息
List<Message> messages = new ArrayList<>();
messages.add(new SystemMessage(systemPrompt));
// 添加历史对话(示例)
messages.add(new UserMessage("什么是Spring框架?"));
messages.add(new UserMessage("Spring AI和普通的Spring框架有什么区别?"));
// 新的用户问题
String userQuestion = "请简要介绍一下Spring AI的主要功能";
messages.add(new UserMessage(userQuestion));
// 创建prompt
Prompt prompt = new Prompt(messages);
System.out.println("用户问题: " + userQuestion);
System.out.println("正在获取回答...\n");
System.out.println("AI回答: ");
// 流式调用模型 - 正确的Spring AI 1.0版本写法
Flux<ChatResponse> responseFlux = chatModel.stream(prompt);
// 处理流式响应
responseFlux.subscribe(
chatResponse -> {
// 输出当前收到的内容
String content = chatResponse.getResult().getOutput().getText();
System.out.print(content);
},
error -> {
System.err.println("发生错误: " + error.getMessage());
error.printStackTrace();
},
() -> {
System.out.println("\n\n回答完成");
}
);
// 等待流式响应完成
try {
Thread.sleep(30000); // 等待30秒,足够大多数响应完成
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
/**
* 创建一个新的【openAI】聊天模型实例
* @param endpoint Ollama API的基础URL
* @param appId 应用程序ID
* @param apiKey API密钥
* @param apiSecret API密钥秘密
* @param model 使用的模型名称
* @param temperature 温度参数,控制生成文本的随机性
* @param topP top-p采样参数,控制生成文本的多样性
* @return 新创建的 openAI 聊天模型实例
*/
private ChatModel newOpenAiChatModel(String endpoint, String appId, String apiKey, String apiSecret, String model, Double temperature, Double topP) {
//创建请求头映射
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
//添加Content-Type请求头
headers.add("Content-Type", "application/json");
//完整路径
String defaultCompletionsPath = "/chat/completions";
if(model.equals("gpt-4")){ //TODO Chat-GTP 特殊处理
defaultCompletionsPath = "/openai/deployments/gpt-4/chat/completions?api-version=2025-01-01-preview";
}
// LM Studio不支持Http/2,所以需要强制使用HTTP/1.1
var openAiApi = OpenAiApi.builder()
.apiKey(StringUtils.hasText(apiKey) ? new SimpleApiKey(apiKey) : new NoopApiKey())//设置API密钥
.baseUrl(endpoint)//设置基础URL
.completionsPath(defaultCompletionsPath)//设置完成路径
.headers(headers)//设置请求头
.webClientBuilder(WebClient.builder()//设置Web客户端构建器,强制使用HTTP/1.1
// 强制HTTP/1.1用于流式传输
.clientConnector(new JdkClientHttpConnector(HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.connectTimeout(Duration.ofSeconds(30))
.build())))
.restClientBuilder(RestClient.builder()//设置REST客户端构建器,强制使用HTTP/1.1
// 强制HTTP/1.1用于非流式传输
.requestFactory(new JdkClientHttpRequestFactory(HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.connectTimeout(Duration.ofSeconds(30))
.build())))
.build();//构建OpenAI API实例
//创建OpenAI聊天选项实例
var openAiChatOptions = OpenAiChatOptions.builder()
.model(model)//设置使用的模型名称
.temperature(temperature)//温度
.topP(topP)//多样性
.build();//构建OpenAI聊天选项实例
//
var chatModel = OpenAiChatModel.builder()
.openAiApi(openAiApi)//设置OpenAI API实例
.defaultOptions(openAiChatOptions)//设置默认的聊天选项实例
//.toolCallingManager(toolCallingManager)//设置工具调用管理器实例
.build();//构建OpenAI聊天选项实例
logger.info("【使用 openAI 模型 】: {}", model);
return chatModel;
}
}
测试结果:
七、查看费用、已使用额度
左上角点击 get api key
更多推荐
所有评论(0)