LangChain封装自定义的LLM:从基础到实战
创作时间:
作者:
@小白创作中心
LangChain封装自定义的LLM:从基础到实战
引用
CSDN
1.
https://blog.csdn.net/hugo_lei/article/details/137411885
本文将介绍如何使用LangChain封装自定义的LLM(大语言模型)。通过一个简单的"hello world"示例,展示如何实现自定义的LLM类。
背景
想基于ChatGLM3-6B用LangChain做LLM应用,需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。
LangChain中对LLM的封装
继承关系:BaseLanguageModel——》BaseLLM——》LLM
LLM类
简化和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功能。
需要实现两个函数:
- _llm_type方法
- _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装饰的只读属性可以添加逻辑语句,例如:
@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博客
热门推荐
赤小豆薏米汤,痛风患者的福音
喀什春晚带动新疆文旅热,库车打造龟兹文化新地标
A股现104只2元以下低价股,专家提醒:投资需谨慎
2024年末ST旭蓝股价跌破1元,或触发面值退市
7800元玩转新疆:濮阳出发6天5晚旅游全攻略
瑜伽遇上科技:中国瑜伽市场创新高,男女参与度齐升
柔韧性提升35%,瑜伽效果获科学证实
冬季高血压患者如何成功戒烟:实用攻略来了!
缅甸电骗园区死灰复燃,13名港人失联引发关注
揭秘AI语音助手:从语音识别到自然语言处理
AI助手如何改变你的智能家居生活?
王维《山居秋暝》:秋雨初晴后的山间田园画卷
泰国推旅游警察APP:8种语言服务,24小时在线守护
泰国推出旅游警察APP,8种语言服务助力游客安全
热播剧《国色芳华》陷抄袭争议,作者称“未授权使用”
广东最大海岛南澳:35座小岛串珠,千年古迹与渔家文化荟萃
冬天穿羽绒服,该搭配什么裤子和裙子?学这3种穿法时髦又保暖
智能汽车运动控制技术取得新突破,MPC算法提升行驶安全性
耦合摆实验揭秘能量传递机制,哈工大研究助力工程设计创新
35岁后的男士穿搭指南:冬季羽绒服16种搭配方案
上年纪女人,冬季穿羽绒服不穿这4种装嫩色,显幼稚还没档次
35岁后的男士穿搭指南:冬季羽绒服的16种搭配方案
我国古代就有温泉养生的传统,哪句诗与此相关?
十二生肖:十二种动物背后的哲学智慧
石雕十二生肖:从写实到抽象的艺术演变
9个雪山拍照姿势,轻松搞怪超有趣,随手拍出旅行大片!
2024西双版纳泼水节:四大活动带你感受傣族新年狂欢
2024西双版纳泼水节:花车巡游、文明泼水,5天4晚欢乐攻略
西双版纳泼水节迎203万游客,千年非遗绽放文旅新活力
2025年苏州限行新变化:外地车多区域禁行,本地车需办证