openspg icon indicating copy to clipboard operation
openspg copied to clipboard

本地部署的embedding通过ollama接入报错

Open zhanglp8181 opened this issue 6 months ago • 5 comments

能正常接入deepseek,但是接入embedding的时候报错: Image

Image

Image

Image

Image

Image

zhanglp8181 avatar Jul 02 '25 03:07 zhanglp8181

配置向量模型采用ollama,chat模型采用本地模型正常,而bge-m3:latest模型报错unknown error PemjaUtils.invoke Exception:pemja.core.PythonException: <class 'RuntimeError'>: invalid vectorizer config: OpenAIVectorizeModel.generate_key() missing 1 required positional argument: 'api_key' 缺少api_key参数,在配置界面尚无添加api_key位置。 curl http://192.168.0.100:11434/v1/embeddings -d '{"model": "bge-m3:latest","input": ["work"]}'容器内测试正常 在经过容器内查看代码发现向量模型是没api_key参数的,配置和调用都会出错,是代码问题

luojiacheng123 avatar Jul 03 '25 00:07 luojiacheng123

Thank you for bringing this to our attention. As a temporary solution, you may set a random api_key value in the custom fields to work around this issue. We are actively working on a permanent fix for this problem.

northmachine avatar Jul 03 '25 02:07 northmachine

上述朋友在最后一张图,在自定义字段上添加了api_key值也尚无效果。

Image

luojiacheng123 avatar Jul 04 '25 01:07 luojiacheng123

解决办法:进入docker
docker exec -it release-openspg-server bash 添加向量模型api 编辑文件vim /home/admin/miniconda3/lib/python3.10/site-packages/kag/common/vectorize_model/vectorize_model_config_checker.py 修改 config = json.loads(vectorizer_config) from kag.interface import VectorizeModelABC vectorizer = VectorizeModelABC.from_config(config) 为 config = json.loads(vectorizer_config) if "api_key" not in config: config["api_key"] = "e" from kag.interface import VectorizeModelABC vectorizer = VectorizeModelABC.from_config(config) 添加知识库中调用的向量模型api 编辑文件vim /home/admin/miniconda3/lib/python3.10/site-packages/kag/bridge/spg_server_bridge.py 修改 def run_component(self, component_name, component_config, input_data): if isinstance(component_config, str): component_config = json.loads(component_config) task_id = component_config.get("task_id", "0") 添加api字段修改为 def run_component(self, component_name, component_config, input_data): if isinstance(component_config, str): component_config = json.loads(component_config) if 'vectorize_model' in component_config: if 'api_key' not in component_config['vectorize_model']: component_config['vectorize_model']['api_key'] = "e" task_id = component_config.get("task_id", "0")

luojiacheng123 avatar Jul 05 '25 08:07 luojiacheng123

解决办法:进入docker docker exec -it release-openspg-server bash 添加向量模型api 编辑文件vim /home/admin/miniconda3/lib/python3.10/site-packages/kag/common/vectorize_model/vectorize_model_config_checker.py 修改 config = json.loads(vectorizer_config) from kag.interface import VectorizeModelABC vectorizer = VectorizeModelABC.from_config(config) 为 config = json.loads(vectorizer_config) if "api_key" not in config: config["api_key"] = "e" from kag.interface import VectorizeModelABC vectorizer = VectorizeModelABC.from_config(config) 添加知识库中调用的向量模型api 编辑文件vim /home/admin/miniconda3/lib/python3.10/site-packages/kag/bridge/spg_server_bridge.py 修改 def run_component(self, component_name, component_config, input_data): if isinstance(component_config, str): component_config = json.loads(component_config) task_id = component_config.get("task_id", "0") 添加api字段修改为 def run_component(self, component_name, component_config, input_data): if isinstance(component_config, str): component_config = json.loads(component_config) if 'vectorize_model' in component_config: if 'api_key' not in component_config['vectorize_model']: component_config['vectorize_model']['api_key'] = "e" task_id = component_config.get("task_id", "0")

非常感谢,非常感谢!

zhanglp8181 avatar Jul 05 '25 16:07 zhanglp8181