You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gemini API调用generate_content触发KeyError问题求助

解决Gemini API调用的KeyError格式适配问题

问题根源

Gemini API的generate_content方法不兼容OpenAI风格的{'role': 'xxx', 'content': 'xxx'}字典结构,它要求对话内容必须遵循自身格式规范:

  • 每个对话条目(Content)必须包含parts键
  • 每个parts中的元素(Part)必须包含text(文本内容)或inline_data(多媒体内容)键

解决方案

场景1:单轮用户查询

如果仅处理单轮用户提问,直接传入问题文本即可:

# 获取用户问题
question = st.chat_input("Ask here")
# 直接传入文本调用模型
response = model.generate_content(question)
botmsg.write(response.text)

场景2:多轮对话(带上下文)

如果需要携带历史对话上下文,必须按照Gemini的格式构造对话列表:

# 构造符合Gemini要求的带上下文prompt
prompt = [
    # 历史用户消息
    {"role": "user", "parts": [{"text": "帮我解读PDF里的技术细节"}]},
    # 历史模型回复
    {"role": "model", "parts": [{"text": "请提出具体问题"}]},
    # 当前用户问题
    {"role": "user", "parts": [{"text": question}]}
]

response = model.generate_content(prompt)
botmsg.write(response.text)

错误信息翻译

KeyError: "无法识别传入字典的类型。Content应包含'parts'键,Part应包含'inline_data'或'text'键,Blob应包含'mime_type'和'data'键。当前传入的键为:['role', 'content']"

内容的提问来源于stack exchange,提问作者sophinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:52:32