淄博三合一网站开发,环球网最新消息,315晚会 网站建设公司,企业php网站建设背景
想基于ChatGLM3-6B用LangChain做LLM应用#xff0c;需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。
LangChain中对LLM的封装
继承关系#xff1a;BaseLanguageModel——》BaseLLM——》LLM
LLM类
简化和LLM的交互 _call抽象方法定义 ab…
背景
想基于ChatGLM3-6B用LangChain做LLM应用需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。
LangChain中对LLM的封装
继承关系BaseLanguageModel——》BaseLLM——》LLM
LLM类
简化和LLM的交互 _call抽象方法定义 abstractmethoddef _call(self,prompt: str,stop: Optional[List[str]] None,run_manager: Optional[CallbackManagerForLLMRun] None,**kwargs: Any,) - str:Run the LLM on the given prompt and input. BaseLLM类
BaseLLM类其实有两个abstract方法_generate方法和_llm_type方法
注意LLM类仅实现了_generate方法未实现_llm_type方法 abstractmethoddef _generate(self,prompts: List[str],stop: Optional[List[str]] None,run_manager: Optional[CallbackManagerForLLMRun] None,**kwargs: Any,) - LLMResult:Run the LLM on the given prompts.propertyabstractmethoddef _llm_type(self) - str:Return type of llm.
BaseLanguageModel类
和语言模型交互的基础抽象类。 Abstract base class for interfacing with language models. All language model wrappers inherit from BaseLanguageModel. LangChain封装自定义的LLM
封装一个MyLLM类继承自LLM类实现最简单的hello world功能。
需要实现两个函数
_llm_type方法_call方法
from typing import Any, List, Optional
from langchain.llms.base import LLM
from langchain_core.callbacks import CallbackManagerForLLMRunclass MyLLM(LLM):def __init__(self):super().__init__()propertydef _llm_type(self) - str:return MyLLMdef _call(self, prompt: str, stop: Optional[List[str]] None, run_manager: Optional[CallbackManagerForLLMRun] None, **kwargs: Any) - str:if len(prompt) 10:return promptelse:return prompt[:10]mllm MyLLM()
print(mllm._llm_type)
# mllm._llm_type haha _llm_type该属性是无法被修改的
print(mllm(hello world!))
关于property
property常用在实例方法前目的在于把该实例方法转换为同名的只读属性方法可以像属性一样被访问。
property的作用主要有两个
property装饰的只读属性不能被随意篡改 相比于类的普通属性property装饰的只读属性可以添加逻辑语句例如:
property
def enable(self):return self.age 10 参考
LLM大语言模型八ChatGLM3-6B使用的tokenizer模型BAAI/bge-large-zh-v1.5-CSDN博客 LLM大语言模型七部署ChatGLM3-6B并提供HTTP server能力LLM大语言模型四在ChatGLM3-6B中使用langchain_chatglm3-6b langchain-CSDN博客LLM大语言模型一ChatGLM3-6B本地部署-CSDN博客