CrewAI中PDFSearchTool适配ChatGroq解决OPENAI_API_KEY报错
解决CrewAI中PDFSearchTool触发OPENAI_API_KEY缺失的KeyError问题
问题背景
已在tools.py和agents.py中配置ChatGroq作为LLM,但执行python crew.py时触发KeyError: 'OPENAI_API_KEY',原因是PDFSearchTool默认依赖OpenAI的嵌入模型,未适配ChatGroq环境。
报错根因
从报错栈可知,PDFSearchTool内部依赖的embedchain库默认初始化OpenAIEmbedder,该类强制读取OPENAI_API_KEY环境变量,而用户未配置此变量,因此抛出KeyError。
修复步骤
初始化PDFSearchTool时,通过config参数明确指定LLM提供商为Groq,并配置对应的嵌入模型(可选用Groq支持的模型,或替换为Ollama、Google等其他兼容提供商)。
修改后的tools.py关键代码如下:
import os from dotenv import load_dotenv from langchain_groq import ChatGroq from crewai_tools import PDFSearchTool, SerperDevTool load_dotenv() # Initialize the ChatGroq model llm = ChatGroq( model="llama-3.1-70b-versatile", temperature=0.7, groq_api_key=os.getenv('GROQ_API_KEY'), verbose=True ) os.environ['SERPER_API_KEY'] = os.getenv('SERPER_API_KEY') # 初始化PDFSearchTool时配置Groq作为LLM和嵌入模型提供商 pdf_tool = PDFSearchTool( config=dict( llm=dict( provider="groq", config=dict( model="llama-3.1-70b-versatile", temperature=0.7, api_key=os.getenv('GROQ_API_KEY') ), ), embedder=dict( # 可选:使用Groq的嵌入模型,或替换为其他支持的提供商如ollama/google provider="groq", config=dict( model="llama-3.1-70b-versatile", api_key=os.getenv('GROQ_API_KEY') ), ), ) ) serper_tool = SerperDevTool()
额外优化提示
agents.py中重复配置的ChatGroq实例可改为从tools.py导入,避免代码冗余:
# agents.py中替换原有llm配置 from tools import llm
内容的提问来源于stack exchange,提问作者Priyanshu Khare
相关产品推荐
相关产品推荐

