原文链接:Getting Started with Gemini API: A Comprehensive Practical Guide | by Youssef Hosni | Jan, 2024 | Towards AI[1]
Gemini是谷歌最新推出的 LLM 模型,它标志着谷歌在利用图像、音频和文本完美回答您的问题领域取得了重大飞跃。与此同时,它的前身巴德(Bard)也卷土重来。这对充满活力的组合有望彻底改变我们与信息交互的方式,为包含图像、音频和文本的查询提供近乎完美的回复。
本实践教程将向您展示如何使用 Gemini API 并在计算机上进行设置。我们将介绍各种 Python API 函数,如创建文本和理解图像,帮助您以简单的方式充分利用 Gemini 的功能。准备好使用 Gemini 让您的查询更流畅、更先进吧!
目录:
-
什么是双子座模型? -
设置 -
自定义模型响应 -
双子座专业版愿景 -
使用 Gemini 进行聊天对话 -
使用双子座嵌入模型
1. 什么是 Gemini 模型?
Gemini 是一种新型人工智能模型,由谷歌研究团队和谷歌 DeepMind 等多个谷歌团队合作开发而成。作为一个多模式实体,Gemini 拥有独特的设计,能够理解和处理各种形式的数据,包括文本、代码、音频、图像和视频。
作为谷歌迄今为止最先进、最广泛的人工智能产品,Gemini 以其卓越的灵活性脱颖而出,能够在从庞大的数据中心到小巧的移动设备等各种系统中实现无缝操作。这种适应性有望为企业和开发人员带来人工智能应用程序开发和可扩展性方面的变革。
Gemini 模型有三个版本,分别针对不同的使用情况:
-
Gemini Ultra:最大、最先进的人工智能,能够执行复杂任务。 -
Gemini Pro:性能和可扩展性均衡的模型。 -
Gemini Nano:最高效的移动设备。
Gemini Ultra 凭借尖端性能占据中心位置,各项指标均超过 GPT-4。值得注意的是,它在 "大规模多任务语言理解 "基准测试中的表现超过了人类专家,实现了一个里程碑。该基准评估的是世界知识和解决问题的能力,涉及 57 个不同的主题,突显了 Gemini Ultra 在理解和应对复杂挑战方面的先进能力。
2. 设置工作环境并开始使用
要使用 Gemini API,我们必须先从 Google AI Studio[2] 获取一个 API 密钥。点击 "获取 API 密钥 "按钮,然后点击 "在新项目中创建 API 密钥"。
复制 API 密钥并将其设置为环境变量,如果不打算与他人共享代码,则将其放入变量中。下一步是使用 PIP 安装 Python API:
!pip install -q -U google-generativeai
之后,我们将把 API 密钥设置为 Google GenAI 并启动实例。
import google.generativeai as genai
import os
gemini_api_key = os.environ["GEMINI_API_KEY"]
genai.configure(api_key = gemini_api_key)
设置好 API 密钥后,使用 Gemini Pro 模型生成内容就很简单了。向 `generate_content` 函数提供提示,并将输出显示为 Markdown。
from IPython.display import Markdown
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("What is Large Language Model?")
Markdown(response.text)
Gemini 可以为单个提示生成多个响应,称为候选响应。您可以选择最合适的一个。在本例中,我们只有一个回复。
3. 自定义模型响应
你可以使用 generation_config 参数自定义你的回答。在这里,我们将候选词数量限制为 5,添加了停止词 "Open AI",并设置了最大词块和温度。
response = model.generate_content(
'Tell me the story of the rise of LLM and chatbots.',
generation_config=genai.types.GenerationConfig(
candidate_count=1,
stop_sequences=['OpenAI'],
max_output_tokens=200,
temperature=0.7)
)
Markdown(response.text)
这段代码是一个Python脚本,用于生成文本内容。让我为您解释一下:
首先,这段代码定义了一个名为 response
的变量。它将存储生成的文本结果。然后,调用了一个名为 model.generate_content
的函数。这个函数接受两个参数:
candidate_count
设置为1,表示只生成一个候选结果。stop_sequences
设置为[‘OpenAI’],表示生成的文本会在遇到“OpenAI”这个词之后停止。max_output_tokens
设置为200,表示生成的文本最多包含200个标记(例如单词或字符)。temperature
设置为0.7,影响生成文本的随机性和多样性。第一个参数是一个字符串,表示输入的提示或问题。在这里,输入的提示是“Tell me the story of the rise of LLM and chatbots.”(请告诉我关于大型语言模型和聊天机器人崛起的故事。) 第二个参数是一个配置对象,其中包含了一些生成文本的设置: 最后,使用 Markdown(response.text)
将生成的文本转换为Markdown格式。
4. Gemini Pro 视图
Gemini Pro Vision 是一个 Gemini 大型语言视觉模型,除文本外,还能理解来自文本和视觉模式(图像和视频)的输入,从而生成相关的文本响应。
Gemini Pro Vision 是一个基础模型,在视觉理解、分类、总结以及从图像和视频创建内容等各种多模态任务中表现出色。它擅长处理视觉和文本输入,如照片、文档、信息图表和屏幕截图。
首先,我们使用以下代码加载图像:
import PIL.Image
img = PIL.Image.open('/content/images.jpg')
img
让我们加载 Gemini Pro Vision 模型并为其提供图像。
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(img)
Markdown(response.text)
圣殿山是位于耶路撒冷的圣地。它是犹太教最神圣的圣地,也是伊斯兰教第三神圣的圣地。圣殿山上有阿克萨清真寺、圆顶寺和西墙。圣殿山是一块有争议的领土,其地位是以色列人和巴勒斯坦人之间冲突的主要根源。
该模型准确地识别了圣殿,并提供了有关其历史的更多信息。
5. 使用双子座聊天对话
我们可以设置模型进行来回聊天。这样,模型就能记住之前对话的上下文和回复。在本例中,我们将启动聊天会话,并请模型帮助我开始使用大型语言模型。
model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
chat.send_message("Can you please guide me on how to start with Large Langeuag Models?")
chat.history
您可以看到,`chat` 对象正在保存用户和模式的历史记录
让我们提出后续问题
我们可以看到,模型回答了后续问题,同时也返回了第一个问题及其答案。
6. 双子座嵌入模型
嵌入模型在上下文感知应用领域越来越受欢迎。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]
通过向 "内容 "参数传递字符串列表,我们可以将多段文本转换为嵌入式内容。
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]
参考文献
-
如何免费访问和使用双子座 API[3] -
双子座 API[4]
Getting Started with Gemini API: A Comprehensive Practical Guide | by Youssef Hosni | Jan, 2024 | Towards AI: https://pub.towardsai.net/getting-started-with-gemini-api-a-comprehensive-practical-guide-442890b90780
[2]
Google AI Studio: https://makersuite.google.com/app/apikey
[3]
如何免费访问和使用双子座 API: https://www.kdnuggets.com/how-to-access-and-use-gemini-api-for-free
[4]
双子座 API: https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/gemini