跳至主要内容

介绍 Google Gemini API:发现全新 Gemini AI 模型的强大能力

学习如何使用 Gemini Python API 及其各项功能,免费构建 AI 驱动的应用。
· 13分钟 阅读

使用 AI 探索

Google Bard 一直面临来自 ChatGPT 的日益激烈的竞争,但随着最新 Gemini AI 模型的发布,他们希望在市场上重拾优势。为提升用户体验,Google 近日用 Gemini Pro 模型全面升级了 Bard AI 助手,使其对希望输入文本与图像并获得准确自然回应的用户更加友好。

在本教程中,我们将探索 Google Gemini API,它可帮助您创建先进的 AI 应用。借助其强大的能力,您可以轻松结合文本和图像输入,生成精确且与情境相关的输出。Gemini Python API 简化了与现有项目的集成,让前沿的人工智能功能可以无缝落地。

什么是 Gemini AI?

Gemini AI 是由 Google 内部多个团队(如 Google Research 和 Google DeepMind)共同打造的前沿人工智能(AI)模型。它从设计之初就面向多模态,能够理解并处理多种形式的数据,包括文本、代码、音频、图像和视频。

Google DeepMind 对人工智能的探索一直以“让其能力惠及全人类”为初心。在此愿景驱动下,Gemini AI 在打造新一代受人类感知与交互方式启发的 AI 模型方面取得了重大突破。

作为迄今为止 Google 推出的最复杂、规模最大的 AI 模型,Gemini AI 被设计为高度灵活,能够处理多样化的信息类型。其通用性使其可以高效运行在从强大的数据中心服务器到移动设备的各种系统上。

以下是针对特定场景训练的三种 Gemini 版本:

  1. Gemini Ultra:最先进的版本,能够处理复杂任务。
  2. Gemini Pro:在性能与可扩展性之间取得良好平衡的选择。
  3. Gemini Nano:面向移动设备优化,效率最高。

Gemini Ultra vs GPT4

图片来源

在这些变体中,Gemini Ultra 表现尤为出色,在多项指标上超越了 GPT-4。它是首个在人类专家表现之上通过 Massive Multitask Language Understanding 基准测试的模型,该基准覆盖 57 个学科领域,用于评估世界知识与问题求解能力。这一成就展示了 Gemini Ultra 在理解与推理方面的优势。

如果您是人工智能新手,可学习 AI Fundamentals 技能路径,涵盖 ChatGPT、大语言模型和生成式 AI 等热门话题。

环境配置

在开始使用 API 之前,需从 Google AI for Developers 获取 API 密钥。

1. 点击“Get an API key”按钮。

image1.png

2. 随后创建项目并生成 API 密钥。

image16.png

3. 复制 API 密钥,并在系统中添加名为 "Gemini_API_KEY" 的环境变量。若要在 Kaggle 中创建安全的环境变量,进入 “Add-ons”,选择 “Secrets”。然后点击 “Add a new secret” 按钮,添加标签及其对应的值并保存。

image6.png

4. 使用 pip 安装 Gemini Python API 包。

%pip install google-generativeai

5. 通过添加 API 密钥来配置 Gemini API。要访问机密信息,您需要创建 UserSecretsClient 对象,然后提供相应标签。

import google.generativeai as genai
from kaggle_secrets import UserSecretsClient

user_secrets = UserSecretsClient()
gemini_key = user_secrets.get_secret("GEMINI_API_KEY")

genai.configure(api_key = gemini_key)

生成响应

本节我们将学习使用 Gemini Pro 模型生成响应。若您在本地运行代码时遇到问题,可以参考 Gemini API 的 Kaggle Notebook。

我们先检查免费 API 可用的模型访问权限。运行下方代码,通过 list_models 函数显示受支持的生成模型。

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

看起来我们只能访问两个模型,即 "gemini-pro" 和 "gemini-pro-vision"。

models/gemini-pro
models/gemini-pro-vision

现在访问 "Gemini Pro" 模型,并通过一个简单的提示生成响应。

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

response = model.generate_content("Please provide a list of the most influential people in the world.")

print(response.text)

只需几行代码,我们就能生成非常准确的回复。

image2.png

Gemini AI 可以为同一个提示生成多个候选响应,便于您选择最合适的一条。但免费版 API 仅提供一个候选项。

response.candidates

image7.png

我们的输出是 Markdown 格式。让我们用 IPython 的 Markdown 工具来优化显示。接下来让 Gemini 生成 Python 代码。

from IPython.display import Markdown

response = model.generate_content("Build a simple Python web application.")

Markdown(response.text)

模型表现很出色。它生成了使用 Flask 构建并运行一个简单 Web 应用的分步指南与说明。

image11.png

流式输出

为了提升应用的“感知速度”,使用流式输出非常重要。启用 'stream' 参数后,响应会在可用时立即生成并显示。输出会以分块形式返回,因此需要对 response 进行迭代。

from IPython.display import display

model = genai.GenerativeModel("gemini-pro")
response = model.generate_content(
    "How can I make authentic Italian pasta?", stream=True
)

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

每个分块之间用虚线分隔。如下所示,内容以分块形式生成。Gemini API 的流式输出与 OpenAI 和 Anthropic API 类似。

image5.png

微调响应

我们可以根据需求调整生成的响应。

