前面我们申请了Google的AI Gemini Pro的API,那么如何来使用API访问Gemini 的大语言模型呢。谷歌其实给出了很多入门文档,包括Python,Go,Node.js,Android等等。我自己也不怎么会python,但还是跟着文档试了一下,用Python访问谷歌的Gemini,中间遇到不会的我就问Copilot。
谷歌其实给了个例子,直接在Google Colab上就能跑起来。我就是参考它实践了一下,中间遇到的问题主要是连不上谷歌服务器(需要代理)。最后的结果也是个比较糙的,自己就是试试手,毕竟也不是干这个的,但是还挺有成就感。
成果展示
准备工作
- 需要美国全局,不然中间运行代码会报错。而且申请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,如果还没有申请的可以先去看看前面的文章。
设置环境变量
然后右键点击我的电脑(此电脑) → 属性 → 高级系统设置 → 环境变量。
点击新建,然后输入你的API KEY:
- 变量名:GOOGLE_GEMINI_API_KEY (这个你自己定)
- 变量值:你申请的API KEY
点击确定保存设置。
看是否成功可以打开cmd,输入 echo %你设置的变量名% 来看看是不是输出了对应的KEY。
正式开始
自己在本地创建一个ipynb文件,例如:gemini.ipynb。用VS code打开。也可以直接在VS Code里按Ctrl + Shift + P,输入Jupyter,然后选择 Create: New Jupyter Notebook。
然后就是往里面贴代码了,得益于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)
- 如何使用 Google 的 Gemini | Gemini 吊打 GPT-4
- 谷歌 Gemini Pro 开放 API,可免费使用(附申请步骤)
- [Python] 如何调用Google Gemini API - 手撸谷歌AI客户端
- 一个开源的多平台 Gemini Pro App
怎么在代码中设置代理啊
这个东西我弄得很简陋,都是靠ChatGPT给我写的,我自己顶多只会看。代理我是直接设成了我本地的端口,我电脑开了全局代理。 你也可以问问 GPT 看看。