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

大語(yǔ)言模型的開(kāi)發(fā)利器langchainan安裝使用快速入門(mén)學(xué)習(xí)

 更新時(shí)間:2023年07月12日 10:55:09   作者:flydean  
這篇文章主要為大家介紹了大語(yǔ)言模型的開(kāi)發(fā)利器langchain安裝使用快速入門(mén)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

最近隨著chatgpt的興起,人工智能和大語(yǔ)言模型又再次進(jìn)入了人們的視野,不同的是這一次像是來(lái)真的,各大公司都在拼命投入,希望能在未來(lái)的AI賽道上占有一席之地。因?yàn)锳I需要大規(guī)模的算力,尤其是對(duì)于大語(yǔ)言模型來(lái)說(shuō)。大規(guī)模的算力就意味著需要大量金錢(qián)的投入。那么對(duì)于小公司或者個(gè)人來(lái)說(shuō)是不是什么都做不了呢?

當(dāng)然不是,雖然小公司或者個(gè)人不能開(kāi)發(fā)底層的大語(yǔ)言模型,但是我們可以在大語(yǔ)言模型之上進(jìn)行應(yīng)用開(kāi)發(fā),這應(yīng)該就是我們現(xiàn)在能做到的。

今天給大家介紹一個(gè)大語(yǔ)言模型的開(kāi)發(fā)框架langchain,有了它,在AI的世界,你可以如虎添翼。

什么是langchain

簡(jiǎn)單來(lái)說(shuō),langchain是一個(gè)基于大語(yǔ)言模型只上的開(kāi)發(fā)框架,有了他,我們就可以輕松在各種大模型之上進(jìn)行實(shí)際應(yīng)用的開(kāi)發(fā)。

langchain的主要特點(diǎn)有兩個(gè),第一點(diǎn)就是組件化。langchain提供了各種封裝好的組件供我們使用,大大縮短了我們開(kāi)發(fā)的時(shí)間。

第二點(diǎn)就是提供了工具鏈,可以組裝各種組件,從而實(shí)現(xiàn)更加復(fù)雜的功能。

langchain的安裝

廢話不多說(shuō),我們來(lái)看下langchain是如何安裝的。

AI時(shí)代大家一定要學(xué)一下python,至于為什么要學(xué)習(xí)python呢?因?yàn)槠渌Z(yǔ)言都不好使......

langchain實(shí)際上是python的一個(gè)開(kāi)發(fā)包,所以可以通過(guò)pip或者conda兩種方式來(lái)安裝:

pip安裝

pip install langchain

conda安裝

conda install langchain -c conda-forge

默認(rèn)情況下上面的安裝方式是最簡(jiǎn)單的安裝,還有很多和langchain集成的modules并沒(méi)有安裝進(jìn)來(lái),如果你希望安裝common LLM providers的依賴模塊,那么可以通過(guò)下面的命令:

pip install langchain[llms]

如果你想安裝所有的模塊,那么可以使用下面的命令:

pip install langchain[all]

因?yàn)閘angchain是開(kāi)源軟件,所以你也可以通過(guò)源代碼來(lái)安裝,下載好源代碼之后,通過(guò)下面的命令安裝即可:

pip install -e .

langchain快速使用

下面我們以幾個(gè)具體的例子來(lái)講解一下langchain如何使用的。

因?yàn)閘angchain只是一個(gè)大語(yǔ)言模型上的開(kāi)發(fā)框架,它的所有的能力都是依賴于大語(yǔ)言模型的,所以在使用langchain之前,我們需要一個(gè)大語(yǔ)言模型,最簡(jiǎn)單同時(shí)也是最強(qiáng)大的大語(yǔ)言模型就是openai的chatgpt了。

接下來(lái)我們就以接入openai為例子進(jìn)行講解。

當(dāng)然langchain也可以接入其他的大語(yǔ)言模型框架,后面的系列教程中我們會(huì)詳細(xì)講解。

要使用openai,必須先注冊(cè)一個(gè)openai的賬號(hào),然后拿到openai的api key。

具體的注冊(cè)流程這里就不講了。大家可以自行參考網(wǎng)絡(luò)上的各種教程。

有了api key之后,我們需要配置一下環(huán)境變量:

export OPENAI_API_KEY="..."

然后安裝openai的包:

pip install openai

接下來(lái)就可以愉快的使用openai提供的各種功能了。

當(dāng)然,如果你不想在環(huán)境變量中配置openai的key,我們也可以在OpenAI的構(gòu)造函數(shù)中傳入openai_api_key:

