最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何正确实现 Gemini Pro 的多轮对话(Multiturn Chat)
时间:2026-07-11 09:32:52 编辑:袖梨 来源:一聚教程网
本文详解 Gemini Pro 多轮对话的两种官方推荐方式——手动维护消息列表与使用 start_chat() 会话对象,解决因 SDK 版本过低或消息格式混用导致的 TypeError 错误。
本文详解 gemini pro 多轮对话的两种官方推荐方式——手动维护消息列表与使用 `start_chat()` 会话对象,解决因 sdk 版本过低或消息格式混用导致的 `typeerror` 错误。
在使用 Google Generative AI Python SDK 调用 gemini-pro 模型进行多轮对话时,开发者常遇到如下错误:
TypeError: Could not create `Blob`, expected `Blob`, `dict` or an `Image` type...Got a: <class 'google.ai.generativelanguage_v1beta.types.content.Content'>
该错误并非逻辑缺陷,而是 SDK 版本兼容性问题:旧版(如 <0.5.0)对 Content 对象与字典混合传入 generate_content() 的支持不完善,导致类型校验失败。
✅ 正确做法一:升级 SDK 并规范使用 generate_content()(适用于精细控制消息流)
首先确保安装最新稳定版 SDK:
pip install --upgrade google-generativeai
验证版本(推荐 ≥ 0.5.1):
import google.generativeai as genaiprint(genai.__version__) # 应输出 '0.5.1' 或更高
然后按以下方式构建消息历史(注意:response.candidates[0].content 是 Content 类型,SDK 0.5.1+ 已原生支持直接追加):
model = genai.GenerativeModel("gemini-pro")messages = [{"role": "user", "parts": ["hello"]}]response = model.generate_content(messages)messages.append(response.candidates[0].content) # ✅ 兼容新版:Content 可直接 appendmessages.append({"role": "user", "parts": ["How does quantum physics work?"]})response = model.generate_content(messages)print(response.text)# 输出示例:**Quantum physics** is a fundamental theory in physics that describes...
✅ 正确做法二:优先使用 start_chat()(更简洁、更健壮)
start_chat() 封装了会话状态管理,自动处理消息序列、角色轮换与上下文累积,是官方推荐的多轮交互首选方式:
model = genai.GenerativeModel("gemini-pro")convo = model.start_chat() # 创建持久化会话对象# 第一轮r1 = convo.send_message("hello")print(r1.text) # → "Hello! How can I assist you today?"# 第二轮(自动携带历史)r2 = convo.send_message("How does quantum physics work?")print(r2.text) # → 完整回答,基于前序上下文
⚠️ 注意事项:
- 不要混用两种模式:避免在 convo 对象上调用 generate_content(),也不要在手动 messages 列表中插入 convo.history 的原始 Content 对象(除非明确理解其结构);
- send_message() 返回 ChatResponse,其 .text 属性即为模型生成文本;若需访问完整结构,请用 .candidates[0].content.parts[0].text;
- 若需重置会话,重新调用 model.start_chat() 即可,无需手动清空;
- 所有 parts 字段必须为字符串列表(即使单条文本也写作 ["text"]),不支持纯字符串。
? 总结:
多轮对话失败的核心原因通常是 SDK 版本滞后。升级至 google-generativeai >= 0.5.1 后,两种方式均可稳定运行;但生产环境中强烈建议采用 start_chat() ——它语义清晰、容错性强,且与 Gemini 的会话式设计哲学完全对齐。
相关文章
- 出发吧麦芬学者风暴之主养成攻略 07-20
- 英雄冒险团全部传家宝获取方法汇总 07-20
- 王者万象棋新手入门指引 王者万象棋零基础快速上手教程 07-20
- 检疫区最后一站金色收集品怎么获得 隐藏收集品获得方法介绍 07-20
- 息风谷战略牡丹如何获得 息风谷战略牡丹招募与获取方法详解 07-20
- 一梦九霄职业选择攻略 一梦九霄新手必看三大职业推荐与详细对比 07-20