偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

怎么使用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)圖

目前來說langchain加載模型主要有三種形式:

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

包主要在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("你是誰?")


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

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

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

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

from langchain import HuggingFacePipeline
from langchain import PromptTemplate, LLMChain


# 模型名詞和任務(wù)類型
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ù)或開源模型已經(jīng)能夠滿足我們大部分需求;但在某些情況下,這些服務(wù)無法滿足我們的需求,我們需要自定義模型。

但自定義模型又不能被langchain直接調(diào)用,所以我們就需要按照langchain的格式封裝我們自己的大模型。也可以類似于第一種情況,把大模型打包成服務(wù),然后讓langchain通過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é)來說,調(diào)用大模型無非兩種形式,一種是通過API的方式調(diào)用,即把大模型打包成一個(gè)服務(wù),所有請(qǐng)求都可以通過其提供的接口使用。類似于第一種情況。

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

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

開發(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)推薦