from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")

構(gòu)建應(yīng)用

有了上面的準(zhǔn)備工作,接下來(lái)我們就可以開(kāi)始使用langchain了。

當(dāng)然,最最基礎(chǔ)的一個(gè)應(yīng)用就是跟大模型交互了,比如跟openai交互,我們可以讓openai給我們寫(xiě)首詩(shī):

>>> from langchain.llms import OpenAI
>>> llm = OpenAI(temperature=0.9)
>>> llm.predict("請(qǐng)以古龍的口吻,寫(xiě)首關(guān)于春天詩(shī)")
春天來(lái)了,萬(wàn)物復(fù)蘇,
終于迎來(lái)了一個(gè)新的時(shí)辰,
草兒花兒抬起頭,
喜迎新綠與絢麗的顏色。
山林里,小草發(fā)芽,
河畔邊,花兒香烈,
這讓我們感到心曠神怡,
這真是一個(gè)美好的世界。
春天來(lái)了,列位朋友,
請(qǐng)喜迎這樣一個(gè)新時(shí)辰,
不要抱怨什么,
享受春的溫暖與欣慰。

雖然寫(xiě)出來(lái)了,但是我覺(jué)得寫(xiě)的一般般吧。

但是這不重要,我們知道了如何通過(guò)langchain來(lái)調(diào)用openai的大模型,這個(gè)才是最重要的。

聊天模式

上面我們調(diào)用LLM使用用的是"text in, text out"的模型。

雖然聊天模式也是基于LLM,但是他更進(jìn)了一步,因?yàn)樗4媪藭?huì)話的上下問(wèn)題,所以在對(duì)話上更加智能化。

在代碼上,傳入的就不是文本了,而是message對(duì)象。

在langchain中,目前支持下面幾種消息類型:AIMessage, HumanMessage, SystemMessage 和 ChatMessage。

在絕大多數(shù)情況下,我們只需要用到AIMessage, HumanMessage, SystemMessage即可。

下面是使用的代碼例子:

from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
chat = ChatOpenAI(temperature=0)
chat.predict_messages([HumanMessage(content="請(qǐng)以古龍的口吻,寫(xiě)首關(guān)于春天詩(shī)")])

那么聊天模式和LLM模式有什么不一樣呢?

大家可以看到,聊天模式調(diào)用的是predict_messages接口, 而LLM模式調(diào)用的是predict接口。

事實(shí)上聊天模式底層還是使用的是LLM,為了方便大家的使用,你也可以直接使用chat.predict方法來(lái)進(jìn)行LLM方式的調(diào)用,如下所示:

chat.predict("請(qǐng)以古龍的口吻,寫(xiě)首關(guān)于春天詩(shī)")

Prompt的模板

開(kāi)發(fā)過(guò)LLM應(yīng)用的人都知道,在LLM中Prompt是非常重要的,一個(gè)好的Prompt直接決定了這個(gè)應(yīng)用的質(zhì)量。

但是Prompt肯定需要結(jié)合用戶的輸入和我們自己做的一些限定來(lái)結(jié)合使用。

這時(shí)候就需要用到Prompt的模板功能了。 我們可以在系統(tǒng)中設(shè)置好模板,用戶只需要填充模板中的特定消息即可。

在LLM模式中,可以使用PromptTemplates,這樣來(lái)寫(xiě):

from langchain.prompts import PromptTemplate
prompt = PromptTemplate.from_template("請(qǐng)幫忙我詳細(xì)描述一下這個(gè)物體,這個(gè)物體的名字是: {object}?")
prompt.format(object="貓")

最后生成的結(jié)果如下:

請(qǐng)幫忙我詳細(xì)描述一下這個(gè)物體,這個(gè)物體的名字是: 貓

如果是在chat models中,代碼會(huì)復(fù)雜一點(diǎn)點(diǎn),但是邏輯實(shí)際上是一樣的。 在chat models中,需要用到幾種MessagePromptTemplate,比如:ChatPromptTemplate,SystemMessagePromptTemplate和HumanMessagePromptTemplate。

我們具體來(lái)看下如何使用:

from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
template = "現(xiàn)在,你的角色是{your_role}, 請(qǐng)根據(jù)你的角色回答后續(xù)的問(wèn)題."
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])
chat_prompt.format_messages(your_role="教師", text="世界上最遠(yuǎn)的地方是哪里?")

對(duì)應(yīng)的輸出如下:

