LangChain调用NVIDIA模型正常,CrewAI集成时提示无效API密钥的解决方法
问题解决方案
问题原因
单独用LangChain调用NVIDIA Llama3-70B模型正常,但集成到CrewAI时出现401无效API密钥错误,核心原因是CrewAI中的各个Agent默认使用OpenAI官方模型,未指定使用你定义的NVIDIA Llama3实例,导致Agent仍向OpenAI API发送请求,而你的NVIDIA API密钥在OpenAI平台自然无效。
具体解决步骤
1. 修改Agent定义,强制绑定自定义LLM
在AiBlogCreationAgent类中,每个Agent创建方法需要接收LLM参数,并将其绑定到Agent实例的llm属性上。示例修改如下:
# agents.py 中的代码调整 from crewai import Agent class AiBlogCreationAgent: def editor_agent(self, llm): return Agent( role="内容编辑", goal="确保最终博客逻辑通顺、符合发布规范", backstory="拥有5年科技内容编辑经验,擅长优化专业博客结构", llm=llm, # 关键:绑定自定义LLM实例 verbose=True ) # 对其他Agent方法做同样修改 def blog_fetch_agent(self, llm): return Agent( role="博客内容抓取员", goal="精准获取指定主题的参考博客内容", backstory="熟悉网页信息提取技术,擅长筛选高质量参考资料", llm=llm, verbose=True ) # blog_analyzer_agent、blog_complier_agent 方法同理调整
2. 在主代码中传递LLM给所有Agent
创建Agent实例时,将你定义的NVIDIA Llama3实例传入每个Agent:
# 主代码中的调整 llm = ChatOpenAI( model = "meta/llama3-70b-instruct", base_url = "https://integrate.api.nvidia.com/v1", openai_api_key=os.environ['OPENAI_API_KEY'], # 显式传入密钥,避免依赖默认读取逻辑 streaming=True ) # 传递llm给每个Agent实例 editor=agents.editor_agent(llm) blog_fetcher=agents.blog_fetch_agent(llm) blog_analyzer=agents.blog_analyzer_agent(llm) blog_complier=agents.blog_compiler_agent(llm)
3. 额外验证项
- 确认
.env文件中的OPENAI_API_KEY确实是你的NVIDIA API密钥,没有混入OpenAI官方密钥。 - 检查CrewAI版本,确保使用的版本支持自定义LLM传递给Agent(较新版本的CrewAI均支持此功能)。
关键说明
你之前仅将自定义LLM传给了Crew的manager_llm参数,但CrewAI中执行具体任务的每个Agent都需要单独指定LLM,否则会默认使用OpenAI的gpt-3.5-turbo模型,从而触发密钥不匹配的错误。
内容的提问来源于stack exchange,提问作者Chirag jha
相关产品推荐
相关产品推荐

