
本文详细讲解使用 Google Generative AI SDK 实现 Gemini Pro 多轮对话的两种标准方式(generate_content 手动维护消息列表 和 start_chat() 自动管理会话),并解决常见类型错误,强调 SDK 版本兼容性与消息格式规范。
本文详细讲解使用 google generative ai sdk 实现 gemini pro 多轮对话的两种标准方式(`generate_content` 手动维护消息列表 和 `start_chat()` 自动管理会话),并解决常见类型错误,强调 sdk 版本兼容性与消息格式规范。
在使用 gemini-pro 模型进行多轮对话时,开发者常因消息结构混用或 SDK 版本过旧而遇到类似 TypeError: Could not create Blob... got ✅ 推荐方案一:使用 start_chat()(推荐新手 & 生产环境) ✅ 推荐方案二:手动调用 generate_content(适合需精细控制消息结构的场景) ⚠️ 关键注意事项: 总结:多轮对话的核心在于消息序列的一致性与 SDK 的版本匹配。优先选用 start_chat() + send_message() 组合,安全、简洁、符合最佳实践;若需底层控制,请统一使用字典格式构建 messages,并通过 .text 属性提取模型回复内容,确保类型纯净。
这是官方封装的会话管理方式,自动处理消息历史、角色对齐与状态持久化,代码简洁且健壮:import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
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("Explain quantum superposition in simple terms.")
print(r2.text) # 输出基于上下文的连贯回答
若需自定义消息顺序或插入系统提示,可手动构建 messages 列表,但必须确保所有元素统一为字典格式(而非混入 Content 对象):model = genai.GenerativeModel("gemini-pro")
# 初始化消息列表(全部为 dict)
messages = [
{"role": "user", "parts": ["Hello"]},
]
# 第一次生成
response = model.generate_content(messages)
messages.append({"role": "model", "parts": [response.text]}) # ✅ 提取 .text 转为字符串,保持字典结构
# 第二轮用户输入
messages.append({"role": "user", "parts": ["How does quantum physics work?"]})
response = model.generate_content(messages)
print(response.text)











