langchain实现自定义LLM

背景

LangChain 提供了强大的框架和工具,使得开发者可以轻松地自定义和封装大型语言模型(LLM)。通过使用 LangChain,开发者可以突破对 OpenAI API Key 的依赖,并实现更加个性化和灵活的 LLM 应用。比如,我们有个很新很新的LLM,langchain还未提供对应的集成支持,如何在尽可能不修改原项目代码的情况下,封装自定义的大语言模型(LLM)模块呢?本文的目的就是带你一起探索如何利用langchain库快速封装自定义的LLM。自定义LLM常用于以下场景:

1. 用于封装langchain尚未支持的大型语言模型。对于新模型或者还未集成的模型自己封装实现支持。

2. 模拟测试。假设有个模型调用成本高,但是我们知道这个模型对于特定的输入大概返回什么样的结果,那么我们可以封装个自定义LLM,比如MOCK一个模块来模拟真实的模块,这样就无需每次耗费大量的token去从最开始的入口调用LLM。

3. 定义LLM模块被调用的时候,如何根据输入的文本来输出。这个就是定制自己调用的LLM方法。

实现思路

从实现的角度,我们依然是依照LLM的输入输出框架来定义,如下:

my_custom_llm = MyCustomLLM()print(my_custom_llm("你好啊!"))

需要继承 langchain_core.language_models.llms.LLM

至少实现 2个方法:_llm_type 和 _call。

简单示例

from typing import Any,List,Mapping,Optionalfrom langchain.llms.base importLLMfrom langchain.callbacks.manager importCallbackManagerForLLMRun

class MyCustomLLM(LLM):
@propertydef _llm_type(self) -> str:return "傻傻的LLM"
def _call(self,prompt: str,stop: Optional[List[str]] = None,run_manager: Optional[CallbackManagerForLLMRun] = None,**kwargs: Any,) -> str:if stop is not None:raise ValueError("stop kwargs are not permitted.")return "怎么啦?"

llm = MyCustomLLM()print(llm("你好"))print(llm("你怎么那么多问题?"))

答复:

怎么啦?怎么啦?

前沿技术新闻资讯智能硬件

在深圳做「AI 耳机」这一年,我看到的 10 个行业真相

2026-4-21 10:33:23

前沿技术大模型技术新闻资讯

刚刚!小米手机可以养小龙虾🦞了

2026-4-21 10:51:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索