一、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

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