LLM大语言模型(九):LangChain封装自定义的LLM

这篇具有很好参考价值的文章主要介绍了LLM大语言模型(九):LangChain封装自定义的LLM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LLM大语言模型(九):LangChain封装自定义的LLM,LLM工程,langchain,人工智能,LLM,大语言模型

背景

想基于ChatGLM3-6B用LangChain做LLM应用,需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。

LangChain中对LLM的封装

继承关系:BaseLanguageModel——》BaseLLM——》LLM

LLM类

简化和LLM的交互

LLM大语言模型(九):LangChain封装自定义的LLM,LLM工程,langchain,人工智能,LLM,大语言模型

_call抽象方法定义

    @abstractmethod
    def _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方法

    @abstractmethod
    def _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."""

    @property
    @abstractmethod
    def _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功能。

需要实现两个函数:

  1. _llm_type方法
  2. _call方法
from typing import Any, List, Optional
from langchain.llms.base import LLM
from langchain_core.callbacks import CallbackManagerForLLMRun


class MyLLM(LLM):

    def __init__(self):
        super().__init__()

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

    def _call(self, prompt: str, stop: Optional[List[str]] = None, run_manager: Optional[CallbackManagerForLLMRun] = None, **kwargs: Any) -> str:
        if len(prompt) < 10:
            return prompt
        else:
            return prompt[:10]

mllm = MyLLM()
print(mllm._llm_type)
# mllm._llm_type = "haha" _llm_type该属性是无法被修改的
print(mllm("hello world!"))

关于@property

@property常用在实例方法前,目的在于把该实例方法转换为同名的只读属性,方法可以像属性一样被访问。

@property的作用主要有两个:

  • @property装饰的只读属性不能被随意篡改
  • 相比于类的普通属性,@property装饰的只读属性可以添加逻辑语句,例如:文章来源地址https://www.toymoban.com/news/detail-845982.html

@property
def enable(self):
    return self.age > 10

 参考

  1. LLM大语言模型(八):ChatGLM3-6B使用的tokenizer模型BAAI/bge-large-zh-v1.5-CSDN博客 
  2. LLM大语言模型(七):部署ChatGLM3-6B并提供HTTP server能力
  3. LLM大语言模型(四):在ChatGLM3-6B中使用langchain_chatglm3-6b langchain-CSDN博客
  4. LLM大语言模型(一):ChatGLM3-6B本地部署-CSDN博客

到了这里,关于LLM大语言模型(九):LangChain封装自定义的LLM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LangChain大型语言模型(LLM)应用开发(四):Q&A over Documents

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(41)
  • LangChain 本地化方案 - 使用 ChatYuan-large-v2 作为 LLM 大语言模型

    ChatYuan-large-v2 是一个开源的支持中英双语的功能型对话语言大模型,与其他 LLM 不同的是模型十分轻量化,并且在轻量化的同时效果相对还不错,仅仅通过 0.7B 参数量就可以实现 10B 模型的基础效果,正是其如此的轻量级,使其可以在普通显卡、 CPU 、甚至手机上进行推理,而

    2024年02月16日
    浏览(43)
  • LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(38)
  • LangChain与大型语言模型(LLMs)应用基础教程:角色定义

    如果您还没有看过我之前写的两篇博客,请先看一下,这样有助于对本文的理解: LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板 LangChain与大型语言模型(LLMs)应用基础教程:信息抽取 LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-t

    2024年02月01日
    浏览(45)
  • 【LLM】Langchain使用[二](模型链)

    场景:一个输入和一个输出 场景:多个输入和输出的时候 结果如下,可以看到根据评论文本,子链1将文本翻译为英语,子链2将英文文本进行总结,子链3得到初始文本的语言,子链4对英文文本进行回复,并且是用初始语言。每个后面的子链可以利用前面链的 outpu_key 变量。

    2024年02月16日
    浏览(34)
  • LangChain入门(一)访问LLM模型

    GitHub - liaokongVFX/LangChain-Chinese-Getting-Started-Guide: LangChain 的中文入门教程 LangChain 的中文入门教程. Contribute to liaokongVFX/LangChain-Chinese-Getting-Started-Guide development by creating an account on GitHub. https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide   目录 一、安装langchain 二、langchain依赖

    2024年02月11日
    浏览(45)
  • LangChain+LLM大模型问答能力搭建与思考

    最近,大模型(LLMs,Large Language Models)可谓是NLP领域,甚至整个科技领域最火热的技术了。凑巧的是,我本人恰好就是NLP算法工程师,面临着被LLMs浪潮淘汰的窘境,决定在焦虑之余,试着用新家伙,去解决解决老问题(缓解一下焦虑…) 所以是什么老问题呢?——那就是

    2024年02月16日
    浏览(32)
  • 【架构实战】如何通过 langchain 把LLM大模型能力集成到企业应用中?

    本文为您提供关于如何通过 langchain 把 LLM 大模型能力集成到企业应用中的详细实践指南。在本文中,我将简要介绍 LLM 模型及其能力,并提供一种基于 langchain 的解决方案,以便企业可以将 LLM 模型集成到其应用程序中。 LLM(Language Model)是一种基于深度学习的语言模型,它可

    2024年02月07日
    浏览(33)
  • 开源大模型ChatGLM2-6B 2. 跟着LangChain参考文档搭建LLM+知识库问答系统

    租用了1台GPU服务器,系统 ubuntu20,Tesla V100-16GB (GPU服务器已经关机结束租赁了) SSH地址:* 端口:17520 SSH账户:root 密码:Jaere7pa 内网: 3389 , 外网:17518 VNC地址:* 端口:17519 VNC用户名:root 密码:Jaere7pa 硬件需求,ChatGLM-6B和ChatGLM2-6B相当。 量化等级    最低 GPU 显存 F

    2024年02月03日
    浏览(44)
  • 用LangChain构建大语言模型应用

    自 ChatGPT 发布以来,大型语言模型 (LLM) 广受欢迎。尽管您可能没有足够的资金和计算资源从头开始训练自己的大语言模型,但您仍然可以使用预训练的大语言模型来构建一些很酷的东西,例如: 可以根据您的数据与外界互动的个人助理 为您的目的定制的聊天机器人 分析或总

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包