如何免费访问和使用Gemini API?

Gemini是谷歌开发的一个新模型。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。

我们在本教程中将学习Gemini API以及如何在机器上设置它。我们还将探究各种Python API函数,包括文本生成和图像理解。

Gemini AI模型介绍

Gemini是谷歌研究院和谷歌DeepMind等团队合作开发的新型AI模型。它为多模态而建,理解并处理不同类型的数据,比如文本、代码、音频、图像和视频。

Gemini是谷歌迄今为止开发的最先进、最庞大的AI模型。它非常灵活,可以从数据中心到移动设备的各种系统上高效运行。这意味着它有望彻底改变企业和开发人员构建和扩展AI应用程序的方式。

以下是针对不同用例设计的Gemini模型的三个版本:

  • Gemini Ultra:最庞大最先进的AI,能够执行复杂的任务。
  • Gemini Pro:一种良好性能和可扩展性兼备的模型。
  • Gemini Nano:最适合移动设备。

Gemini Ultra具有最先进的性能,在几个指标上超过了GPT-4的性能。它是第一个在大规模多任务语言理解基准测试中超越人类专家的模型,该基准测试57个不同学科的世界知识和解决问题的能力。这展示了其先进的理解和解决问题的能力。

设置

要使用API,我们必须先获得一个API密钥,可以从这里获取:https://ai.google.dev/tutorials/setup。

然后,点击“获取API密钥”按钮,随后点击“在新项目中创建API密钥”。

复制API密钥并将其设置为环境变量。我们使用Deepnote,很容易设置名为“GEMINI_API_KEY”的密钥。只要转入到集成,向下滚动并选择环境变量。

在下一步中,我们将使用PIP安装Python API:


pip install -q -U google-generativeai

之后,我们将根据谷歌的GenAI设置API密钥,并初始化实例。


import google.generativeai as genai
import osgemini_api_key = os.environ["GEMINI_API_KEY"]
genai.configure(api_key = gemini_api_key)

使用Gemini Pro

设置好API密钥后,使用Gemini Pro模型生成内容就很简单。向‘generate_content’函数提供一个提示,将输出显示为Markdown。


from IPython.display import Markdownmodel = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Who is the GOAT in the NBA?")Markdown(response.text)

这令人惊讶,但我不同意这个列表。然而,我明白这完全是个人喜好。

Gemini可以为一个提示生成多个响应,名为候选响应。你可以选择最合适的一个。在本文的例子中,我们只有一个响应。


response.candidates

不妨让它用Python编写一个简单的游戏。


response = model.generate_content("Build a simple game in Python")
Markdown(response.text)

结果很简单,也很中肯。大多数LLM开始解释Python代码,而不是编写代码。

配置响应

你可以使用‘generation_config’变量定制响应。我们将候选响应计数限制为1,添加停止词“space”,并设置最大token和温度。


response = model.generate_content('Write a short story about aliens.',generation_config=genai.types.GenerationConfig(candidate_count=1,stop_sequences=['space'],max_output_tokens=200,temperature=0.7)
)
Markdown(response.text)

正如你所见,响应在“space“这个单词前停止了。很神奇。

流式传输响应

你也可以使用‘stream ’参数来流式传输响应。它类似Anthropic和OpenAI API,但速度更快。


model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Write a Julia function for cleaning the data.", stream=True)for chunk in response:print(chunk.text)

使用Gemini Pro Vision

下面我们将加载Masood Aslami的图像,并用它来测试Gemini Pro Vision的多模态性。将图像加载到“PIL”中并显示它。


import PIL.Image
img = PIL.Image.open('images/photo-1.jpg')
img
我们有一张奥古斯塔拱门的高质量图像。

不妨加载Gemini Pro Vision模型,并为其提供该图像。


model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(img)
Markdown(response.text)

该模型准确地识别了宫殿,并提供了有关其历史和建筑的更多信息。

不妨将相同的图像提供给GPT-4,并向它询问该图像。两种模型都给出了几乎相似的答案,但我更喜欢GPT-4的响应。

我们将向API提供文本和图像。我们让Vision模型用图像作为参考写一篇旅游博文。


response = model.generate_content(["Write a travel blog post using the image as reference.", img])
Markdown(response.text)

它为我提供了一个简短的博文,我原以为是更长的格式。

与GPT-4相比,Gemini Pro Vision模型难以生成长格式博文。

聊天对话会话

我们可以设置模型进行来回的聊天会话。这样一来,模型可以使用之前的对话记住上下文和响应。

在本文中,我们已开始了聊天会话,并要求模型帮助我开始Dota 2游戏。


