langchain Chatchat 学习实践(三)——实现对Ollama的支持
更新:最新版Ollama已经支持openai接口,没有必应单独实现了:
"openai-api": {
"model_name": "qwen:7b",
"api_base_url": "http://{host}:11434/v1",
"api_key": "ollama",
"openai_proxy": "",
},
===================================
以下为ollama不支持openai时的实现方式:
1、采用Langchain的Ollama库,新建get_BaseChatModel方法,按照名称返回ChatOllama或ChatOpenAI实例; 2、在model_config.py.example中添加了ollama相关配置,用于设置ollama模型名称和ollama部署发布地址; 3、在chat.py,knowledge_base_chat.py,file_chat.py,search_engine_chat.py,agent_chat.py中将原有的get_BaseChatOpenAI改为get_BaseChatModel,按照模型名称返回ChatOpenAI或ChatOllama实例; 4、ollama的Prompt不支持类似"{{ input }}"这样的变量格式,只能是单括号且没有空格的定义方式,类似"{input}",因而在部分对话模块添加了字符串替换处理:prompt_template=prompt_template.replace("{ ", "").replace(" }", ""); 5、langchain的ollama没有model_name属性,因此在agent_chat.py添加了判断是否有该属性的代码; 6、对话历史转换部分,由于ollama不支持通过to_msg_template转换后的格式,但是支持tuple格式,因此根据模型名称判断,如果是ollama模型,改为调用to_msg_tuple方法;
详情可查看PR:
实现了Langchain Chatchat对Ollama的支持 by srszzw · Pull Request #3492 · chatchat-space/Langchain-Chatchat (github.com)