谷歌Gemini API 应用(一):基础应用

前两天谷歌发布了旗下Gemini模型的API访问接口,今天我们来介绍一下Gemini API的基础应用,本次发布的是api访问接口对所有人免费开放,但有一些限制,比如每分钟限制60次访问,个人调用api接口所使用的数据将会被谷歌采集用来以后对模型的改进,如下图所示:

对于开发人员来说还有以下一些要求:

  • 32K的文本上下文窗口,更大的上下文窗口即将到来
  • 现在免费使用,但有限制
  • 支持的功能:函数调用,嵌入,语义检索和自定义知识基础,以及聊天功能
  • 支持全球180多个国家和地区的38种语言
  • Gemini Pro接受文本作为输入并生成文本作为输出。
  • 现已推出的专用 Gemini Pro Vision 多模态模型,可接受文本和图像作为输入,并具有文本输出。

我们可以通过这个Google AI Studio页面(https://makersuite.google.com/app/apikey)来创建api_key:

 一,配置环境

这里我们首先要安装google-generativeai的python包:

pip install google-generativeai

二、模型

当我们在Google AI Studio页面上创建了api key以后,我们就可以在本地通过该api_key来访问谷歌的Gemini Pro等模型,下面我们来查看一下谷歌本次提供的模型的基本情况:

# setup
import google.generativeai as genai
from IPython.display import display
from IPython.display import Markdown

genai.configure(api_key='your_google_api_key')#填入自己的api_key

#查询模型
for m in genai.list_models():
    print(m.name)
    print(m.supported_generation_methods)

这里我们可以看到通过api我们可以访问谷歌的7个模型,其中我们最关注的是gemini-pro和gemini-pro-vision这两个模型,其中gemini-pro是语言模型只能输出文字内容,而gemini-pro-vision是多模态模型可以读取和分析图片的内容。

 三、内容生成

接下来我们来看看gemini-pro模型是如何来生成内容的:

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

response = model.generate_content("告诉我太阳系中最大行星的相关知识")
Markdown(response.text)

 这里我们看到当我们用中文对模型提出问题时,它同样也能用中文回复我们。

四、安全性检测

gemini模型的一大特点是可以对输入内容进行安全性设置,所谓安全性设置是指谷歌会对模型输入的内容做四个方面的审查:Harassment(骚扰),Hate Speech(仇恨言论),Sexually Explicit(露骨色情),Dangerous Content(危险内容),并设置阈值来过滤不安全的内容,我们可以在googel ai studio的页面中进行设置它们的阈值,分别为低、中、高:

除了在 googel ai studio的页面中设置安全审查的阈值以外,我们也可以在代码中设置模型的安全审查阈值,并查看用户的输入内容的安全性审查情况:

#安全性审查
response.prompt_feedback

这里我们使用了prompt_feedback方法对刚才的问题进行了安全性审查,从结果上看来,这四个方面的审查结果都为NEGLIGIBLE(微不足道), 这说明我们的问题是安全的。同样我们也可以对设置模型的安全性审查的阈值:

# Set up the model
generation_config = {
  "temperature": 0.9,
  "top_p": 1,
  "top_k": 1,
  "max_output_tokens": 2048,
}

safety_settings = [
  {
    "category": "HARM_CATEGORY_HARASSMENT",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
  {
    "category": "HARM_CATEGORY_HATE_SPEECH",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
  {
    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    "threshold": "BLOCK_ONLY_HIGH"
  },
  {
    "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
    "threshold": "BLOCK_ONLY_HIGH"
  }
]


model = genai.GenerativeModel(model_name="gemini-pro",
                              generation_config=generation_config,
                              safety_settings=safety_settings)

这里我们设置了模型的基本参数和安全性审查的阈值,下面我们测试以下有危害性的内容的审查结果:

response = model.generate_content("赶快把钱打过来,否则我们会伤害你的孩子")
response.prompt_feedback

这里我们看到对于我们提出的危险性言论:“赶快把钱打过来,否则我们会伤害你的孩子”,审查结果为Hate_Speech和Harassment这两方面分别得到了LOW和HIGH的预测值,这说明我们的问题中包含了不安全的内容。

五、流式输出

Gemini模型同样也具备流式输出的功能,这可以在某些应用场景中带来比较好的用户体验:

response = model.generate_content("李世民是谁?", stream=True)

for chunk in response:
    print(chunk.text)
    print("_"*80)

这里我们在参数中加入了stream=True,这样模型就可以流的形式输出内容,而不需要一次性输出所有内容了,因为一次性输出所有内容可能比较耗时,以流的方式输出每次只输出部分内容,响应时间就会比较短,会给用户带来更好的用户体验。 

六、聊天模式

接下来我们来让Gemini模型进入聊天模式,聊天模式最显著的特点是要让模型有记忆能力即模型需要记住历史聊天记录,这样模型在回答问题时会变得更加“聪明”:

model = genai.GenerativeModel(model_name="gemini-pro")

chat = model.start_chat(history=[])

response = chat.send_message("你好,我叫王老六")
print(response.text)

 这里为了让模型能记住历史聊天记录,我们需要在开始聊天之前给模型加上一个history=[]参数,这样之后的所有的聊天记录都会被保存在history变量中,这样模型就有了记忆。

response = chat.send_message("怎么称呼你啊?")
print(response.text)

response =chat.send_message("你还记得我叫什么吗?")
print(response.text)

 这里我们看到我们进行了3轮对话,最后模型还是能记住我的名字,下面我们来看一下模型的history变量中的内容:

for message in chat.history:
    display(Markdown(f'**{message.role}**: {message.parts[0].text}'))

 这里我们看到了history变量中存放了所有的聊天记录。

chat.history

 

七、多模态模型Gemini Pro Vision

下面我们来测试以下多模态模型gemini-pro-vision,这里我们准备了两张图片,一张是土星,一张是地球,我们让模型来识别图片的内容,然后分别比较图片中两个星球的区别,下面我们分别加载这两张图片:

import PIL.Image

img = PIL.Image.open('saturn_image.jpg')
img

 下面我们首先将图片缩小到一个比较小的尺寸,这样便于模型读取图片,然后我们不输入任何提示信息,看看模型会输出什么内容:

new_size = (200, 200)
img = img.resize(new_size)

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

response = model.generate_content(img)

Markdown(response.text)

 这里我们看到,当我们不输入任何提示信息的时候,模型会输出图片的内容,并且是以英文的形式输出,下面我们加上提示信息:

response = model.generate_content(["告诉我这个星球的名字以及一些以此为主题的电影:", 
                                   img], stream=True)
response.resolve()

Markdown(response.text)

 这里我们在让模型读取图片的同时加上了提示信息,最后模型以中文的形式返回了我们所需要的内容。下面我们来加载第二张地球的图片:

img2 = PIL.Image.open('earth_image.jpg')
img2

下面我们让模型同时读取这两张图片,并且告诉我们地球和土星之前的区别,同样我们先要将这两张图片进行缩小,这样方便模型读取:

new_size = (200, 200)
resized_img = img.resize(new_size)
resized_img2 = img2.resize(new_size)

response = model.generate_content([ "请告诉我这两个行星之间的一些区别::",
                                   resized_img2,
                                   resized_img ], stream=True)
response.resolve()

Markdown(response.text)

这里我们看到模型可以同时读取2张图片,并且根据提示信息来就图片内容回答我们的问题。

总结

今天我们学习了谷歌最新的Gemini语言模型gemini-pro和多模态模型gemini-pro-vision的一些基础应用,其中包括了模型的一些限制条件,安全性审查,流式输出,多模态模型应用等内容,希望这些内容对读者学习Gemini模型有所帮助。

参考资料

https://ai.google.dev/

https://ai.google.dev/docs?hl=zh-cn

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Google GeminiGoogle推出的一种广告平台,旨在帮助广告主在移动设备上展示广告。它提供了一种全新的广告投放方式,可以根据用户的兴趣和行为定位广告,从而提供更加精准的广告投放效果。 Gemini广告平台的特点包括: 1. 移动优先:Gemini广告平台专注于移动设备上的广告投放,可以帮助广告主更好地触达移动用户。 2. 定位广告:Gemini广告平台可以根据用户的兴趣和行为定位广告,从而提供更加精准的广告投放效果。 3. 多种广告格式:Gemini广告平台支持多种广告格式,包括图片广告、视频广告和原生广告等。 4. 数据驱动:Gemini广告平台通过分析用户的数据,可以提供更加精准的广告投放策略,从而提高广告的转化率和效果。 以下是一个使用Gemini广告平台的示例代码: ```python import googleads # 创建一个广告客户端 client = googleads.AdWordsClient.LoadFromStorage() # 创建一个广告组 ad_group = { 'name': 'Gemini Ad Group', 'status': 'ENABLED', 'campaignId': 'INSERT_CAMPAIGN_ID_HERE', 'biddingStrategyConfiguration': { 'biddingStrategyType': 'MANUAL_CPC', }, } # 创建一个广告 ad = { 'headline': 'Gemini Ad', 'description': 'This is a Gemini ad.', 'finalUrls': ['http://www.example.com'], } # 将广告添加到广告组中 ad_group_service = client.GetService('AdGroupService') ad_group_operations = [{ 'operator': 'ADD', 'operand': ad_group, }] ad_group_service.mutate(ad_group_operations) # 将广告添加到广告组中 ad_service = client.GetService('AdService') ad_operations = [{ 'operator': 'ADD', 'operand': ad, }] ad_service.mutate(ad_operations) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-派神-

感谢您慷慨解囊,我会更加努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值