[
    SystemMessage(content="現(xiàn)在,你的角色是教師, 請(qǐng)根據(jù)你的角色回答后續(xù)的問(wèn)題.", additional_kwargs={}),
    HumanMessage(content="世界上最遠(yuǎn)的地方是哪里?")
]

非常完美。

Chains

langchain還有一個(gè)非常有用的功能就是Chains,他可以把多種不同的功能結(jié)合起來(lái)。

比如上面我們用到了LLM,還用到了Prompt的模板,那么我們可以用Chains把他們結(jié)合起來(lái):

from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
chain.run("貓")

當(dāng)然,也可以結(jié)合chat使用:

from langchain import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
chat = ChatOpenAI(temperature=0)
template = "現(xiàn)在,你的角色是{your_role}, 請(qǐng)根據(jù)你的角色回答后續(xù)的問(wèn)題."
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])
chain = LLMChain(llm=chat, prompt=chat_prompt)
chain.run(your_role="教師", text="世界上最遠(yuǎn)的地方是哪里?")

Agents

什么是agents? 從字面意義上看,Agents就是代理。

事實(shí)上langchain中的Agents就是代理的意思。

比如我們現(xiàn)在需要向openai詢問(wèn)昨天的天氣,但是openai本身只是一個(gè)大模型,它并不知道實(shí)時(shí)的信息。但是通過(guò)agents就可以先進(jìn)行一次判斷,看看這個(gè)問(wèn)題是交給大模型處理合適,還是交給搜索引擎來(lái)查詢比較合適。

這就是agents的作用。

agents利用LLM來(lái)判斷需要怎么處理這個(gè)任務(wù),并且以什么樣的順序來(lái)處理這個(gè)任務(wù)。

但是使用agents是要有些條件的,首先你這個(gè)LLM模型必須支持agent,這樣才能進(jìn)行后續(xù)的工作。

其次是需要挑選合適的工具來(lái)進(jìn)行你想要做的事情,比如:Google Search, Database lookup, Python REPL等等。

最后就是需要指定支持的agent的名字,這樣LLM才知道到底需要進(jìn)行哪種action。

下面是一個(gè)使用SerpAPI結(jié)合openai來(lái)進(jìn)行搜索的例子:

from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI
# The language model we're going to use to control the agent.
llm = OpenAI(temperature=0)
# The tools we'll give the Agent access to. Note that the 'llm-math' tool uses an LLM, so we need to pass that in.
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# Finally, let's initialize an agent with the tools, the language model, and the type of agent we want to use.
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# Let's test it out!
agent.run("What was the high temperature in SF yesterday in Fahrenheit? What is that number raised to the .023 power?")

agent比較復(fù)雜,功能也很強(qiáng)大,后續(xù)我們會(huì)詳細(xì)講解。

Memory

最后要講解的langchain的一個(gè)功能就是Memory。

因?yàn)楹芏鄷r(shí)候,我們的應(yīng)用應(yīng)該是一個(gè)有狀態(tài)的,也就是說(shuō)應(yīng)用需要知道你之前做了什么,這樣才可以給用戶提供更好的服務(wù)。

但是之前我們將的LLM或者chain都是無(wú)狀態(tài)的。

所以langchain提供了一個(gè)Memory的功能,可以把之前的輸入輸出保存起來(lái),方便后續(xù)的使用。

總結(jié)

有了langchain的各種工具,現(xiàn)在你就可以快速開(kāi)發(fā)一個(gè)屬于你自己的LLM應(yīng)用啦。