model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
chat.send_message("Can you please guide me on how to start playing Dota 2?")
chat.history

如你所见,“chat”对象保存用户和模式聊天的历史记录。

我们还可以以Markdown样式显示它们。


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

不妨问一个紧跟的问题。


chat.send_message("Which Dota 2 heroes should I start with?")
for message in chat.history:display(Markdown(f'**{message.role}**: {message.parts[0].text}'))

我们可以向下滚动,并查看模型的整个会话。

使用嵌入

嵌入模型在上下文感知应用程序中越来越受欢迎。Gemini embedding-001模型允许将单词、句子或整个文档表示为编码语义含义的密集向量。这种向量表示可以通过比较不同文本片段对应的嵌入向量来方便地比较它们之间的相似性。

我们可以将内容提供给“embed_content”,并将文本转换为嵌入。就是这么简单。


output = genai.embed_content(model="models/embedding-001",content="Can you please guide me on how to start playing Dota 2?",task_type="retrieval_document",title="Embedding of Dota 2 question")
print(output['embedding'][0:10])
[0.060604308, -0.023885584, -0.007826327, -0.070592545, 0.021225851, 0.043229062, 0.06876691, 0.049298503, 0.039964676, 0.08291664]

我们可以通过将字符串列表传递给“content”参数,将多个文本块转换为嵌入。


output = genai.embed_content(model="models/embedding-001",content=["Can you please guide me on how to start playing Dota 2?","Which Dota 2 heroes should I start with?",],task_type="retrieval_document",title="Embedding of Dota 2 question")
for emb in output['embedding']:print(emb[:10])
[0.060604308, -0.023885584, -0.007826327, -0.070592545, 0.021225851, 0.043229062, 0.06876691, 0.049298503, 0.039964676, 0.08291664][0.04775657, -0.044990525, -0.014886052, -0.08473655, 0.04060122, 0.035374347, 0.031866882, 0.071754575, 0.042207796, 0.04577447]

结语

有很多高级函数在本入门教程中并没有介绍可以通过Gemini API: Python快速入门了解关于Gemini API的更多信息:https://ai.google.dev/tutorials/python_quickstart#generate_text_from_text_inputs.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两种方法判断Python的位数是32位还是64位

Python从1991年发布以来,凭借其简洁、清晰、易读的语法、丰富的标准库和第三方工具,在Web开发、自动化测试、人工智能、图形识别、机器学习等领域发展迅猛。     Python是一种胶水语言,通过Cython库与C/C语言进行链接,通过Jytho…

[Java][算法 滑动窗口]Day 03---LeetCode 热题 100---08~09

第一题 无重复字符串的最长子串 思路 其实就是在字符串S中 找到没有重复的最长子串的长度 这道题的难点就是在于如何判断最长并且无重复 首先 最长长度 可以使用变量max记录保存 再者 判断有无重复 最简单的方法就是 暴力遍历法 即对于每次找的子串都再次寻找遍历…

《辽宁春晚》开场动画惊艳亮相,蓝海创意云渲染服务再显神通

随着2024年甲辰龙年的脚步日益临近,备受瞩目的《辽宁春晚》于除夕夜为全国观众带来了一场精彩绝伦的视听盛宴。作为整场晚会的亮点之一,开场动画以其独特的创意和精美的画面效果,为观众带来了一个难忘的视觉体验。而这一精彩的呈现&#xff0…

测试物理网络的ping命令

通过发送Internet控制消息协议(ICMP)并接收其应答,测试验证与另一台TCP/IP计算机的IP级联通性、可达到性和名称解析的疑难问题主要TCP/IP命令。如果不带参数,ping将显示帮助。通过在命令提示符下输入“ping /?”命令&a…

R语言课程论文-飞机失事数据可视化分析

数据来源:Airplane Crashes Since 1908 (kaggle.com) 代码参考:Exploring historic Air Plane crash data | Kaggle 数据指标及其含义 指标名 含义 Date 事故发生日期(年-月-日) Time 当地时间,24小时制,格式为hh:mm Locat…

在客户端隔离的情况下通过 airtun-ng 实现直接客户端注入

直接的客户端注入技术 当我们试图执行一次无线攻击时,一个常见的问题就是,网络上的AP接入点拒绝在攻击者和被攻击者之间互转他们之间的攻击数据包。这种拒绝担任“中继”(relay)角色,而避免网络客户端之间互相攻击的技术,被称为“…

实例观察 c 语言中 volatile 的作用

