问题:
在使用crewAI开发项目的过程中,memory开启后报错:openai key is fake
经代码核查,其默认使用了openai的embedding模型。
解决方法
经查阅资料,可以参考其本地部署llm的方法。
本地部署模型可以使用xinference框架,其好处在于完全兼容openai的api。
关键代码
openai环境变量设置
#xinference服务api的url
os.environ['OPENAI_API_BASE'] = 'http://localhost:9997/v1'
#xinference要求key只要不为空就行
os.environ['OPENAI_API_KEY'] = 'not empty'
crew类声明中设置embedder属性
crew = Crew(agents=[agent2, agent3, agent4, agent5, agent6],tasks=[task1, task2, task3, task4, task5, task6, task7, task8],verbose=2, # You can set it to 1 or 2 to different logging levelsmemory=True,output_log_file = True,#function_calling_llm = zhipullm,embedder={"provider": "openai","config":{#模型设为xinference的模型UID"model": 'custom-embedding-bge-large-zh-v1.5'}},share_crew = False,)
即可正常运行。
成功运行,xinference的服务窗口显示如下:
windows下xinferece框架使用的注意事项
- 安装不要安装全部
#不要用
pip install "xinference[all]"
#单独安装transformers即可,基本目前的模型都支持
pip install "xinference[transformers]"
- 启动命令ip不要用0.0.0.0,而是用127.0.0.1
xinference-local --host 127.0.0.1 --port 9997
- 记得提前安装transformers相关的软件支持例如CUDA、pytorch等等。
- 强烈建议xinferece使用单独的虚拟环境。避免依赖版本冲突。