成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

怎么使用langchain加載模型?langchain加載模型的幾種方式 原創

發布于 2024-7-5 07:52
瀏覽
0收藏

在前面關于??怎么在大模型之上構建應用??的文章中,簡單介紹了langchain的功能以及幾個核心模塊,今天就其模型的功能模塊介紹一下怎么加載模型。

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

langchain的官網架構圖

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

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

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

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


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


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

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

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

開發者可以通過以下方式,對大模型進行封裝API,然后對外提供服務。

from langchain import HuggingFacePipeline
from langchain import PromptTemplate, LLMChain


# 模型名詞和任務類型
model = "facebook/bart-large-cnn"
task = "summarization"


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


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


template = """{input}"""


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


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


question = """今天天氣不錯"""


# 使用LLMChain對象調用大模型
resp = llm_chain(question)


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


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


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

第三種是本地自定義大模型,在大部分情況下,我們直接使用第三方的模型服務或開源模型已經能夠滿足我們大部分需求;但在某些情況下,這些服務無法滿足我們的需求,我們需要自定義模型。

但自定義模型又不能被langchain直接調用,所以我們就需要按照langchain的格式封裝我們自己的大模型。也可以類似于第一種情況,把大模型打包成服務,然后讓langchain通過API調用。

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}

總結來說,調用大模型無非兩種形式,一種是通過API的方式調用,即把大模型打包成一個服務,所有請求都可以通過其提供的接口使用。類似于第一種情況。

后兩種是自己部署大模型,一個是從huggingface倉庫中下載模型,一個是自己設計開發模型。

第一種是langchain調用第三方大模型接口,后兩種是自己直接把大模型與langchain進行集成。前者更方便,后者掌控性更強。

開發者可以根據自己的業務需求,選擇合適的集成方法。


本文轉載自公眾號AI探索時代 作者:DFires

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



?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 黄片毛片 | 国产高清久久 | 黄色三级免费 | 超碰成人在线观看 | 久久久久久久久淑女av国产精品 | 放个毛片看看 | 一区二区在线免费观看 | 日韩一区二区免费视频 | 国产乱码精品一区二区三区中文 | 伦理片97| 亚洲精品成人网 | 毛片软件 | 伊人网在线播放 | 国产精品无码久久久久 | 中文字幕视频网 | 国产精品久久久久久久久免费桃花 | 古装三级在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 国产亚洲一区在线 | 91精品国产自产在线老师啪 | 日韩精品1区2区 | 午夜亚洲| 一区二区三区视频在线 | 欧美日韩一区在线 | 亚洲一区三区在线观看 | 国产清纯白嫩初高生视频在线观看 | 欧美专区在线 | 日韩欧美福利视频 | 美日韩中文字幕 | 亚洲福利av | 久久草在线视频 | www.国产精| 久久久久久国产精品久久 | 亚洲欧美网站 | 成人免费精品视频 | 欧美a区 | 久久精品aaa| 亚洲欧美日韩电影 | 粉色午夜视频 | 亚洲精品v| 二区中文字幕 |