Gradio全解11——Streaming:流式传输的视频应用(7)——多模态Gemini模型及其思考模式
本章目录如下:
- 《Gradio全解11——Streaming:流式传输的视频应用(1)——FastRTC:Python实时通信库》
- 《Gradio全解11——Streaming:流式传输的视频应用(2)——Twilio:网络服务提供商》
- 《Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战》
- 《Gradio全解11——Streaming:流式传输的视频应用(4)——基于Gradio.WebRTC+YOLO的实时目标检测》
- 《Gradio全解11——Streaming:流式传输的视频应用(5)——RT-DETR:实时端到端检测模型》
- 《Gradio全解10——Streaming:流式传输的视频应用(6)——基于RT-DETR模型构建目标检测系统》
- 《Gradio全解11——Streaming:流式传输的视频应用(7)——多模态Gemini模型及其思考模式》
- 《Gradio全解11——Streaming:流式传输的视频应用(8)——Gemini Live API:实时音视频连接》
- 《Gradio全解11——Streaming:流式传输的视频应用(9)——使用FastRTC+Gemini创建沉浸式音频+视频的艺术评论家》
11.7 多模态Gemini模型及其思考模式
在使用FastRTC+Gemini创建实时沉浸式音频+视频演示之前,先了解下Gemini模型和它的Live API。本节先介绍Gemini模型,内容包括Gemini系列模型介绍、思考预算和思路总结的thinking模式示例。
11.7.1 Gemini模型简介及入门实战
本节先介绍Gemini系列模型,然后安装Gemini并提交第一个请求。
1. Gemini系列模型
Gemini是一款由Google DeepMind(谷歌母公司Alphabet下设立的人工智能实验室)于2023年12月6日发布的人工智能模型,可同时识别文本、图像、音频、视频和代码五种类型信息,还可以理解并生成主流编程语言(如Python、Java、C++)的高质量代码,并拥有全面的安全性评估。首个版本为Gemini 1.0,包括三个不同体量的模型:用于处理“高度复杂任务”的Gemini Ultra、用于处理多个任务的Gemini Nano和用于处理“终端设备特定任务”的Gemini Pro。
2025年3月26日,谷歌正式推出新一代人工智能推理模型Gemini 2.5系列,其典型模型有:最强大的思考型模型Gemini 2.5 Pro、性价比出色且功能全面的Gemini 2.5 Flash、最具成本效益且支持高吞吐量的模型Gemini 2.5 Flash-Lite、低延迟的双向语音和视频互动模型Gemini 2.5 Flash Live。此外,Gemini发布的实现各类功能模型还包括:用于图片生成的Imagen 4(模型代码:imagen-4.0-generate-001),用于视频生成的Veo 3(veo-3.0-generate-preview),用于音乐生成的Lyria RealTime(lyria-realtime-exp),以及用于词嵌入的Embeddings(gemini-embedding-001)。关于Gemini信息及其系列模型详情请参阅:Gemini Developer API🖇️链接11-40。
2. 安装并提交第一个请求
首先,需要设置Gemini API密钥,免费获取地址:Google AI Studio🖇️链接11-41。将Gemini API密钥设置为环境变量GEMINI_API_KEY,或在初始化客户端时将其作为实参传递。
然后安装Google GenAI SDK,要求Python>=3.9,通过以下pip命令安装google-genai软件包:
pip install -q -U google-genai
Google GenAI SDK支持Python、JavaScript/TypeScript、Go和Java语言。开发者可通过包管理器安装各语言库,或访问其GitHub仓库进行深度参与,以Python为例,其GitHub仓库为:googleapis/python-genai🖇️链接11-42。
提交第一个请求:以下示例使用模型的生成文本generate_content()方法,通过模型Gemini 2.5 Flash向Gemini API发送请求内容。
from google import genai
# The client gets the API key from the environment variable `GEMINI_API_KEY`.
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash", contents="Explain how AI works in a few words"
)
print(response.text)
models.generate_content根据输入的GenerateContentRequest生成模型响应,不同模型(包括调优模型)的输入能力存在差异,详情请查阅:Generating content🖇️链接11-43。
11.7.2 thinking模式示例:思考预算和思路总结
本节通过思考预算和思路总结两种方式及其示例,介绍当前流行的thinking模式。
1. thinking_budget:思考预算
在使用Gemini 2.5 Flash模型时,默认启用“思考”功能,以提高回答质量。由于思考功能会增加响应时间和令牌用量,当优先考虑速度或希望最大限度地降低成本时,可以将thinkingBudget设置为零来停用此功能。thinkingBudget表示用于思考的token数量,一般来说,token数量越多,推理就越细致,这有助于处理更复杂的任务。如果延迟时间更重要,可以使用较低的预算,或将thinkingBudget设置为0来停用思考。当thinkingBudget设置为-1时会开启动态思考,这意味着模型会根据请求的复杂程度调整预算。还是以生成文本为例,thinkingBudget的演示代码如下所示:
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Explain how AI works in a few words",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=0)),
)
print(response.text)
注意:思考功能仅适用于Gemini 2.5系列模型,并且无法在Gemini 2.5 Pro上停用。每种类型模型的thinkingBudget配置详细信息如表11-4所示:
| 型号 | 默认设置 | Range | 停用思考 |
|---|---|---|---|
| 2.5 Pro | 动态思考 | 128到32768 | 不适用:无法停用思考 |
| 2.5 Flash | 动态思考 | 0到24576 | thinkingBudget = 0 |
| 2.5 Flash Lite | 不思考 | 512到24576 | thinkingBudget = 0 |
2. include_thoughts:思路总结
此外,还可以设置includeThoughts为true,以启用思路总结,它是模型原始思考的合成版本,可帮助用户深入了解模型的内部推理过程。然后,通过迭代response参数的parts并检查其thought布尔值来访问它的文本摘要。
以下示例展示了如何在不进行流式传输的情况下启用和检索思路总结,该方法会在返回单个响应的最终思路总结:
from google import genai
from google.genai import types
client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
print("Thought summary:")
print(part.text + "\n")
else:
print("Answer:")
print(part.text + "\n")
以下示例展示了如何使用流式思考(for循环之前代码与上例一致),该功能可在生成期间返回滚动式增量摘要:
from google import genai
from google.genai import types
client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
thoughts = ""
answer = ""
for chunk in client.models.generate_content_stream(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
):
for part in chunk.candidates[0].content.parts:
if not part.text:
continue
elif part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Answer:")
print(part.text)
answer += part.text
除了生成文本和思考模式,Gemini系列模型的核心功能还包括:图片生成、语音生成、长上下文、结构化输出、文档理解、图片理解、视频理解、音频理解与函数调用等,还有工具类:Google搜索types.GoogleSearch()、代码执行types.ToolCodeExecution与网址上下文types.UrlContext等,更多功能及工具详情请参阅:Gemini API - Text generation🖇️链接11-44。
862

被折叠的 条评论
为什么被折叠?



