调用Gemini API传入Prompt与PDF时遇Could not create Blob错误求助
问题解决:Gemini API传入PDF时的Blob创建错误
错误根源
你代码中使用的Part类来自vertexai.generative_models,但当前代码基于google-generativeai(即genai)库开发,两个库的Part对象不兼容,导致模型无法识别传入的PDF数据结构,触发Could not create Blob错误。
解决方案
替换
Part类的导入来源
使用google-generativeai库内置的Part类型,而非Vertex AI版本的Part。确保PDF数据格式正确
传入Part.from_data()的必须是PDF文件的二进制字节数据,若传入的是文件路径,需先以二进制模式读取。
修正后的完整代码
import google.generativeai as genai from google.generativeai.types import Part # 关键:导入正确的Part类 def get_vision_response(pdf_file): try: genai.configure(api_key=GOOGLE_API_KEY) model = genai.GenerativeModel( model_name="gemini-1.5-pro-latest", system_instruction=[ "你是一个精准的文本转录助手,能准确识别图像和PDF中的文字并转录。", "你的任务是转录提供的PDF文件中的所有文本内容。", ], ) # 若pdf_file是文件路径,取消注释以下代码读取为二进制数据 # with open(pdf_file, "rb") as f: # pdf_data = f.read() # pdf_part = Part.from_data(pdf_data, mime_type="application/pdf") pdf_part = Part.from_data(pdf_file, mime_type="application/pdf") prompt = "请转录这份PDF文档中的全部文本内容。" full_content = [prompt, pdf_part] response = model.generate_content(full_content) response.resolve() # 确保响应完全生成 return response.text except Exception as e: print("调用模型时发生错误") # 保存错误日志(指定utf-8编码避免乱码) with open("error_log.txt", "w", encoding="utf-8") as error_file: error_file.write(f"发生错误: {str(e)}\n")
额外注意事项
- 执行
pip install -U google-generativeai确保库版本为最新,避免旧版本的兼容性问题。 - 若传入的
pdf_file是文件路径而非二进制数据,必须先读取为字节流再传入Part.from_data()。 - 添加
response.resolve()是为了处理Gemini的流式响应机制,确保所有转录内容生成完毕后再获取结果。
内容的提问来源于stack exchange,提问作者Samir112
相关产品推荐
相关产品推荐

