微信扫码
添加专属顾问
我要投稿
背景
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
简单示例
from typing import Any,List,Mapping,Optional
from langchain.llms.base importLLM
from langchain.callbacks.manager importCallbackManagerForLLMRun
class MyCustomLLM(LLM):
def _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("你怎么那么多问题?"))
答复:
怎么啦?怎么啦?
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-13
【LangChain 团队重磅实测报告】多智能体架构揭秘:谁才是性能之王?
2025-06-13
大模型_百炼:MCP让我焦虑
2025-06-11
前端学AI之LangChain.js入门教程:实现智能对话机器人
2025-06-08
Langfuse:重新定义LLM应用开发与运维的可观测性
2025-06-08
Langgraph实战--自定义embeding
2025-06-07
为 AI Agent 铺路:深度解析下一代应用的核心基建 LangGraph
2025-06-05
智能体框架怎么选?LangChain、Dify、CrewAI、AutoGen五大框架横向对比
2025-06-04
吴恩达对谈LangChain创始人:企业构建Agen系统的核心认知!
2025-03-20
2025-03-17
2025-05-08
2025-04-18
2025-03-22
2025-05-06
2025-03-23
2025-04-13
2025-05-28
2025-03-22
2025-06-13
2025-05-21
2025-05-19
2025-05-08
2025-05-06
2025-04-22
2025-04-18
2025-03-22