最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ChatGLM?集成LangChain工具詳解

 更新時間:2023年04月27日 09:07:01   作者:隨想筆記  
這篇文章主要為大家介紹了Svelte和React框架使用比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

最新一段時間一直在學(xué)習(xí)LangChain相關(guān)的文檔,發(fā)現(xiàn)LangChain提供了非常豐富的生態(tài),并且也可以讓業(yè)務(wù)非常方便的封裝自己的工具,接入到LangcChain的生態(tài)中,比如切換不同向量存儲(Vectorstores)、文件分片(Text Splitters)和文件加載器(Document Loaders)等。 本文將簡單介紹下如何將自己搭建的ChatGLM集成進(jìn)LangChain工具鏈中,當(dāng)然如果有其他的自己搭建的LLM模型也可以采用類似的方式集成。

接入自己的LLM

參考官方文檔# How to write a custom LLM wrapper,只需要集成LLM方法,并且實現(xiàn)_call方法即可。一個簡單的自定義LLM如下:

from langchain.llms.base import LLM
from typing import Optional, List, Mapping, Any
class CustomLLM(LLM):
  n:int
  @property
  def _llm_type(self) -> str:
    return "custom"
  def _call(self,prompt:str,stop:Optional[List[str]]=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}

上面雖然只是一個最簡單的實現(xiàn),但是進(jìn)一步思考,如果有自己的LLM,是不是也可以通過類似的方式接入到LangChain的生態(tài)中呢?

正好最近也在搭建ChatGLM,于是在想是不是可以將ChatGLM加入到LangChain工具鏈中來,利用其提供的工具方便做更深入的研究。于是搜索了一番,果然有類似開源實現(xiàn),比如thomas-yanxin/LangChain-ChatGLM-Webui,一種利用 ChatGLM-6B + langchain 實現(xiàn)的基于本地知識的 ChatGLM 應(yīng)用。但是研究了一下代碼,發(fā)現(xiàn)其是將ChatGLM-6B和LangChain部署在一起的。但是由于資源有限,目前只有少量的顯卡,不能每個人都能部署一套ChatGLM。

進(jìn)一步思考,是否ChatGLM也提供了類似于openai的api接口呢,只需要進(jìn)行http調(diào)用就可以使用ChatGLM的能力?這樣就可以將:ChatGLM和上層的應(yīng)用解耦,每個人都可以在自己本地通過api調(diào)用來進(jìn)行實驗。

搭建ChatGLM的api

查閱ChatGLM-6B文檔,也發(fā)現(xiàn)了其確實可以通過API方式提供服務(wù)。 具體如下:

  • 首先需要安裝額外的依賴 pip install fastapi uvicorn ,然后運行倉庫中的 api.pypython api.py
  • 默認(rèn)部署在本地的 8000 端口,通過 POST 方法進(jìn)行調(diào)用
curl -X POST "http://{your_host}:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'
  • 得到的返回值為
{
  "response":"你好??!我是人工智能助手 ChatGLM-6B,很高興見到你,歡迎問我任何問題。",
  "history":[["你好","你好??!我是人工智能助手 ChatGLM-6B,很高興見到你,歡迎問我任何問題。"]],
  "status":200,
  "time":"2023-03-23 21:38:40"
}

封裝ChatGLM的LLM

有了API之后,就可以參照上面的自定義LLM的方式封裝ChatGLM了,具體代碼如下:

from langchain.llms.base import LLM
from langchain.llms.utils import enforce_stop_tokens
from typing import Dict, List, Optional, Tuple, Union
import requests
import json
class ChatGLM(LLM):
    max_token: int = 10000
    temperature: float = 0.1
    top_p = 0.9
    history = []
    def __init__(self):
        super().__init__()
    @property
    def _llm_type(self) -> str:
        return "ChatGLM"
    def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:
        # headers中添加上content-type這個參數(shù),指定為json格式
        headers = {'Content-Type': 'application/json'}
        data=json.dumps({
          'prompt':prompt,
          'temperature':self.temperature,
          'history':self.history,
          'max_length':self.max_token
        })
        # print("ChatGLM prompt:",prompt)
        # 調(diào)用api
        response = requests.post("{your_host}/api",headers=headers,data=data)
		# print("ChatGLM resp:",response)
        if response.status_code!=200:
          return "查詢結(jié)果錯誤"
        resp = response.json()
        if stop is not None:
            response = enforce_stop_tokens(response, stop)
        self.history = self.history+[[None, resp['response']]]
        return resp['response']

