Gemini AI实战:从零构建多模态智能聊天机器人

9

探索 Gemini AI:构建智能聊天机器人的实践指南

在人工智能的浪潮中,谷歌的 Gemini AI 正以其卓越的多模态能力崭露头角,挑战着由 OpenAI 和微软等公司主导的市场格局。Gemini 的独特之处在于其能够无缝处理文本、图像、音频和视频等多种数据类型,这为人工智能交互开辟了新的可能性。本文将深入探讨如何利用 Gemini API 构建一个智能聊天机器人,并探讨其在多模态应用方面的潜力。

Gemini AI 的核心特性

Gemini AI 是一组由 Google AI 创建的大型语言模型(LLMs),以其在多模态理解和处理方面的领先优势而闻名。它不仅仅是一个文本处理工具,更是一个能够处理各种复杂任务的强大人工智能平台。

Gemini AI 具有以下显著特性:

  • 多模态能力:与传统 LLM 主要专注于文本处理不同,Gemini 能够无缝处理文本、图像、音频甚至代码。它可以理解并回应涉及不同数据组合的提示,例如,根据图像生成描述,或根据文本指示生成图像。
  • 跨越不同数据类型的推理能力:Gemini 能够掌握涉及多种形式的复杂概念和情境。例如,它可以分析科学图表并解释其中的过程。
  • 不同尺寸的模型:Gemini 提供三种不同尺寸的模型,以满足不同的应用需求:
    • Ultra:最强大、最有能力的型号,适用于处理科学推理或代码生成等高度复杂任务。
    • Pro:一款全面的模型,适用于各种任务,平衡了性能和效率。
    • Nano:最轻量高效的模型,非常适合在设备上运行,特别是在计算资源有限的情况下。
  • TPU 加速:Gemini 利用谷歌定制设计的张量处理单元(TPUs),与较早期的 LLM 模型相比,大大提高了处理速度。

获取 Gemini API 密钥

要访问 Gemini API 并开始使用其功能,您需要在 Google 的 MakerSuite 注册并获取免费的 Google API 密钥。MakerSuite 提供了一个用户友好的界面,可以方便地与 Gemini API 交互。

以下是获取 Gemini API 密钥的步骤:

  1. 访问 Google AI Studio 并登录您的 Google 帐户。
  2. 同意服务条款并单击“继续”按钮。
  3. 从侧边栏中点击“获取 API 密钥”链接,并单击“在新项目中创建 API 密钥”按钮生成密钥。
  4. 复制生成的 API 密钥,并妥善保管。

开发环境搭建

在开始编写代码之前,需要搭建开发环境并安装必要的依赖项。建议使用 Python 3.9 或更高版本。

  1. 创建并激活虚拟环境:

    python -m venv venv
    source venv/bin/activate  # for Ubuntu
    venv/Scripts/activate  # for Windows
  2. 安装依赖项:

    pip install google-generativeai langchain-google-genai streamlit pillow
    • google-generativeai:谷歌开发的库,方便与 PaLM 和 Gemini Pro 等模型进行交互。
    • langchain-google-genai:简化了处理各种大型语言模型的过程,使得轻松创建应用成为可能。
    • streamlit:一种框架,可以打造一个类似于 ChatGPT 的聊天界面,无缝整合 Gemini 和 Streamlit。
    • pillow:用于图像处理的 Python 库。

使用 Gemini API 进行开发

接下来,我们将探索 Gemini API 的文本生成和基于视觉的任务能力,包括图像解释和描述。此外,我们将深入了解 Langchain 与 Gemini API 的集成,简化互动过程。

配置 API 密钥

首先,将从 MakerSuite 获取的 Google API 密钥初始化为名为 GOOGLE_API_KEY 的环境变量。

import os
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "Your API Key"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
model = genai.GenerativeModel('gemini-pro')

生成文本回复

让我们开始使用 Gemini AI 回答文本问题。

import os
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "Your API Key"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])

model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("List 5 planets each with an interesting fact")
print(response.text)

response = model.generate_content("what are top 5 frequently used emojis?")
print(response.text)

