赞
踩
最新一段时间一直在学习LangChain相关的文档,发现LangChain提供了非常丰富的生态,并且也可以让业务非常方便的封装自己的工具,接入到LangcChain的生态中,比如切换不同向量存储(Vectorstores)、文件分片(Text Splitters)和文件加载器(Document Loaders)等。 本文将简单介绍下如何将自己搭建的ChatGLM
集成进LangChain工具链中,当然如果有其他的自己搭建的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[str, Any]: """Get the identifying parameters.""" return {"n": self.n}
上面虽然只是一个最简单的实现,但是进一步思考,如果有自己的LLM,是不是也可以通过类似的方式接入到LangChain的生态中呢?
正好最近也在搭建ChatGLM,于是在想是不是可以将ChatGLM加入到LangChain工具链中来,利用其提供的工具方便做更深入的研究。于是搜索了一番,果然有类似开源实现,比如thomas-yanxin LangChain-ChatGLM-Webui,一种利用 ChatGLM-6B实现的基于本地知识的 ChatGLM 应用。但是研究了一下代码,发现其是将ChatGLM-6B和LangChain部署在一起的。但是由于资源有限,目前只有少量的显卡,不能每个人都能部署一套ChatGLM。
进一步思考,是否ChatGLM也提供了类似于openai的api接口呢,只需要进行http调用就可以使用ChatGLM的能力?这样就可以将:ChatGLM和上层的应用解耦,每个人都可以在自己本地通过api调用来进行实验。
查阅ChatGLM-6B文档,也发现了其确实可以通过API方式提供服务。 具体如下:
pip install fastapi uvicorn
,然后运行仓库中的 api.py: python api.py
rust复制代码curl -X POST "http://{your_host}:8000" \
-H 'Content-Type: application/json' \
-d '{"prompt": "你好", "history": []}'
lua复制代码{
"response":"你好声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/901307
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。