上面只是簡單的調(diào)用ChatGLM API,讓程序跑起來,當(dāng)然也可以參照LangChain封裝openai的方式來做更加復(fù)雜的封裝,比如提供重試、限頻退讓重試等功能。

測試

llm = ChatGLM()
print(llm("你會做什么"))

輸出如下:

ChatGLM prompt: 你會做什么
我是一個大型語言模型,被訓(xùn)練來回答人類提出的問題。我不能做任何實際的事情,只能通過文字回答問題。如果你有任何問題,我會盡力回答。

驗證通過,可以通過封裝的ChatGLM類來訪問ChatGLM API。這樣就可以將需要用到OpenAILLM類替換成自己封裝的ChatGLM了。

總結(jié)

本文簡單介紹下如何將自己搭建的ChatGLM集成進(jìn)LangChain工具鏈中,并且進(jìn)行簡單的試驗的效果。當(dāng)然如果有其他自己搭建的LLM模型也可以采用類似的方式集成。后續(xù)將使用ChatGLM來實現(xiàn)一個本地知識庫做問答系統(tǒng)。

參考

thomas-yanxin/LangChain-ChatGLM-Webui

使用langchain配合chatglm搭建本地的知識庫,但是langchain和chatglm是部署在一起的,耦合性比較高

ChatGLM-6B chatglm的api搭建

以上就是ChatGLM 集成進(jìn)LangChain工具的詳細(xì)內(nèi)容,更多關(guān)于ChatGLM 集成進(jìn)LangChain工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • GraphQL在react中的應(yīng)用示例詳解

    GraphQL在react中的應(yīng)用示例詳解

    這篇文章主要為大家介紹了GraphQL在react中的應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • React報錯解決之ref返回undefined或null

    React報錯解決之ref返回undefined或null

    最近使用react做個滾動監(jiān)聽獲取更多數(shù)據(jù)效果,當(dāng)想獲取dom時發(fā)現(xiàn)怎么也獲取不到,下面這篇文章主要給大家介紹了關(guān)于React報錯解決之ref返回undefined或null的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境

    詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境

    這篇文章主要介紹了詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 解讀useState第二個參數(shù)的"第二個參數(shù)"

    解讀useState第二個參數(shù)的"第二個參數(shù)"

    這篇文章主要介紹了useState第二個參數(shù)的"第二個參數(shù)",具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React中setState同步異步場景的使用

    React中setState同步異步場景的使用

    本文主要介紹了React中setState同步異步場景的使用,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • React中super()和super(props)的區(qū)別小結(jié)

    React中super()和super(props)的區(qū)別小結(jié)

    本文主要介紹了React中super()和super(props)的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • React Redux使用配置詳解

    React Redux使用配置詳解

    react-redux是redux官方react綁定庫,能夠使react組件從redux store中讀取數(shù)據(jù),并且向store分發(fā)actions以此來更新數(shù)據(jù),這篇文章主要介紹了react-redux的設(shè)置,需要的朋友可以參考下
    2022-08-08
  • 探究react-native 源碼的圖片緩存問題

    探究react-native 源碼的圖片緩存問題

    本篇文章主要介紹了探究react-native 源碼的圖片緩存問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 詳解Redux的工作流程

    詳解Redux的工作流程

    這篇文章主要介紹了Redux的工作流程,redux是一個專門用于做狀態(tài)管理的JS庫,它可以在react、angular、vue等項目中,但基本與react配合使用,需要的朋友可以參考下
    2022-08-08
  • React中多語言的配置方式

    React中多語言的配置方式

    這篇文章主要介紹了React中多語言的配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

九江市| 塔城市| 富宁县| 盖州市| 曲松县| 亳州市| 胶南市| 洪雅县| 五常市| 厦门市| 阳原县| 尼木县| 嵩明县| 昌宁县| 连州市| 东海县| 彭州市| 芜湖市| 隆尧县| 云南省| 台山市| 崇阳县| 沈阳市| 奎屯市| 交口县| 上高县| 平陆县| 漳浦县| 资源县| 黄石市| 神木县| 乐平市| 凯里市| 旺苍县| 临猗县| 宣威市| 潮安县| 富顺县| 大悟县| 恩平市| 上饶市|