自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎么使用langchain加載模型?langchain加載模型的幾種方式 原創(chuàng)

發(fā)布于 2024-7-5 07:52
瀏覽
0收藏

在前面關(guān)于??怎么在大模型之上構(gòu)建應(yīng)用??的文章中,簡(jiǎn)單介紹了langchain的功能以及幾個(gè)核心模塊,今天就其模型的功能模塊介紹一下怎么加載模型。

怎么使用langchain加載模型?langchain加載模型的幾種方式 -AI.x社區(qū)

langchain的官網(wǎng)架構(gòu)圖

目前來(lái)說(shuō)langchain加載模型主要有三種形式:

加載第三方模型服務(wù),比如openAI,阿里云通義千問(wèn),百度文心一言,chatGLM開(kāi)源模型等。

包主要在langchain.llms中,代碼如下所示:

from langchain.llms import ChatGLM
# 創(chuàng)建chatGLM模型 endpoint_url是chatGLM服務(wù)地址
glm = ChatGLM(endpoint_url="http://172.0.0.1")


resp = glm.invoke("你是誰(shuí)?")


# 并發(fā)模型下,可以使用線程池的方式調(diào)用
chain = LLMChain(llm=glm)
chain.run("你是誰(shuí)")

第二種是從huggingface上加載開(kāi)源模型,huggingface是一個(gè)類(lèi)似于github的開(kāi)源模型倉(cāng)庫(kù),上面有大量的開(kāi)源大模型,不了解的可以看一下之前的文章??Huggingface-個(gè)人和小微企業(yè)的福音??。

這種方式是把大模型加載到本地,所以本地如果硬件配置不行一些模型可能會(huì)跑不起來(lái)。

開(kāi)發(fā)者可以通過(guò)以下方式,對(duì)大模型進(jìn)行封裝API,然后對(duì)外提供服務(wù)。

from langchain import HuggingFacePipeline
from langchain import PromptTemplate, LLMChain


# 模型名詞和任務(wù)類(lèi)型
model = "facebook/bart-large-cnn"
task = "summarization"


# 從huggingface加載模型
llm = HuggingFacePipeline.from_model_id(model_id=model, task=task)


# 原生調(diào)用大模型
inv = llm.invoke("今天下雨了")
print("inv", inv)


template = """{input}"""


prompt = PromptTemplate(template=template, input_variables = ["input"])


llm_chain = LLMChain(prompt=prompt, llm=llm)


question = """今天天氣不錯(cuò)"""


# 使用LLMChain對(duì)象調(diào)用大模型
resp = llm_chain(question)


print("____________________________")
print("resp", resp)


# 使用線程池調(diào)用大模型
answer = llm_chain.run(question)


print("+++++++++++++++++++++++++")
print("answer", answer)

第三種是本地自定義大模型,在大部分情況下,我們直接使用第三方的模型服務(wù)或開(kāi)源模型已經(jīng)能夠滿(mǎn)足我們大部分需求;但在某些情況下,這些服務(wù)無(wú)法滿(mǎn)足我們的需求,我們需要自定義模型。

但自定義模型又不能被langchain直接調(diào)用,所以我們就需要按照l(shuí)angchain的格式封裝我們自己的大模型。也可以類(lèi)似于第一種情況,把大模型打包成服務(wù),然后讓langchain通過(guò)API調(diào)用。

from langchain.llms.base import LLM
# langchain中文文檔 自定義模型
# https://python.langchain.com.cn/docs/modules/model_io/models/llms/how_to/custom_llm


from typing import Any, List, Mapping, Optional


from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms.base import LLM


class CustomLLM(LLM):
    n: int


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


    def _call(
        self,
        prompt: str,
        stop: Optional[List[str]] 
= None,
        run_manager: Optional[CallbackManagerForLLMRun] = None,
    ) -> str:
        if stop is not None:
            raise ValueError("stop kwargs are not permitted.")
        return prompt[: self.n]


    @property
    def _identifying_params(self) -> Mapping[str, Any]:
        """Get the identifying parameters."""
        return {"n": self.n}

總結(jié)來(lái)說(shuō),調(diào)用大模型無(wú)非兩種形式,一種是通過(guò)API的方式調(diào)用,即把大模型打包成一個(gè)服務(wù),所有請(qǐng)求都可以通過(guò)其提供的接口使用。類(lèi)似于第一種情況。

后兩種是自己部署大模型,一個(gè)是從huggingface倉(cāng)庫(kù)中下載模型,一個(gè)是自己設(shè)計(jì)開(kāi)發(fā)模型。

第一種是langchain調(diào)用第三方大模型接口,后兩種是自己直接把大模型與langchain進(jìn)行集成。前者更方便,后者掌控性更強(qiáng)。

開(kāi)發(fā)者可以根據(jù)自己的業(yè)務(wù)需求,選擇合適的集成方法。


本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/fW-PGMzxBWKdN5y6dKsruQ??



?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