如何写一个自定义的LLM包装器#
这个notebook将介绍如何创建一个自定义的LLM包装器,以便您可以使用自己的LLM或与LangChain支持的不同包装器。自定义LLM只需要实现一个必需的方法:
_call方法,它接受一个字符串输入和一个可选的停用词列表,并返回一个字符串结果。 也可以实现一个可选的方法:_identifying_params属性,用于帮助打印该类。应返回一个字典。
我们来实现一个非常简单的自定义LLM,它只返回输入文本的前N个字符。
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那样使用这个自定义的LLM了。
llm = CustomLLM(n=10)
llm("This is a foobar thing")
'This is a '
我们还可以打印这个LLM并查看自定义的打印效果。
print(llm)
CustomLLM
Params: {'n': 10}