首页 > 编程语言 >python使用Gemini API

python使用Gemini API

时间:2024-01-04 10:02:32浏览次数:53  
标签:API python text parts Gemini role model genai

谷歌免费开放了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产生一段资深解说员级别的评论。

python使用Gemini API_API

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,让我们一同驶向智能技术的新纪元!

标签:API,python,text,parts,Gemini,role,model,genai
From: https://blog.51cto.com/u_15588078/9095581

相关文章

  • 【Azure APIM】APIM 策略语句如何读取请求头中所携带的Cookie信息并保存为变量
    问题描述需要在APIM策略中对请求所携带的Cookie中的token值进行JWT验证,如果获取Cookie中的值并且作为变量保存,然后在JWT验证中使用呢? 问题解答第一步:获取Cookie中的Token值使用C#语句@(context.Request.Headers.GetValueOrDefault("cookie","").Split(';').Select(x=>x.Trim(......
  • 【机器学习】常见算法详解第1篇:K近邻 KNN和API使用(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • Java基础语法API之Date和SimpleDateFormat
    一:概述在实际开发中,Date类和SimpleDateFormat类是两个常用的时间类。在这里主要具体说一下Date时间类和SimpoleDateFormat类。二:具体说明<1>JDK文档中的介绍《1》Date类《2》SimpleDateFormat类<2>具体代码案例/*构造方法:Date():分配Date对象并对其进行初始化,使其表......
  • Apipost多Host服务配置
    最近Apipost新增同环境下多host服务的配置功能,本篇文章带来该功能的使用场景及使用方法。配置方法:点击右上角眼睛标识进入环境管理点击添加服务,输入服务名和URL配置完成后需要在接口目录中选择该目录下需要使用的host服务,每个接口目录都可以选择不同的host服务,如果未选择,则使用默认......
  • 软件测试/测试开发|一文告诉你Python列表相关操作
    列表是Python中最常用的数据类型之一。它是一种有序、可变,异构的数据集合,可以存储多个不同类型的元素。列表的特点列表是Python中的一种数据结构,具有以下特点:有序性:列表中的元素按照添加的顺序进行存储,每个元素都有一个对应的索引,可以通过索引访问和操作列表中的元素。可变性:列......
  • Windows下python,psycopg2使用连接HGDB
    瀚高数据库 目录环境文档用途详细信息环境系统平台:N/A版本:4.5文档用途 本文介绍在HGDB使用sm3认证时,python使用psycopg2连接HGDB的方法。详细信息 Python连接HGDB可以使用psycopg2、Django,Django是依赖psycopg2的,底层用的都是libpq,pip安装的psycopg2自带libpq。因此在一般情况......
  • Python保留浮点数小数位数的几种常见方法
    1.使用round()函数:number=3.14159rounded_number=round(number,2)print(rounded_number)#输出:3.142.使用字符串格式化:number=3.14159formatted_number='{:.2f}'.format(number)print(formatted_number)#输出:3.143.使用字符串的f-string格式化:number=3.14......
  • python初试终章
    之前在单机上实现了一个Django服务器,现在我们可以把这个服务器推上一个云平台。这里我选择使用阿里云。阿里云准备在阿里云官网(aliyun.com)页面注册阿里云账号。登录后选择云服务器ECS,并选择“创建实例”:选择操作系统Ubuntu14.0464位,设置密码。实例开通后,可以在实例记录中查......
  • 【JDBC】Java数据库连接:操作流程、API、数据库连接池
    JDBC简介JDBC(JavaDataBaseConnectivity)Java数据库连接JDBC是使用Java语言操作关系型数据库的一套APIJDBC操作数据库流程JDBCAPIDriverManager驱动管理类Connection数据库连接对象StatementResultSet结果集对象PreparedStatementPreparedStatement好......
  • pdm符合最新PEP标准的现代python 包以及依赖管理工具
    pdm符合最新PEP标准的现代python包以及依赖管理工具支持的特性简单快速的维护依赖解析,主要为了构建大的二进制分发PEP517构建后端PEP621项目元数据灵活强大的插件系统多功能用户脚本类似pnpm的中心化安装优化安装命令使用过的mac系统的 brewinstallpdm使用其他命令pipx......