使用PDFSearchTool调用Groq API时遇cannot pickle 'classmethod'对象错误
解决PDFSearchTool搭配Groq API时的TypeError问题
我尝试用PDFSearchTool结合Groq API创建可检索PDF信息的智能体,已配置好GROQ_API_KEY环境变量,但执行代码时出现TypeError: cannot pickle 'classmethod' object错误,怀疑是库版本不兼容导致。
运行的代码如下:
from crewai_tools import PDFSearchTool rag_tool = PDFSearchTool(pdf='/content/17.pdf', config=dict( llm=dict( provider="groq", # or google, openai, anthropic, llama2, ... config=dict( model="llama3-8b-8192", # temperature=0.5, # top_p=1, # stream=true, ), ), embedder=dict( provider="huggingface", # or openai, ollama, ... config=dict( model="BAAI/bge-small-en-v1.5", #task_type="retrieval_document", # title="Embeddings", ), ), ) )
报错信息:
TypeError: cannot pickle 'classmethod' object
解决方案
- 锁定兼容的库版本:该错误多因crewai-tools与langchain-groq版本不匹配导致,建议安装指定兼容版本:
pip install crewai-tools==0.1.19 langchain-groq==0.1.3 - 简化配置方式:避免通过嵌套字典传递配置,直接初始化LLM和嵌入器实例后传入PDFSearchTool:
from crewai_tools import PDFSearchTool from langchain_groq import ChatGroq from langchain.embeddings import HuggingFaceEmbeddings # 初始化Groq LLM llm = ChatGroq(model="llama3-8b-8192") # 初始化HuggingFace嵌入器 embedder = HuggingFaceEmbeddings(model_name="BAAI/bge-small-en-v1.5") # 创建PDF检索工具 rag_tool = PDFSearchTool( pdf='/content/17.pdf', llm=llm, embedder=embedder ) - 统一依赖版本:确保langchain、langchain-core、langchain-groq等相关库保持同一主版本,避免跨版本兼容性问题。
内容的提问来源于stack exchange,提问作者Nikki Sixx
相关产品推荐
相关产品推荐

