LangChain文档 语言模型-大语言模型-自定义LLM

503 阅读1分钟

自定义LLM

本笔记本介绍如何创建自定义LLM包装器,以便您可以使用自己的LLM或不同于LangChain支持的包装器。

一个自定义LLM需要实现唯一必需的事情:

一个_call方法,它接受一个字符串、一些可选的停用词,并返回一个字符串。 它还可以实现第二个可选项:

_identifying_params属性,用于帮助打印此类。应该返回一个字典。 让我们实现一个非常简单的自定义LLM,它只是返回输入的前N个字符。

from typing import Any, List, Mapping, Optional

from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms.base import LLM
class CustomLLM(LLM):
    n: int

    @property
    def _llm_type(self) -> str:
        return "custom"

    def _call(
        self,
        prompt: str,
        stop: Optional[List[str]] = None,
        run_manager: Optional[CallbackManagerForLLMRun] = 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 = CustomLLM(n=10)
llm("This is a foobar thing")
    'This is a '

打印大语言模型信息

    print(llm)
        CustomLLM
    Params: {'n': 10}