<ph type="x-smartling-placeholder">
在 Google AI 上查看 | 在 Google Colab 中运行 | 在 GitHub 上查看源代码 |
本快速入门演示了如何将 Python SDK 用于 Gemini API, 可以使用 Google 的 Gemini 大语言模型。在本快速入门中, 您将学习如何:
- 设置开发环境和 API 访问权限才能使用 Gemini。
- 根据文本输入生成文本响应。
- 根据多模态输入(文本和图片)生成文本响应。
- 使用 Gemini 进行多轮对话(聊天)。
- 将嵌入用于大型语言模型。
前提条件
您可以在 Google Colab、 该命令会直接在浏览器中运行此笔记本, 环境配置。
或者,如需在本地完成本快速入门,请确保您的开发 满足下列要求:
- Python 3.9 及更高版本
- 安装用于运行笔记本的
jupyter
。
设置
安装 Python SDK
适用于 Gemini API 的 Python SDK 包含在
google-generativeai
软件包。
使用 pip 安装依赖项:
pip install -q -U google-generativeai
导入软件包
导入必要的软件包。
import pathlib
import textwrap
import google.generativeai as genai
from IPython.display import display
from IPython.display import Markdown
def to_markdown(text):
text = text.replace('•', ' *')
return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))
# Used to securely store your API key
from google.colab import userdata
设置您的 API 密钥
您必须先获取 API 密钥,然后才能使用 Gemini API。如果您 还没有密钥,只需在 Google AI Studio 中点击一下即可创建一个。
在 Colab 中,将密钥添加到 Secret 管理器中的“🔑?”下,。
将其命名为 GOOGLE_API_KEY
。
获得 API 密钥后,将其传递给 SDK。可以通过以下两种方法实现此目的:
- 将密钥放在
GOOGLE_API_KEY
环境变量中(SDK 将 则会自动从该位置提取信息)。 - 将密钥传递给
genai.configure(api_key=...)
# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
列出模型
现在,您可以调用 Gemini API 了。使用list_models
查看可用的
Gemini 模型:
gemini-1.5-flash
:我们最快的多模态模型gemini-1.5-pro
:我们最强大、最智能的多模态模型
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
根据文本输入生成文本
对于纯文字问题,请使用 Gemini 1.5 模型或 Gemini 1.0 Pro 模型:
model = genai.GenerativeModel('gemini-1.5-flash')
generate_content
方法可处理各种用例,包括
多轮聊天和多模态输入,具体取决于底层模型
支持。可用的模型仅支持输入文本和图片,
作为输出。
在最简单的情况下,您可以将提示字符串传递给
GenerativeModel.generate_content
方法:
%%time
response = model.generate_content("What is the meaning of life?")
CPU times: user 110 ms, sys: 12.3 ms, total: 123 ms Wall time: 8.25 s
在简单的情况下,您只需要 response.text
访问器即可。显示位置
格式的 Markdown 文本,请使用 to_markdown
函数:
to_markdown(response.text)
The query of life's purpose has perplexed people across centuries, cultures, and continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences. 1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one's physical and mental health, and pursuing personal goals and interests. 2. **Meaningful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing. 3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, pushing one's boundaries, confronting personal obstacles, and evolving as a person. 4. **Ethical and Moral Behavior:** Some believe that the goal of life is to act ethically and morally. This might entail adhering to one's moral principles, doing the right thing even when it is difficult, and attempting to make the world a better place. 5. **Spiritual Fulfillment:** For some, the purpose of life is connected to spiritual or religious beliefs. This might entail seeking a connection with a higher power, practicing religious rituals, or following spiritual teachings. 6. **Experiencing Life to the Fullest:** Some individuals believe that the goal of life is to experience all that it has to offer. This might entail traveling, trying new things, taking risks, and embracing new encounters. 7. **Legacy and Impact:** Others believe that the purpose of life is to leave a lasting legacy and impact on the world. This might entail accomplishing something noteworthy, being remembered for one's contributions, or inspiring and motivating others. 8. **Finding Balance and Harmony:** For some, the purpose of life is to find balance and harmony in all aspects of their lives. This might entail juggling personal, professional, and social obligations, seeking inner peace and contentment, and living a life that is in accordance with one's values and beliefs. Ultimately, the meaning of life is a personal journey, and different individuals may discover their own unique purpose through their experiences, reflections, and interactions with the world around them.
如果 API 无法返回结果,请使用
GenerateContentResponse.prompt_feedback
,看看它是否因为与提示相关的安全问题而被阻止。
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
Gemini 可以针对单个问题生成多个可能的回答。这些
称为 candidates
,您可以查看它们,以便选择
选择最合适的响应。
查看候选回复
GenerateContentResponse.candidates
:
response.candidates
[ content { parts { text: "The query of life\'s purpose has perplexed people across centuries, cultures, and continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences.\n\n1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one\'s physical and mental health, and pursuing personal goals and interests.\n\n2. **Meaningful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing.\n\n3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, pushing one\'s boundaries, confronting personal obstacles, and evolving as a person.\n\n4. **Ethical and Moral Behavior:** Some believe that the goal of life is to act ethically and morally. This might entail adhering to one\'s moral principles, doing the right thing even when it is difficult, and attempting to make the world a better place.\n\n5. **Spiritual Fulfillment:** For some, the purpose of life is connected to spiritual or religious beliefs. This might entail seeking a connection with a higher power, practicing religious rituals, or following spiritual teachings.\n\n6. **Experiencing Life to the Fullest:** Some individuals believe that the goal of life is to experience all that it has to offer. This might entail traveling, trying new things, taking risks, and embracing new encounters.\n\n7. **Legacy and Impact:** Others believe that the purpose of life is to leave a lasting legacy and impact on the world. This might entail accomplishing something noteworthy, being remembered for one\'s contributions, or inspiring and motivating others.\n\n8. **Finding Balance and Harmony:** For some, the purpose of life is to find balance and harmony in all aspects of their lives. This might entail juggling personal, professional, and social obligations, seeking inner peace and contentment, and living a life that is in accordance with one\'s values and beliefs.\n\nUltimately, the meaning of life is a personal journey, and different individuals may discover their own unique purpose through their experiences, reflections, and interactions with the world around them." } role: "model" } finish_reason: STOP index: 0 safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE } ]
默认情况下,模型会在完成整个生成过程后返回响应 过程。您还可以在生成响应时对其进行流式传输, 模型将在生成后立即返回响应数据块。
如需流式传输回复,请使用 GenerativeModel.generate_content(...,
stream=True)
。
%%time
response = model.generate_content("What is the meaning of life?", stream=True)
CPU times: user 102 ms, sys: 25.1 ms, total: 128 ms Wall time: 7.94 s
for chunk in response:
print(chunk.text)
print("_"*80)
The query of life's purpose has perplexed people across centuries, cultures, and ________________________________________________________________________________ continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences ________________________________________________________________________________ . 1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one's physical and mental health, and pursuing personal goals and aspirations. 2. **Meaning ________________________________________________________________________________ ful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing. 3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, exploring one's interests and abilities, overcoming obstacles, and becoming the best version of oneself. 4. **Connection and Relationships:** For many individuals, the purpose of life is found in their relationships with others. This might entail building ________________________________________________________________________________ strong bonds with family and friends, fostering a sense of community, and contributing to the well-being of those around them. 5. **Spiritual Fulfillment:** For those with religious or spiritual beliefs, the purpose of life may be centered on seeking spiritual fulfillment or enlightenment. This might entail following religious teachings, engaging in spiritual practices, or seeking a deeper understanding of the divine. 6. **Experiencing the Journey:** Some believe that the purpose of life is simply to experience the journey itself, with all its joys and sorrows. This perspective emphasizes embracing the present moment, appreciating life's experiences, and finding meaning in the act of living itself. 7. **Legacy and Impact:** For others, the goal of life is to leave a lasting legacy or impact on the world. This might entail making a significant contribution to a particular field, leaving a positive mark on future generations, or creating something that will be remembered and cherished long after one's lifetime. Ultimately, the meaning of life is a personal and subjective question, and there is no single, universally accepted answer. It is about discovering what brings you fulfillment, purpose, and meaning in your own life, and living in accordance with those values. ________________________________________________________________________________
流式传输时,除非您进行迭代,否则某些响应属性不可用 所有响应块。具体如下所示:
response = model.generate_content("What is the meaning of life?", stream=True)
prompt_feedback
属性的工作原理如下:
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
但 text
等属性不会:
try:
response.text
except Exception as e:
print(f'{type(e).__name__}: {e}')
IncompleteIterationError: Please let the response complete iteration before accessing the final accumulated attributes (or call `response.resolve()`)
根据图片和文本输入生成文本
Gemini 提供多种可处理多模态输入的模型 (Gemini 1.5 以便您可以输入文本和图片。请务必查看 提示的图片要求。
如果输入的提示同时包含文字和图片,请使用带有
GenerativeModel.generate_content
方法,用于生成文本输出:
我们添加一张图片:
curl -o image.jpg https://t0.gstatic.com/licensed-image?q=tbn:ANd9GcQ_Kevbk21QBRy-PgB4kQpS79brbmmEG7m3VOTShAn4PecDU5H5UxrJxE3Dw1JiaG17V88QIol19-3TM2wCHw
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 405k 100 405k 0 0 6982k 0 --:--:-- --:--:-- --:--:-- 7106k
import PIL.Image
img = PIL.Image.open('image.jpg')
img
使用 Gemini 1.5 模型,并通过 generate_content
将图片传递给模型。
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(img)
to_markdown(response.text)
Chicken Teriyaki Meal Prep Bowls with brown rice, roasted broccoli and bell peppers.
如需在提示中同时提供文本和图片,请传递一个包含字符串的列表 和图片:
response = model.generate_content(["Write a short, engaging blog post based on this picture. It should include a description of the meal in the photo and talk about my journey meal prepping.", img], stream=True)
response.resolve()
to_markdown(response.text)
Meal prepping is a great way to save time and money, and it can also help you to eat healthier. This meal is a great example of a healthy and delicious meal that can be easily prepped ahead of time. This meal features brown rice, roasted vegetables, and chicken teriyaki. The brown rice is a whole grain that is high in fiber and nutrients. The roasted vegetables are a great way to get your daily dose of vitamins and minerals. And the chicken teriyaki is a lean protein source that is also packed with flavor. This meal is easy to prepare ahead of time. Simply cook the brown rice, roast the vegetables, and cook the chicken teriyaki. Then, divide the meal into individual containers and store them in the refrigerator. When you're ready to eat, simply grab a container and heat it up. This meal is a great option for busy people who are looking for a healthy and delicious way to eat. It's also a great meal for those who are trying to lose weight or maintain a healthy weight. If you're looking for a healthy and delicious meal that can be easily prepped ahead of time, this meal is a great option. Give it a try today!
聊天对话
通过 Gemini,您可以跨多个回合进行自由形式的对话。通过
ChatSession
类通过管理
因此与 generate_content
不同,您无需存储
以列表形式显示会话记录
初始化聊天:
model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
chat
<google.generativeai.generative_models.ChatSession at 0x7b7b68250100>
通过
ChatSession.send_message
方法会返回GenerateContentResponse
GenerativeModel.generate_content
。
它还会将您的消息和回复附加到聊天记录中:
response = chat.send_message("In one sentence, explain how a computer works to a young child.")
to_markdown(response.text)
A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!
chat.history
[ parts { text: "In one sentence, explain how a computer works to a young child." } role: "user", parts { text: "A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!" } role: "model" ]
您可以继续发送消息以继续对话。使用
stream=True
参数来流式传输聊天内容:
response = chat.send_message("Okay, how about a more detailed explanation to a high schooler?", stream=True)
for chunk in response:
print(chunk.text)
print("_"*80)
A computer works by following instructions, called a program, which tells it what to ________________________________________________________________________________ do. These instructions are written in a special language that the computer can understand, and they are stored in the computer's memory. The computer's processor ________________________________________________________________________________ , or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program's logic. The results of these calculations and decisions are then displayed on the computer's screen or stored in memory for later use. To give you a simple analogy, imagine a computer as a ________________________________________________________________________________ chef following a recipe. The recipe is like the program, and the chef's actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen). In summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results. ________________________________________________________________________________
glm.Content
对象包含 glm.Part
对象列表,每个对象都包含
文本(字符串)或 inline_data (glm.Blob
),其中 blob 中包含二进制文件
和 mime_type
。聊天记录会以 glm.Content
列表的形式提供
对象
ChatSession.history
:
for message in chat.history:
display(to_markdown(f'**{message.role}**: {message.parts[0].text}'))
**user**: In one sentence, explain how a computer works to a young child. **model**: A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us! **user**: Okay, how about a more detailed explanation to a high schooler? **model**: A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer's memory. The computer's processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program's logic. The results of these calculations and decisions are then displayed on the computer's screen or stored in memory for later use. To give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef's actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen). In summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results.
计算词元数量
大语言模型具有上下文窗口,
按词元数量计算。利用 Gemini API,您可以
确定每个 genai.protos.Content
对象的词元数量。在
最简单的情况是,您可以将查询字符串传递给
GenerativeModel.count_tokens
方法:
model.count_tokens("What is the meaning of life?")
total_tokens: 7
同样,您也可以检查 ChatSession
的 token_count
:
model.count_tokens(chat.history)
total_tokens: 501
使用嵌入
嵌入 是一种用于将信息表示为一系列浮点数的技术 放在数组中。借助 Gemini,您可以表示文本(字词、句子和块) 以矢量化形式显示文本),以便于比较和对比 嵌入。例如,主题相似的两段文字,或 所有情感都应具有类似的嵌入,这些嵌入可通过 余弦相似度等数学比较技术如需详细了解如何 以及为什么应该使用嵌入,请参阅嵌入 指南。
使用 embed_content
方法生成嵌入。方法处理
嵌入函数 (task_type
):
任务类型 | 说明 |
---|---|
RETRIEVAL_QUERY | 将给定文本指定为搜索/检索设置中的查询。 |
RETRIEVAL_DOCUMENT | 将给定文本指定为搜索/检索设置中的文档。使用此任务类型需要 title 。 |
SEMANTIC_SIMILARITY | 指定给定文本用于语义文本相似度 (STS)。 |
分类 | 指定嵌入用于分类。 |
集群 | 指定嵌入用于聚类。 |
以下代码为文档检索的单个字符串生成嵌入:
result = genai.embed_content(
model="models/embedding-001",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")
# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')
[-0.003216741, -0.013358698, -0.017649598, -0.0091 ... TRIMMED]
如需处理批量字符串,请在 content
中传递字符串列表:
result = genai.embed_content(
model="models/embedding-001",
content=[
'What is the meaning of life?',
'How much wood would a woodchuck chuck?',
'How does the brain work?'],
task_type="retrieval_document",
title="Embedding of list of strings")
# A list of inputs > A list of vectors output
for v in result['embedding']:
print(str(v)[:50], '... TRIMMED ...')
[0.0040260437, 0.004124458, -0.014209415, -0.00183 ... TRIMMED ... [-0.004049845, -0.0075574904, -0.0073463684, -0.03 ... TRIMMED ... [0.025310587, -0.0080734305, -0.029902633, 0.01160 ... TRIMMED ...
虽然 genai.embed_content
函数接受字符串或字符串列表,但
实际上是围绕 genai.protos.Content
类型构建的(例如
GenerativeModel.generate_content
)。
glm.Content
对象是 API 中的主要对话单元。
当 genai.protos.Content
对象是多模态时,embed_content
方法仅支持文本嵌入。这种设计使得 API 能够
可能扩展到多模态嵌入。
response.candidates[0].content
parts { text: "A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer\'s memory. The computer\'s processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program\'s logic. The results of these calculations and decisions are then displayed on the computer\'s screen or stored in memory for later use.\n\nTo give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef\'s actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen).\n\nIn summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results." } role: "model"
result = genai.embed_content(
model = 'models/embedding-001',
content = response.candidates[0].content)
# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED ...')
[-0.013921871, -0.03504407, -0.0051786783, 0.03113 ... TRIMMED ...
同样,聊天记录包含 genai.protos.Content
对象列表,
您可以直接将其传递给 embed_content
函数:
chat.history
[ parts { text: "In one sentence, explain how a computer works to a young child." } role: "user", parts { text: "A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!" } role: "model", parts { text: "Okay, how about a more detailed explanation to a high schooler?" } role: "user", parts { text: "A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer\'s memory. The computer\'s processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program\'s logic. The results of these calculations and decisions are then displayed on the computer\'s screen or stored in memory for later use.\n\nTo give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef\'s actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen).\n\nIn summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results." } role: "model" ]
result = genai.embed_content(
model = 'models/embedding-001',
content = chat.history)
# 1 input > 1 vector output
for i,v in enumerate(result['embedding']):
print(str(v)[:50], '... TRIMMED...')
[-0.014632266, -0.042202696, -0.015757175, 0.01548 ... TRIMMED... [-0.010979066, -0.024494737, 0.0092659835, 0.00803 ... TRIMMED... [-0.010055617, -0.07208932, -0.00011750793, -0.023 ... TRIMMED... [-0.013921871, -0.03504407, -0.0051786783, 0.03113 ... TRIMMED...
高级用例
以下部分讨论高级用例和更低级别的详细信息, 适用于 Gemini API 的 Python SDK。
安全设置
借助 safety_settings
参数,您可以配置模型会屏蔽和
允许的行为。默认情况下,安全设置会屏蔽内容
的概率为中等和/或高
维度。了解关于安全的详情
设置。
输入有问题的提示,使用默认安全设置运行模型, 且不会返回任何候选字词:
response = model.generate_content('[Questionable prompt here]')
response.candidates
[ content { parts { text: "I\'m sorry, but this prompt involves a sensitive topic and I\'m not allowed to generate responses that are potentially harmful or inappropriate." } role: "model" } finish_reason: STOP index: 0 safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE } ]
prompt_feedback
会告诉您是哪个安全过滤器屏蔽了提示:
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
现在,使用新配置的安全设置向模型提供相同的提示, 您可能会收到回复
response = model.generate_content('[Questionable prompt here]',
safety_settings={'HARASSMENT':'block_none'})
response.text
另请注意,每个候选网络都有自己的 safety_ratings
,
但单个响应未能通过安全检查。
对邮件进行编码
前面部分依赖于 SDK 来让您轻松发送提示 该 API。本部分提供了与上一文本相同的完全类型化方法, 这样您就能更好地了解 SDK 对消息进行编码。
SDK 会尝试将您的消息转换为 genai.protos.Content
对象,
,其中包含 genai.protos.Part
对象列表,其中每个对象均包含以下元素之一:
text
(字符串)inline_data
(genai.protos.Blob
),其中 blob 包含二进制data
和mime_type
。- 或其他类型的数据
您还可以将其中任何类作为等效的字典传递。
因此,与上例等效的完全类型是:
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(
genai.protos.Content(
parts = [
genai.protos.Part(text="Write a short, engaging blog post based on this picture."),
genai.protos.Part(
inline_data=genai.protos.Blob(
mime_type='image/jpeg',
data=pathlib.Path('image.jpg').read_bytes()
)
),
],
),
stream=True)
response.resolve()
to_markdown(response.text[:100] + "... [TRIMMED] ...")
Meal prepping is a great way to save time and money, and it can also help you to eat healthier. By ... [TRIMMED] ...
多轮对话
虽然前面显示的 genai.ChatSession
类可以处理许多用例,但
会做出一些假设如果您的使用场景不适合这个对话
实现。请注意,genai.ChatSession
只是一个封装容器
周围
GenerativeModel.generate_content
。
除了处理单一请求外,它还可以处理多轮对话。
单封邮件是 genai.protos.Content
对象或兼容的
字典的方法,如前几部分所述。作为字典,
需要 role
和 parts
键。对话中的 role
可以是
user
(提供提示)或 model
(提供回答)。
传递 genai.protos.Content
对象列表,它将被视作
多轮聊天:
model = genai.GenerativeModel('gemini-1.5-flash')
messages = [
{'role':'user',
'parts': ["Briefly explain how a computer works to a young child."]}
]
response = model.generate_content(messages)
to_markdown(response.text)
Imagine a computer as a really smart friend who can help you with many things. Just like you have a brain to think and learn, a computer has a brain too, called a processor. It's like the boss of the computer, telling it what to do. Inside the computer, there's a special place called memory, which is like a big storage box. It remembers all the things you tell it to do, like opening games or playing videos. When you press buttons on the keyboard or click things on the screen with the mouse, you're sending messages to the computer. These messages travel through special wires, called cables, to the processor. The processor reads the messages and tells the computer what to do. It can open programs, show you pictures, or even play music for you. All the things you see on the screen are created by the graphics card, which is like a magic artist inside the computer. It takes the processor's instructions and turns them into colorful pictures and videos. To save your favorite games, videos, or pictures, the computer uses a special storage space called a hard drive. It's like a giant library where the computer can keep all your precious things safe. And when you want to connect to the internet to play games with friends or watch funny videos, the computer uses something called a network card to send and receive messages through the internet cables or Wi-Fi signals. So, just like your brain helps you learn and play, the computer's processor, memory, graphics card, hard drive, and network card all work together to make your computer a super-smart friend that can help you do amazing things!
如要继续对话,请添加回复和另一封邮件。
messages.append({'role':'model',
'parts':[response.text]})
messages.append({'role':'user',
'parts':["Okay, how about a more detailed explanation to a high school student?"]})
response = model.generate_content(messages)
to_markdown(response.text)
At its core, a computer is a machine that can be programmed to carry out a set of instructions. It consists of several essential components that work together to process, store, and display information: **1. Processor (CPU):** - The brain of the computer. - Executes instructions and performs calculations. - Speed measured in gigahertz (GHz). - More GHz generally means faster processing. **2. Memory (RAM):** - Temporary storage for data being processed. - Holds instructions and data while the program is running. - Measured in gigabytes (GB). - More GB of RAM allows for more programs to run simultaneously. **3. Storage (HDD/SSD):** - Permanent storage for data. - Stores operating system, programs, and user files. - Measured in gigabytes (GB) or terabytes (TB). - Hard disk drives (HDDs) are traditional, slower, and cheaper. - Solid-state drives (SSDs) are newer, faster, and more expensive. **4. Graphics Card (GPU):** - Processes and displays images. - Essential for gaming, video editing, and other graphics-intensive tasks. - Measured in video RAM (VRAM) and clock speed. **5. Motherboard:** - Connects all the components. - Provides power and communication pathways. **6. Input/Output (I/O) Devices:** - Allow the user to interact with the computer. - Examples: keyboard, mouse, monitor, printer. **7. Operating System (OS):** - Software that manages the computer's resources. - Provides a user interface and basic functionality. - Examples: Windows, macOS, Linux. When you run a program on your computer, the following happens: 1. The program instructions are loaded from storage into memory. 2. The processor reads the instructions from memory and executes them one by one. 3. If the instruction involves calculations, the processor performs them using its arithmetic logic unit (ALU). 4. If the instruction involves data, the processor reads or writes to memory. 5. The results of the calculations or data manipulation are stored in memory. 6. If the program needs to display something on the screen, it sends the necessary data to the graphics card. 7. The graphics card processes the data and sends it to the monitor, which displays it. This process continues until the program has completed its task or the user terminates it.
生成配置
借助 generation_config
实参,您可以修改生成形参。
您发送到模型的每个提示都包含参数值,用于控制
模型生成回答。
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(
'Tell me a story about a magic backpack.',
generation_config=genai.types.GenerationConfig(
# Only one candidate for now.
candidate_count=1,
stop_sequences=['x'],
max_output_tokens=20,
temperature=1.0)
)
text = response.text
if response.candidates[0].finish_reason.name == "MAX_TOKENS":
text += '...'
to_markdown(text)
Once upon a time, in a small town nestled amidst lush green hills, lived a young girl named...
后续步骤
- 提示设计是指创建能触发用户期望的提示, 进行响应。撰写结构合理的提示 确保使用某种语言给出准确、高质量的回复的重要部分 模型。了解提示的最佳做法 写作。
- Gemini 提供多种模型变体,以满足不同使用情形的需求 例如输入类型和复杂性、聊天或其他 对话框语言任务和大小限制。了解可用的 Gemini 模型。