了解大模型通用接口,掌握大模型替换方法, 框架二次开发

LLMS

大型语言模型(Large Language Models,LLMs)是LangChain的核心组件。LangChain并不提供自己的LLMs,而是提供了一个标准接口,用于与许多不同的LLMs进行交互。

具体来说,这个接口接受一个字符串作为输入,并返回一个字符串。

from langchain_community.llms.tongyi import Tongyi

from dotenv import find_dotenv, load_dotenv
import os
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]


model = Tongyi(model_name='qwen-max')

res = model.invoke('你好')

print(res)

自定义LLMS,二次封装

from typing import Any,List, Dict, Optional
from langchain_core.callbacks.manager import CallbackManagerForLLMRun
from langchain_core.language_models.llms import BaseLLM
from langchain_core.outputs import Generation, LLMResult

class Superman(BaseLLM):

    model_name: str = "superman"

    def _generate(self, prompts: List[str], *args, **kwargs) -> LLMResult:
        results = []
        for prompt in prompts:
            generation_obj = Generation(text=f'收到,这边是爱设计具美武大郎服务,来个服务么?{prompt}')   # 没有大语言模型定义一个假的
            results.append(generation_obj)
        return LLMResult(generations=[results])   #格式 根据源码判断,查看源码

    @property
    def _llm_type(self) -> str:
        """
        Retun type of llm
        """
        return "superman"


# 引用自定义的大语言模型
model = Superman()
print(model)

# 调用 大模型
res = model.invoke("来条龙。")

print(res)

 

源码BaseLLM .

在BaseLLM 这个类里面还有一个 抽象方法 ,搜索 abs关键字,

假设有一个superman的大模型。我们就可以在langchain生态中使用这个大模型。

 

设置 提示词模板,引用自定义的模型

from typing import Any,List, Dict, Optional
from langchain_core.callbacks.manager import CallbackManagerForLLMRun
from langchain_core.language_models.llms import BaseLLM
from langchain_core.outputs import Generation, LLMResult
from langchain_core.prompts import PromptTemplate


class Superman(BaseLLM):

    model_name: str = "superman"

    def _generate(self, prompts: List[str], *args, **kwargs) -> LLMResult:
        results = []
        for prompt in prompts:
            generation_obj = Generation(text=f'收到,这边是爱设计具美武大郎服务,来个服务么?{prompt}')   # 没有大语言模型定义一个假的
            results.append(generation_obj)
        return LLMResult(generations=[results])   #格式 根据源码判断,查看源码

    @property
    def _llm_type(self) -> str:
        """
        Retun type of llm
        在BaseLLM 这个类里面还有一个 抽象方法 ,搜索 abs关键字
        """
        return "superman"


model = Superman()

# 提示词模板
prompt = PromptTemplate.from_template("你好,大郎")

# 实例化
chain = prompt | model


# 调用 大模型
res = chain.invoke({})   # 提示词模版没有设置占位符,传递一个空字典就行

print(res)

 

end...

posted @   王竹笙  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示