使用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
相关产品推荐
相关产品推荐

