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)

浙公網安備 33010602011771號