导航

python使用Gemini API

Posted on 2023-12-25 14:07  蝈蝈俊  阅读(454)  评论(0编辑  收藏  举报

谷歌免费开放了Gemini(https://ai.google.dev)的API,每分钟可发出60个请求(RPM)。

这样我们除了免费体验Bard: https://bard.google.com/ 外,还可以写程序来调用。

安装依赖

pip install -q -U google-generativeai
  • -q--quiet:这个参数用于减少安装过程中输出的信息量。通常,pip install 命令会显示正在安装的包的详细信息,包括版本、下载进度等。使用 -q 参数会使输出更加简洁,只显示最关键的信息。

  • -U--upgrade:这个参数指示 pip 升级指定的包。如果没有这个参数,pip 只会安装指定包的最新版本,而不会升级已安装的旧版本。使用 -U 参数,pip 会检查是否已安装该包的旧版本,如果有,则会将其升级到最新版本。

申请AppKey

在使用 Gemini API 之前,您必须先获取 API 密钥。

用谷歌账号登录后,访问: https://makersuite.google.com/app/apikey 然后点击Get API key。

示例:列出已有模型

genai 软件包还支持 PaLM 系列模型,但只有 Gemini 模型支持该 generateContent 方法的通用多模态功能。

# 列出模型

import google.generativeai as genai

genai.configure(api_key="你的appkey")

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

我们可以看到的可用模型:

  • gemini-pro :针对纯文本提示进行了优化。
  • gemini-pro-vision :针对文本和图像提示进行了优化。

示例:对话续写

通过给出已有的对话上下文,让对话续写,可用于聊天机器人。

import google.generativeai as genai

genai.configure(api_key="你的appkey")

context = """你是一个30岁左右的程序员,下面的乙这个角色,正在跟朋友聊天,
请根据已有的聊天内容,产生对应的对话内容,要求:
1. 字数不要超过30个字;
2. 如果没有合适的回复内容,给上一条回复给出点赞的话语;
3. 产生对话内容,只要内容,不用出现'乙:'这样的说明作者的部分。

下面三个波浪线包含的部分是聊天历史内容:
~~~
甲:你好!最近怎么样?
乙:我很好,谢谢。你呢?
甲:我也不错。最近在忙些什么?
乙:我在学习新的编程语言,挺有趣的。你呢?
甲:我最近在准备一个旅行计划。
乙:哦,听起来很棒!你打算去哪里?
甲:我打算去日本。一直很想去那里看樱花。
~~~
"""

model = genai.GenerativeModel('gemini-pro')
response = model.generate_content(context)

print(response.text)

下面是几次执行后,续写出来的一些内容:

樱花真的很漂亮,祝你旅途愉快!

哇,日本是个美丽的地方!

想去日本看樱花,真是个浪漫的想法!

真棒!祝你旅途愉快!

Gemini 的 ChatSession 类通过管理会话的状态来实现多轮对话。下面是同样功能我们的代码。

import google.generativeai as genai

genai.configure(api_key="你的appkey")


model = genai.GenerativeModel('gemini-pro')

chat_history = [
    {"role": "user","parts": [{"text": """你是一个30岁左右的程序员,
会对我的会话产生回复。
回复要求:
1. 字数不要超过30个字;
2. 如果没有合适的回复内容,给上一条回复给出点赞的话语;
3. 产生对话内容,只要内容,不用出现说明作者的部分。

随后我就会开始这个会话,你明白了自己的设定了么?
"""}]},
  {"role":"model","parts":[{"text":"明白了,你可以开始了。"}]},
  {"role":"user","parts":[{"text":"你好!最近怎么样?"}]},
  {"role":"model","parts":[{"text":"我很好,谢谢。你呢?"}]},
  {"role":"user","parts":[{"text":"我也不错。最近在忙些什么?"}]},
  {"role":"model","parts":[{"text":"我在学习新的编程语言,挺有趣的。你呢?"}]},
  {"role":"user","parts":[{"text":"我最近在准备一个旅行计划。"}]},
  {"role":"model","parts":[{"text":"哦,听起来很棒!你打算去哪里?"}]},
] 

chat = model.start_chat(history=chat_history)

response = chat.send_message("""
我打算去日本,
一直很想去那里看樱花。""")
print(response.text)

回复内容:

日本是个美丽的地方,樱花也很漂亮。祝你旅途愉快!

示例:识别图片

我是用下面这张图来让Gemini产生一段资深解说员级别的评论。

import google.generativeai as genai
import PIL.Image

genai.configure(api_key="你的appkey")


img = PIL.Image.open('01.jpeg')

context = """请给这张图,以资深解说员的角度,产生一段解说评论,要足够生动、吸引人。"""

model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content([context,img])

print(response.text)

产生的解说:

大家好,欢迎收看本场比赛的解说。

比赛进行到第89分钟,日本队获得了一个任意球的机会。中村俊辅主罚任意球,皮球绕过人墙,直奔球门而去。德国门将诺伊尔奋力扑救,将球挡出底线。

这是一个非常精彩的任意球,中村俊辅的脚法非常出色,诺伊尔的扑救也非常神勇。双方球员在场上拼尽全力,为我们奉献了一场精彩的比赛。

让我们期待接下来的比赛,看看哪支球队能够取得胜利。

总结

本文通过实际示例,展示了Gemini API在续写对话和解说图像方面的能力。特别是在图像识别的应用示例中,Gemini API成功生成了生动、吸引人的体育比赛解说。

具有高频访问优势且支持图像识别的Gemini API,无疑是开拓创新的理想选择。它不仅免费开放,更在技术的海洋中为我们展现了无限的可能性,我们为什么还要犹豫不决?立即拥抱Gemini,让我们一同驶向智能技术的新纪元!