以上就是大語(yǔ)言模型的開(kāi)發(fā)利器langchain快速入門(mén)學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于大語(yǔ)言模型開(kāi)發(fā)langchain的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python使用Selenium和cookie繞過(guò)驗(yàn)證碼實(shí)現(xiàn)登錄示例代碼

    python使用Selenium和cookie繞過(guò)驗(yàn)證碼實(shí)現(xiàn)登錄示例代碼

    文章介紹了如何使用Selenium獲取登錄過(guò)程中的cookie信息,并通過(guò)抓包工具獲取cookie,通過(guò)示例展示了如何在Dsmall和CRM系統(tǒng)中實(shí)現(xiàn)免登陸操作,總結(jié)了兩種方法:一種是在獲取到cookie后直接添加到當(dāng)前會(huì)話中,另一種是將cookie存儲(chǔ)到本地文件并在后續(xù)請(qǐng)求中使用
    2025-01-01
  • Python讀取文件內(nèi)容為字符串的方法(多種方法詳解)

    Python讀取文件內(nèi)容為字符串的方法(多種方法詳解)

    這篇文章主要介紹了Python讀取文件內(nèi)容為字符串的方法,本文通過(guò)三種方式給大家介紹,在文章末尾給大家提到了python讀取txt文件中字符串,字符串用空格分隔的相關(guān)知識(shí),需要的朋友可以參考下
    2020-03-03
  • 基于Python開(kāi)發(fā)一個(gè)文件頭簽名分析工具

    基于Python開(kāi)發(fā)一個(gè)文件頭簽名分析工具

    本文介紹了一個(gè)功能強(qiáng)大的文件頭簽名分析工具的實(shí)現(xiàn)原理和開(kāi)發(fā)過(guò)程,該工具通過(guò)讀取文件頭部二進(jìn)制簽名來(lái)識(shí)別文件真實(shí)類型,即使用戶修改了文件擴(kuò)展名也能準(zhǔn)確判斷,文章詳細(xì)解析了核心算法、GUI設(shè)計(jì)以及技術(shù)實(shí)現(xiàn)細(xì)節(jié),為開(kāi)發(fā)類似工具提供了完整參考,需要的朋友可以參考下
    2025-05-05
  • python利用lxml庫(kù)剩下操作svg圖片

    python利用lxml庫(kù)剩下操作svg圖片

    在大多數(shù)場(chǎng)景中,我們都用?lxml?庫(kù)解析網(wǎng)頁(yè)源碼,但你是否知道,lxml?庫(kù)也是可以操作?svg?圖片的。本文就來(lái)和大家聊聊具體操作方法,希望對(duì)大家有所幫助
    2023-01-01
  • 基于python的字節(jié)編譯詳解

    基于python的字節(jié)編譯詳解

    下面小編就為大家?guī)?lái)一篇基于python的字節(jié)編譯詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 一文詳解Python中的可迭代對(duì)象與迭代器

    一文詳解Python中的可迭代對(duì)象與迭代器

    在Python編程中,可迭代對(duì)象和迭代器是兩個(gè)經(jīng)常被混淆的概念,但它們?cè)趯?shí)際開(kāi)發(fā)中扮演著不同的角色,理解它們的區(qū)別,能幫助我們更高效地處理數(shù)據(jù)序列,避免常見(jiàn)的錯(cuò)誤,本文通過(guò)代碼示例和實(shí)際場(chǎng)景,詳細(xì)解析這兩者的定義、用法和差異,需要的朋友可以參考下
    2025-10-10
  • Python pandas之多級(jí)索引取值詳解

    Python pandas之多級(jí)索引取值詳解

    這篇文章主要為大家介紹了Python pandas之多級(jí)索引取值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 用Python展示動(dòng)態(tài)規(guī)則法用以解決重疊子問(wèn)題的示例

    用Python展示動(dòng)態(tài)規(guī)則法用以解決重疊子問(wèn)題的示例

    這篇文章主要介紹了用Python展示動(dòng)態(tài)規(guī)則法用以解決重疊子問(wèn)題的一個(gè)棋盤(pán)游戲的示例,動(dòng)態(tài)規(guī)劃常常適用于有重疊子問(wèn)題和最優(yōu)子結(jié)構(gòu)性質(zhì)的問(wèn)題,且耗時(shí)間往往遠(yuǎn)少于樸素解法,需要的朋友可以參考下
    2015-04-04
  • 淺談Python實(shí)現(xiàn)貪心算法與活動(dòng)安排問(wèn)題

    淺談Python實(shí)現(xiàn)貪心算法與活動(dòng)安排問(wèn)題

    本篇文章主要介紹了淺談Python實(shí)現(xiàn)貪心算法與活動(dòng)安排問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • python函數(shù)之任意數(shù)量的實(shí)參方式

    python函數(shù)之任意數(shù)量的實(shí)參方式

    這篇文章主要介紹了python函數(shù)之任意數(shù)量的實(shí)參方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評(píng)論

徐水县| 瑞安市| 广丰县| 正定县| 潮安县| 印江| 台安县| 牡丹江市| 咸丰县| 屯昌县| 富顺县| 德格县| 革吉县| 太谷县| 高淳县| 工布江达县| 泾阳县| 英德市| 广德县| 肥城市| 林芝县| 内乡县| 洛扎县| 攀枝花市| 疏勒县| 连平县| 定远县| 汽车| 胶州市| 文化| 内黄县| 专栏| 双鸭山市| 泽库县| 湖州市| 西乡县| 云梦县| 海南省| 孟村| 武穴市| 东方市|