[Python] 如何调用Google Gemini API - 手撸谷歌AI客户端

google gemini model banner AI

前面我们申请了Google的AI Gemini Pro的API,那么如何来使用API访问Gemini 的大语言模型呢。谷歌其实给出了很多入门文档,包括Python,Go,Node.js,Android等等。我自己也不怎么会python,但还是跟着文档试了一下,用Python访问谷歌的Gemini,中间遇到不会的我就问Copilot

谷歌其实给了个例子,直接在Google Colab上就能跑起来。我就是参考它实践了一下,中间遇到的问题主要是连不上谷歌服务器(需要代理)。最后的结果也是个比较糙的,自己就是试试手,毕竟也不是干这个的,但是还挺有成就感。

Sponsored links
Sponsored links

成果展示

准备工作

  • 需要美国全局,不然中间运行代码会报错。而且申请API KEY也是要美国节点的。
  • Python 3.11 以上
  • VS Code。本例子是用VS Code作为编辑器,同时也是作为Gemini的客户端来用。

配置 Python 环境

去下载安装Python,这个就不多说了。我是用VS Code来编辑Python的。反正用啥看你自己习惯。

本例中还用到了Jupyter Notebook,不过因为现在VS Code的Python插件中已经内置了Jupyter Notebook,所以不用额外安装了。

这里插一句,Jupyter Notebook是一个可以在网页上运行的程序,它可以让你在同一个界面中编写、查看和执行代码,从而使得在进行更改并立即查看结果变得更加容易。它支持多种编程语言,包括Python、R、Julia等。刚好可以用这个来当做Gemini的客户端来用了。

申请Google Gemini API 密钥(已申请的跳过)

复制你的Gemini API Key,如果还没有申请的可以先去看看前面的文章。

设置环境变量

然后右键点击我的电脑(此电脑) → 属性 → 高级系统设置 → 环境变量。

set environment variables

点击新建,然后输入你的API KEY:

  • 变量名:GOOGLE_GEMINI_API_KEY (这个你自己定)
  • 变量值:你申请的API KEY

点击确定保存设置。

set google api key

看是否成功可以打开cmd,输入 echo %你设置的变量名% 来看看是不是输出了对应的KEY。

output api key

正式开始

自己在本地创建一个ipynb文件,例如:gemini.ipynb。用VS code打开。也可以直接在VS Code里按Ctrl + Shift + P,输入Jupyter,然后选择 Create: New Jupyter Notebook。

create new jupyter

然后就是往里面贴代码了,得益于Jupyter,我们可以写文章一样,把步骤写清楚,而且还能一段一段的执行代码。

安装 google-generativeai 包

第一步是使用 pip 命令安装google-generativeai包。在谷歌的文档中已经有了,只要点击一下该代码前面的运行标志即可。

!pip install -q -U google-generativeai

可能会有一个提示:DEPRECATION: Loading egg at c:\python\python311\lib\site-packages\pip-22.3.1-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330

这个不用管它,其实就是说你的 pip 版本较旧,而新版本的 pip 已经不再支持加载 egg 文件。这个不会影响你代码的运行。

导入需要的包

在notebook里运行一下下面的代码,导入几个需要的python package。然后因为我们在国内,只有美国的IP才能访问Gemini,所以需要加入代理。另外为了美观,将输出的文本转换成Markdown格式。

这里127.0.0.1:7890 是我本地的代理软件Clash的端口。我是简单的用requests搞了个代理,问了AI,说还能用grpc 来实现。

import textwrap
import os
import requests
import google.generativeai as genai

from IPython.display import display
from IPython.display import Markdown

proxies = {
    "http": "http://127.0.0.1:7890",
    "https": "https://127.0.0.1:7890",
}

def to_markdown(text):
  text = text.replace('•', '  *')
  return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))

安装 API KEY

因为直接将API Key写在代码里不太安全,所以这里谷歌是把它存在了google colab的user data里(红色部分),我们现在是在本地,所以使用环境变量来访问API Key是个不错的做法。(这些都是AI 告诉我的,哈哈)

GOOGLE_API_KEY = os.environ.get("GOOGLE_GEMINI_API_KEY")
genai.configure(api_key=GOOGLE_API_KEY)
print("Google API Key:", GOOGLE_API_KEY)  # 打印API KEY

列出当前的模型

列出当前的谷歌gemini的模型。感觉应该是可以省掉的,我注释掉反正也能跑。

for m in genai.list_models():
  if 'generateContent' in m.supported_generation_methods:
    print(m.name)

打印结果:

models/gemini-pro
models/gemini-pro-vision

调用模型

接下来就是调用模型生成回答了,把你要问的写在model.generate_content里,主要要有双引号。然后Gemini就会回答你的问题了。

model = genai.GenerativeModel('gemini-pro')
%%time 
response = model.generate_content("怎么禁止Wordpress的auto embeds")
to_markdown(response.text)

这个只是输入文字的模型,想要多模态输入,要调用gemini-pro-vision。这个我没弄了,可以照着谷歌的文档自己弄。需要用到PIL包,大概就是在上面的基础上把下面的代码加进去:

import PIL.Image

img = PIL.Image.open('图片的路径或者URL')
img
model = genai.GenerativeModel('gemini-pro-vision')

response = model.generate_content(["你的prompt", img], stream=True)
response.resolve()

to_markdown(response.text)

5/5 - (2 votes)
Series Navigation<< 谷歌 Gemini Pro 开放 API,可免费使用(附申请步骤)一个开源的多平台 Gemini Pro App >>
订阅评论
提醒
guest
2 评论
内联反馈
查看所有评论
ATP
ATP
4 天 前

怎么在代码中设置代理啊

2
0
希望看到您的想法,请您发表评论x