日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

langchain中的chat models介绍和使用

發(fā)布時(shí)間:2023/11/16 windows 52 coder
生活随笔 收集整理的這篇文章主要介紹了 langchain中的chat models介绍和使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

之前我們介紹了LLM模式,這種模式是就是文本輸入,然后文本輸出。

chat models是基于LLM模式的更加高級(jí)的模式。他的輸入和輸出是格式化的chat messages。

一起來(lái)看看如何在langchain中使用caht models吧。

chat models的使用

首先langchain對(duì)chat models下支持的模型就少很多了。一方面是可能有些語(yǔ)言模型本身是不支持chat models的。另外一方面langchain也還是在一個(gè)發(fā)展中的過(guò)程,所以有些模型還需要適配。

目前看來(lái)langchain支持的chat models有:ChatAnthropic,AzureChatOpenAI,ChatVertexAI,JinaChat,ChatOpenAI和PromptLayerChatOpenAI這幾種。

langchain把chat消息分成了這幾種:AIMessage, HumanMessage, SystemMessage 和 ChatMessage。

HumanMessage就是用戶(hù)輸入的消息,AIMessage是大語(yǔ)言模型的消息,SystemMessage是系統(tǒng)的消息。ChatMessage是一種可以自定義類(lèi)型的消息。

在使用的時(shí)候,只需要在chat中傳入對(duì)應(yīng)的消息即可:

from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI()

messages = [
    SystemMessage(content="你是一個(gè)小說(shuō)家"),
    HumanMessage(content="幫我寫(xiě)篇小說(shuō)")
]
chat(messages)

當(dāng)然和LLM一樣,你也可以使用批量模式如下:

batch_messages = [
    [
        SystemMessage(content="你是一個(gè)小說(shuō)家"),
        HumanMessage(content="幫我寫(xiě)篇小說(shuō)")
    ],
    [
        SystemMessage(content="你是一個(gè)詩(shī)人"),
        HumanMessage(content="幫我寫(xiě)首詩(shī)")
    ],
]
result = chat.generate(batch_messages)
result

chat models的高級(jí)功能

其實(shí)和LLM類(lèi)似,基本上LLM有的高級(jí)功能chat models都有。

比如有用的比如緩存功能,可以緩存之前的輸入和輸出,避免每次都調(diào)用LLM,從而可以減少token的開(kāi)銷(xiāo)。

以InMemoryCache為例子:

from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()

# 第一次調(diào)用,不是用cache
llm.predict("Tell me a joke")

# 第二次調(diào)用,使用cache
llm.predict("Tell me a joke")

除了InMemoryCache,langchain還支持FullLLMCache,SQLAlchemyCache,SQLiteCache和RedisCache等等。

同樣的,chat models也是支持流模式的:

from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    HumanMessage,
)

from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
chat = ChatOpenAI(streaming=True, callbacks=[StreamingStdOutCallbackHandler()], temperature=0)
resp = chat([HumanMessage(content="幫忙我寫(xiě)首詩(shī)")])

只需要在構(gòu)建ChatOpenAI的時(shí)候,把StreamingStdOutCallbackHandler傳入callbacks即可。

如果要在chat models中使用PromptTemplate,因?yàn)閏hat models的消息格式跟LLM是不一樣的,所以對(duì)應(yīng)的PromptTemplate也是不一樣的。

和對(duì)應(yīng)的chat models消息對(duì)應(yīng)的PromptTemplate是ChatPromptTemplate,SystemMessagePromptTemplate,
AIMessagePromptTemplate和HumanMessagePromptTemplate。

我們看下是如何使用prompt template來(lái)構(gòu)建prompt:

from langchain import PromptTemplate
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

# 構(gòu)建各種prompt
template="You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template="{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

# 使用format_prompt把prompt傳給chat
chat(chat_prompt.format_prompt(input_language="English", output_language="French", text="I love programming.").to_messages())

chat models下消息構(gòu)建確實(shí)比直接使用LLM要復(fù)雜點(diǎn),大家在使用的時(shí)候需要注意。

總結(jié)

chat models是LLM的高階表現(xiàn)形式。如果我們需要進(jìn)行對(duì)話(huà)模型的話(huà),就可以考慮使用這個(gè)。

更多內(nèi)容請(qǐng)參考 www.flydean.com

最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!

總結(jié)

以上是生活随笔為你收集整理的langchain中的chat models介绍和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。