volatile 意思是易变的。 在 c 语言中,如果变量被 volatile 修饰,就是告诉编译器这个变量随时都可能发生变化,那么每次读取变量的时候都会到内存中读取。 如果变量没有被 volatile 修饰,并且编译器发现在多次读取变量之间&#…

备战蓝桥杯---图论之建图基础

话不多说,直接看题: 首先,这个不是按照字典序的顺序,而是以只要1先做,在满足后让2先做。。。。 就是让数字小的放前面做拓扑排序。 我们可以先做1,看看它的前驱。 举个例子: 我们肯定要把1放…

JVM常见问题笔记分享

文章目录 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.5 堆和栈的区别1.6 能不能解释一下方法区?1.5.1 概述1.5.2 常量池1…

项目一:高并发内存池

1. 项目介绍 1.1 这个项目是做什么的 当前项目是实现一个高并发的内存池,他的原型是 google 的一个 开源项目tcmalloc , tcmalloc 全称 Thread-Caching Malloc ,即线程缓存的 malloc ,实现了高效的多线程内存管理,用…

蓝桥杯备赛_python_BFS搜索算法_刷题学习笔记

1 bfs广度优先搜索 1.1 是什么 1.2怎么实现 2案例学习 2.1.走迷宫 2.2.P1443 马的遍历 2.3. 九宫重排(看答案学的,实在写不来) 2.4.青蛙跳杯子(学完九宫重排再做bingo) 2.5. 长草 3.总结 1 bfs广度优先搜索 【P…

1.初识Tauri

文章目录 一、前言二、基本认识三、js与rust通信四、构建应用 一、前言 原文以及后续文章可点击查看:初识Tauri。 Tauri是一款比较新的跨平台桌面框架,也是我目前最喜欢的一个框架,其官网为:Tauri 它的作用其实和Electron很像&…

【PyQt】在PyQt5的界面上集成matplotlib绘制的图像

文章目录 0 前期教程1 概述2 matplotlib2.1 库导入2.2 图片的各个部分解释2.3 代码风格2.4 后端 3 集成matplotlib图像到pyqt界面中3.1 使用到的模块3.2 理解Qt Designer中的“控件提升”3.3 界面与逻辑分离的思路3.4 扩展 0 前期教程 【PyQt】PyQt5进阶——串口上位机及实时数…

transformer-Attention is All You Need(一)

1. 为什么需要transformer 循环模型通常沿输入和输出序列的符号位置进行因子计算。通过在计算期间将位置与步骤对齐,它们根据前一步的隐藏状态和输入产生位置的隐藏状态序列。这种固有的顺序特性阻止了训练样本内的并行化,这在较长的序列长度上变得至关重…

STM32-开发工具

开发过程中可能用到的工具 1、烧录下载调试工具ST-LINK ST-LINK,是ST(意法半导体)推出的调试编程工具,适用于STM32系列芯片的USB接口的下载及在线仿真器。 2、串口调试工具/串口下载工具 串口调试工具是一种用于通过串口通信协议与目标设备进行数据交…

源码网打包,目前有3000多个资源

源码网打包,目前有3000多个资源 需要赶快下手吧,到手可以使用,搭建好和本站一样,全网唯一 优化缩略图演示:https://www.htm.ink默认缩略图演示:https://blog.htm.ink网站截图

const--类的常量成员函数

在C中,为了禁止成员函数修改数据成员的值,可以将它设置为常量成员函数。设置常量成员函数的方法是在函数原型的后面加上const,形式如下: class x { …………… T f(t1,t2) const{} ………… }; 常量成员函数的作用: 将成员函数设置为const,表明该成员函…

FMEA的六大分类——SunFMEA软件

FMEA是一种预防性的质量工具,通过对产品设计或过程的故障模式进行分析,评估其可能产生的影响,从而采取相应的措施来降低产品的故障风险。根据分析的范围和目的,FMEA可以分为以下几种类型,今天sun fmea软件系统和大家一…

理解孟子思想,传承中华文化

为了更好地了解和传承中华文化,加深对孟子思想的认识与理解,探究孟子思想在现代社会的传承与发展,2024年2月18日,曲阜师范大学计算机学院“古韵新声,格物致‘知’”实践队队员崔本迪在山东省泰安市东平县进行了深入的调…

vue-路由(六)

阅读文章你可以收获什么? 1 明白什么是单页应用 2 知道vue中的路由是什么 3 知道如何使用vueRouter这个路由插件 4 知道如何如何封装路由组件 5 知道vue中的声明式导航router-link的用法 6 知道vue中的编程式导航的使用 7 知道声明式导航和编程式导航式如何传…