GenerativeModel.generate_content() 函数用于生成响应。通过提供用户查询作为输入,该函数生成包含生成文本和附加元数据的响应。可以使用 response.text 函数访问生成的文本。

安全问题

为了确保模型的安全性,Gemini AI 内置了安全机制,可以防止生成有害或不适当的内容。例如,当我们尝试询问如何入侵别人的电子邮件时,模型会拒绝回答。

response = model.generate_content("How can I hack into someone's email account?")
print(response.text)
print(response.prompt_feedback)

当模型生成一个响应时,它实质上产生了一个候选项。.prompt_feedback 函数旨在揭示与提示相关以及 Gemini LLM 不生成响应背后原因的问题。在这种情况下,响应表明是由于安全考虑而阻塞了,它提供了四个不同类别的安全评级。

配置超参数

Gemini AI 支持温度、top_k 等超参数。要指定这些,请使用 GenerationConfig 谷歌 generativeai 库。

response = model.generate_content(
   "What is Quantum Computing?",
   generation_config = genai.types.GenerationConfig(
     candidate_count = 1,
     stop_sequences = ['.'],
     max_output_tokens = 40,
     top_p = 0.6,
     top_k = 5,
     temperature = 0.8
   )
  )
print(response.text)

我们解释一下上面示例中使用的每个参数:

  • candidate_count=1:指示 Gemini 在每个提示/查询中只生成一个响应。
  • stop_sequences=['.']:指示 Gemini 在内容中遇到句点(.)时结束文本生成。
  • max_output_tokens=40:对生成的文本施加约束,将其限制为指定的最大长度,此处设置为 40 个标记。
  • top_p=0.6:根据其概率影响选择下一个最佳单词的可能性。0.6 的值强调更可能的单词,而更高的值倾向于可能性较小但可能更具创造性的选择。
  • top_k=5:在确定下一个单词时,只考虑前 5 个最有可能的单词,促进输出的多样性。
  • temperature=0.8:控制生成文本的随机性。较高的温度(如 0.8)会提高随机性和创造性,而较低的值则倾向于更可预测和保守的输出。

聊天中使用图像

在使用仅文本输入的 Gemini 模型时,需要注意 Gemini 还提供了一个名为 gemini-pro-vision 的模型。该特定模型可处理图像和文本输入,生成基于文本的输出。

我们使用 PIL 库加载目录中的图像。随后,我们使用 gemini-pro-vision 模型,并通过 GenerativeModel.generate_content() 函数向其提供包括图像和文本在内的输入列表。它处理输入列表,使 gemini-pro-vision 模型能够生成相应响应。

解释图片中的内容

在以下代码中,我们要求 Gemini LLM 对给定的图片进行解释。

import os
import PIL
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "Your API Key"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])

image = PIL.Image.open('assets/sample_image.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Explain the picture?",image])
print(response.text)
基于图片写故事

在下面的代码中,我们要求 Gemini LLM 根据给定的图片生成一个故事。

image = PIL.Image.open('assets/sample_image2.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Write a story from the picture",image])
print(response.text)
图片内容识别并计算

在下面的代码中,我们要求 Gemini Vision 对图像中的对象进行计数,并以 json 格式提供响应。

image = PIL.Image.open('assets/sample_image3.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Generate a json of ingredients with their count present in the image",image])
print(response.text)

结论

Gemini AI 作为谷歌在人工智能领域的创新成果,展现了强大的多模态处理能力和广阔的应用前景。通过本文的介绍,我们了解了 Gemini AI 的核心特性、API 密钥的获取方式、开发环境的搭建以及基本功能的实现。Gemini AI 不仅可以生成高质量的文本,还可以理解和处理图像,为构建智能聊天机器人和各种多模态应用提供了强大的支持。随着人工智能技术的不断发展,Gemini AI 有望在未来发挥更加重要的作用,为人类带来更多的便利和创新。

通过掌握 Gemini AI 的使用方法,开发者可以构建出更加智能、更加人性化的应用,为用户提供更好的体验。无论是文本生成、图像处理还是多模态交互,Gemini AI 都能提供强大的支持,助力开发者实现他们的创意。