手把手教你!在国内如何调用谷歌 Gemini API 接口

gemini2024-11-10 17:52:386200

先做个广告:需要购买Gemini帐号或代充值Gemini会员,请加微信:gptchongzhi

大家好,我是知白。一个专注于输出 AI+ 编程内容的大厂资深程序员,全国最大  AI 付费社群破局初创合伙人及航海教练,关注我一起进步。

推荐使用Gemini中文版,国内可直接访问:https://ai.gpt86.top 

上篇文章讲解了如何在国内使用 Gemini 直接进行对话,但是想要使用 Gemini 大模型实现自己的功能如:微信机器人、公众号机器人、飞书机器人等等,就需要我们去了解 Gemini 的 API 接口才行。

为什么要选 Gemini 呢?还不是 Gemini Pro 免费版每分钟支持60个查询,并且可以长期使用。相比于其他不论是国内还是国外的大模型,进行 API 调用都需要收费,从这点来看真的很香。

借助 Gemini API,可以使用文本和图片数据进行提示,具体取决于使用的模型变体。例如,可以通过 gemini-pro 模型使用文本提示生成文本,并使用文本和图片数据向 gemini-pro-vision 模型发出提示。

当前有两个前置条件跟大家说下:

  1. 需要先获取到 Gemini 的 API 密钥,这个需要大家自行解决。
  2. 需要一个域名,找个不常用的域名后缀一年只需要几块钱。

一、代理配置

Github 项目地址:https://github.com/antergone/palm-proxy

进入到上述网址,使用 Vercel 来进行快速部署。


进入到 Vercel 中,可以直接使用默认项目名,点击创建。


部署成功后,点击跳转到大盘。


使用自己的域名也很简单,按照如图所示到 IP 控制台上进行配置即可。这里以腾讯云为例,选择添加记录,填充内容如下:


在域名设置完成后,将该域名填入即可。

完成后,我们就可以基于该域名在国内进行调用 Gemini 的 API 接口了。

二、Gemini API 调用

我们要使用自己的域名进行接口转发,所以只能使用 Gemini 的 API 接口各个 URL 进行调用,无法使用官方封装好的各语言工具包。

以下代码我们以 Python 语言为示例进行调用。

一)获取 Gemini 模型列表

获取模型列表接口无须填写任何参数,直接使用 Get 方式调用即可。

import requests

GEMINI_API_KEY = "你的 Gemini API KEY"
GEMINI_API_URL = 'https://你的域名/v1beta/models/gemini-pro:generateContent?key=' + GEMINI_API_KEY

def query():
    response = requests.get(GEMINI_API_URL)
    result = response.json()
    print(result)

if __name__ == '__main__':
    query()


返回的内容如图所示,我们可以看到模型的输出和输出的 Tokens 上限,还有模型默认的温度值等等。

二)纯文字输入

执行自然语言处理 (NLP) 任务,例如:文本补全和摘要等,借助 Gemini 来完成。

import requests
import json

GEMINI_API_KEY = "你的 Gemini API KEY"
GEMINI_API_URL = 'https://你的域名/v1beta/models/gemini-pro:generateContent?key=' + GEMINI_API_KEY


def query(input: str):
    # 制定的用户内容输入格式和请求头
    body = {"contents": [{"role":"user","parts":[{"text": input}]}]}
    headers = {"Content-Type": "application/json"}
    response = requests.post(GEMINI_API_URL, data=json.dumps(body), headers=headers)
    result = response.json()
    
    # 从 API 响应中提取内容部分
    candidate = result.get('candidates')[0]
    content_parts = candidate.get('content', {}).get('parts', [])
    content_text = content_parts[0].get('text', '')
    print(content_text)

if __name__ == '__main__':
    query("你是谁")


这里是一个基本文字输入调用,类似与我们网页上直接对话一样。输出结果如下:


发现 AI 说的很飘,这时候我们需要 AI 输出精确一些就需要调整温度值了。

我们先来讲下 temperature 温度值的定义:

取值范围在 0~1 之间,控制生成文本的多样性。较高的 temperature 值会导致生成的文本更具有创造性和多样性,但是也可能会导致生成的文本不够准确和不可信。较低的 temperature 值则会导致生成的文本更加保守和保险,但是可能会过于死板和缺乏新意。因此,在设置 temperature 值时需要权衡准确性和多样性之间的平衡。

可以将 body 入参调整如下:

body = {
        "contents": [{
            "parts":[
                {"text": input}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 0.1,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }


当我们将 temperature 调整为 0.1 后再来试试,可以看到输出的内容相对合理且具备一定的可靠性。

还可以调整其他参数配置,这里我们就不做一一演示了。

三)文本和图片输入

我们还可以向 gemini-pro-vision 模型发送包含图片的文本提示,以执行与视觉相关的任务。例如,为图片添加说明或识别图片中的内容。

使用图片数据的提示受到以下限制和要求的约束。

首先图片必须采用以下任一图片数据 MIME 类型:

  • PNG - 图片/png
  • JPEG - image/jpeg
  • WEBP - image/webp
  • HEIC - 图片/heic
  • HEIF - image/heif

最多 16 张图片,整个提示(包括图片和文本)不得超过 4MB,包含一张图片的提示往往能产生更好的结果。

import json
import requests
import base64

GEMINI_API_KEY = "你的 Gemini API KEY"
GEMINI_API_URL = 'https://你的域名/v1beta/models/gemini-pro:generateContent?key=' + GEMINI_API_KEY

def query():

    # 读取图像文件并转换为 base64 编码的字符串
    image_path = "./image.jpg"
    with open(image_path, "rb") as image_file:
        base64_encoded_image = base64.b64encode(image_file.read()).decode("utf-8")

    # 构建POST请求的JSON数据
    data = {
        "contents": [
            {
                "parts": [
                    {"text": "描述这张图片"},
                    {
                        "inlineData": {
                            "mimeType": "image/png",
                            "data": base64_encoded_image
                        }
                    }
                ]
            }
        ]
    }

    headers = {"Content-Type": "application/json"}

    # 发起POST请求
    response = requests.post(url, headers=headers, data=json.dumps(data))

    result = response.json()

    for candidate in result.get('candidates', []):
        # 从 API 响应中提取内容部分创建模型内容,并将模型内容添加到 contents 数组
        content_parts = candidate.get('content', {}).get('parts', [])
        content_text = content_parts[0].get('text', '')

        print(content_text)

if __name__ == "__main__":
    query()

其中图片内容是这样的:

看下返回结果,回答的内容还是很精准:

总结

我们这节讲解了三个基础的 API,获取模型列表、纯文字输入、文字和图片输入,大家可以先玩起来。

代充值chatgpt plus

本文链接:https://google-gemini.cc/gemini_36.html

ChatGPT Plus谷歌Gemini跟ChatGPT哪个好谷歌Gemini 的特点谷歌Gemini Nano如何使用谷歌Gemini模型如何使用谷歌Gemini如何使用GeminiGoogle GeminiGoogle Gemini跟ChatGPT对比Gemini API Key

相关文章