最新一段时间一直在学习LangChain相关的文档,发现LangChain提供了非常丰富的生态,并且也可以让业务非常方便的封装自己的工具,接入到LangcChain的生态中,比如切换不同向量存储(Vectorstores)、文件分片(Text Splitters)和文件加载器(Document Loaders)等。 本文将简单介绍下如何将自己搭建的ChatGLM
集成进LangChain工具链中,当然如果有其他的自己搭建的LLM模型也可以采用类似的方式集成。
接入自己的LLM
参考官方文档# How to write a custom LLM wrapper,只需要集成LLM
方法,并且实现_call
方法即可。一个简单的自定义LLM如下:
python复制代码from langchain.llms.base import LLM
from typing import Optional, List, Mapping, Any
class CustomLLM(LLM):
n:int
@property
def _llm_type(self) -> str:
return "custom"
def _call(self,prompt:str,stop:Optional[List[str]]=None) -> str:
if stop is not None:
raise ValueError("stop kwargs are not permitted")
return prompt[:self.n]
@property
def _identifying_params(self) -> Mapping