在下面的示例中,我们生成一个候选,最大 1000 个 token,temperature 设为 0.7。同时设置了停止序列,当生成文本出现单词 "time" 时将自动停止生成。

response = model.generate_content(
    'How to be productive during a burnout stage.',
    generation_config=genai.types.GenerationConfig(
        candidate_count=1,
        stop_sequences=['time'],
        max_output_tokens=1000,
        temperature=0.7)
)

Markdown(response.text)

image10.png

试用 Gemini Pro Vision

本节我们将使用 Gemini Pro Vision 来体验 Gemini AI 的多模态能力。

我们将使用 curl 工具从 pexel.com 下载由 Mayumi Maciel 拍摄的照片。

!curl -o landscape.jpg "https://images.pexels.com/photos/18776367/pexels-photo-18776367/free-photo-of-colorful-houses-line-the-canal-in-burano-italy.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"

image3.png

要在 Kaggle Notebook 中加载并查看该图像,我们将使用 Pillow Python 包。

import PIL.Image

img = PIL.Image.open('landscape.jpg')
display(img)

image15.jpg

为了理解这张图像的内容,我们需要先加载 "gemini-pro-vision" 模型,并向其提供一个图像对象。

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

response = model.generate_content(img)

Markdown(response.text)

模型准确识别了图像中的地点并给出了描述。

A beautiful day in Burano, Italy. The colorful houses and the calm water make this a perfect place to relax and enjoy the scenery.

让我们将提示文本与图像对象一并传入生成函数,向模型询问与图像相关的问题。

response = model.generate_content(
    ["Can you provide the exact location with coordinates?", img]
)

Markdown(response.text)
45.4408° N, 12.3150° E

模型准确给出了该地的坐标,我们也通过将坐标添加到 Google 地图中进行了验证。

image13.png

聊天对话

可以与 AI 模型进行保留上下文的对话,利用先前交互的历史记录。这样,模型能够记住对话内容,并基于此前的交流提供恰当回应。

我们只需使用 model.start_chat 创建一个聊天对象,并提供第一条消息。

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

chat = model.start_chat(history=[])

chat.send_message("Who created the Mona Lisa?")

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

image8.png

我们再问一个问题,并以聊天格式展示响应。

chat.send_message("What else he created?")

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

模型记住了上下文,并给出了合适的回答。

image9.png

嵌入(Embeddings)

该 API 提供对嵌入模型的访问,这是构建上下文感知应用的常用工具。通过简单的 Python 函数,用户可以将提示或内容转换为嵌入,将词、句子或整篇文档表示为编码语义含义的稠密向量。

我们将向 embed_content 函数提供模型名称、内容、任务类型和标题。

result = genai.embed_content(
    model="models/embedding-001",
    content="Who created the Mona Lisa?",
    task_type="retrieval_document",
    title="Mona Lisa Research")

print(result['embedding'][:10])
[0.086675204, -0.027617611, -0.015689207, -0.00445945, 0.07286186, 0.00017529335, 0.07243656, -0.018299067, 0.018799499, 0.028495966]

要将多条内容转换为嵌入,需向 'content' 参数提供一个字符串列表。

result = genai.embed_content(
    model="models/embedding-001",
    content=[
        "Who created the Mona Lisa?",
        "What else he created?",
        "When did he died?"
    ],
    task_type="retrieval_document",
    title="Mona Lisa Research 2")

for emb in result['embedding']:
    print(emb[:10],"\n")
[0.07942627, -0.032543894, -0.010346633, -0.0039942865, 0.071596086, -0.0016670177, 0.07821064, -0.011955016, 0.019478166, 0.03784406] 

[0.027897138, -0.030693276, -0.0012639443, 0.0018902065, 0.07171923, -0.011544562, 0.04235154, -0.024570161, 0.013215181, 0.03026724] 

[0.04341321, 0.013262799, -0.0152797215, -0.009688456, 0.07342798, 0.0033503908, 0.05274988, -0.010907041, 0.05933596, 0.019402765]

报名参加 Introduction to Embeddings with the OpenAI API 课程,了解用于语义搜索与推荐引擎等高级 AI 应用的嵌入模型。

高级用例

要充分发挥 Gemini API 的潜力,开发者可能需要深入了解安全设置和底层 API 等高级功能。

  • 安全设置允许用户在提示与响应中配置内容拦截与放行,以确保符合社区规范。
  • 底层 API提供更高的定制灵活性。
  • 多轮对话可通过 GenaiChatSession 类扩展,提升会话体验。

借助这些高级功能,开发者可打造更高效的应用,并解锁更多用户交互可能性。

结语

Gemini API 通过同时使用文本与图像输入,为开发者构建先进 AI 应用打开了新可能。其最前沿的模型(如 Gemini Ultra)不断拓展 AI 系统的理解与生成边界。

Google 通过便捷的 Python API,使 AI 集成到应用中更加顺畅。Gemini API 提供内容生成、嵌入、多轮对话等多种功能,让 AI 更加易用。Gemini AI 标志着多模态理解的重大飞跃。

如果您想进一步学习,可通过短课程 Working with the OpenAI API 开启用 OpenAI API 构建 AI 应用的旅程。了解流行 AI 应用(如 ChatGPT 和 DataLab,DataCamp 的 AI 驱动数据笔记本)的底层功能。

如果您已具备专业背景且不需要实操课程,可查阅我们的速查表 OpenAI API in Python。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题