亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

大語言模型的開發(fā)利器langchainan安裝使用快速入門學習

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

簡介

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

當然不是,雖然小公司或者個人不能開發(fā)底層的大語言模型,但是我們可以在大語言模型之上進行應用開發(fā),這應該就是我們現在能做到的。

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

什么是langchain

簡單來說,langchain是一個基于大語言模型只上的開發(fā)框架,有了他,我們就可以輕松在各種大模型之上進行實際應用的開發(fā)。

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

第二點就是提供了工具鏈,可以組裝各種組件,從而實現更加復雜的功能。

langchain的安裝

廢話不多說,我們來看下langchain是如何安裝的。

AI時代大家一定要學一下python,至于為什么要學習python呢?因為其他語言都不好使......

langchain實際上是python的一個開發(fā)包,所以可以通過pip或者conda兩種方式來安裝:

pip安裝

pip install langchain

conda安裝

conda install langchain -c conda-forge

默認情況下上面的安裝方式是最簡單的安裝,還有很多和langchain集成的modules并沒有安裝進來,如果你希望安裝common LLM providers的依賴模塊,那么可以通過下面的命令:

pip install langchain[llms]

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

pip install langchain[all]

因為langchain是開源軟件,所以你也可以通過源代碼來安裝,下載好源代碼之后,通過下面的命令安裝即可:

pip install -e .

langchain快速使用

下面我們以幾個具體的例子來講解一下langchain如何使用的。

因為langchain只是一個大語言模型上的開發(fā)框架,它的所有的能力都是依賴于大語言模型的,所以在使用langchain之前,我們需要一個大語言模型,最簡單同時也是最強大的大語言模型就是openai的chatgpt了。

接下來我們就以接入openai為例子進行講解。

當然langchain也可以接入其他的大語言模型框架,后面的系列教程中我們會詳細講解。

要使用openai,必須先注冊一個openai的賬號,然后拿到openai的api key。

具體的注冊流程這里就不講了。大家可以自行參考網絡上的各種教程。

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

export OPENAI_API_KEY="..."

然后安裝openai的包:

pip install openai

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

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

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

構建應用

有了上面的準備工作,接下來我們就可以開始使用langchain了。

當然,最最基礎的一個應用就是跟大模型交互了,比如跟openai交互,我們可以讓openai給我們寫首詩:

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

雖然寫出來了,但是我覺得寫的一般般吧。

但是這不重要,我們知道了如何通過langchain來調用openai的大模型,這個才是最重要的。

聊天模式

上面我們調用LLM使用用的是"text in, text out"的模型。

雖然聊天模式也是基于LLM,但是他更進了一步,因為他保存了會話的上下問題,所以在對話上更加智能化。

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

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

在絕大多數情況下,我們只需要用到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="請以古龍的口吻,寫首關于春天詩")])

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

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

事實上聊天模式底層還是使用的是LLM,為了方便大家的使用,你也可以直接使用chat.predict方法來進行LLM方式的調用,如下所示:

chat.predict("請以古龍的口吻,寫首關于春天詩")

Prompt的模板

開發(fā)過LLM應用的人都知道,在LLM中Prompt是非常重要的,一個好的Prompt直接決定了這個應用的質量。

但是Prompt肯定需要結合用戶的輸入和我們自己做的一些限定來結合使用。

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

在LLM模式中,可以使用PromptTemplates,這樣來寫:

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

最后生成的結果如下:

請幫忙我詳細描述一下這個物體,這個物體的名字是: 貓

如果是在chat models中,代碼會復雜一點點,但是邏輯實際上是一樣的。 在chat models中,需要用到幾種MessagePromptTemplate,比如:ChatPromptTemplate,SystemMessagePromptTemplate和HumanMessagePromptTemplate。

我們具體來看下如何使用:

from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
template = "現在,你的角色是{your_role}, 請根據你的角色回答后續(xù)的問題."
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="世界上最遠的地方是哪里?")

對應的輸出如下:

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

非常完美。

Chains

langchain還有一個非常有用的功能就是Chains,他可以把多種不同的功能結合起來。

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

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

當然,也可以結合chat使用:

from langchain import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
chat = ChatOpenAI(temperature=0)
template = "現在,你的角色是{your_role}, 請根據你的角色回答后續(xù)的問題."
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="世界上最遠的地方是哪里?")

Agents

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

事實上langchain中的Agents就是代理的意思。

比如我們現在需要向openai詢問昨天的天氣,但是openai本身只是一個大模型,它并不知道實時的信息。但是通過agents就可以先進行一次判斷,看看這個問題是交給大模型處理合適,還是交給搜索引擎來查詢比較合適。

這就是agents的作用。

agents利用LLM來判斷需要怎么處理這個任務,并且以什么樣的順序來處理這個任務。

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

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

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

下面是一個使用SerpAPI結合openai來進行搜索的例子:

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比較復雜,功能也很強大,后續(xù)我們會詳細講解。

Memory

最后要講解的langchain的一個功能就是Memory。

因為很多時候,我們的應用應該是一個有狀態(tài)的,也就是說應用需要知道你之前做了什么,這樣才可以給用戶提供更好的服務。

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

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

總結

有了langchain的各種工具,現在你就可以快速開發(fā)一個屬于你自己的LLM應用啦。

以上就是大語言模型的開發(fā)利器langchain快速入門學習的詳細內容,更多關于大語言模型開發(fā)langchain的資料請關注腳本之家其它相關文章!

相關文章

  • 在pytorch中查看可訓練參數的例子

    在pytorch中查看可訓練參數的例子

    今天小編就為大家分享一篇在pytorch中查看可訓練參數的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python生成器推導式用法簡單示例

    python生成器推導式用法簡單示例

    這篇文章主要介紹了python生成器推導式用法,結合簡單實例形式分析了Python生成器推導式的原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-10-10
  • python print出共軛復數的方法詳解

    python print出共軛復數的方法詳解

    在本篇內容里小編給大家分享的是關于python print出共軛復數的方法總結內容,有需要的讀者們可以學習下。
    2019-06-06
  • Python 對象序列化與反序列化之pickle json詳細解析

    Python 對象序列化與反序列化之pickle json詳細解析

    我們知道在Python中,一切皆為對象,實例是對象,類是對象,元類也是對象。本文正是要聊聊如何將這些對象有效地保存起來,以供后續(xù)使用
    2021-09-09
  • Python正則表達式非貪婪、多行匹配功能示例

    Python正則表達式非貪婪、多行匹配功能示例

    這篇文章主要介紹了Python正則表達式非貪婪、多行匹配功能,結合實例形式分析了Python正則表達式中非貪婪及多行匹配功能的實現方法與相關注意事項,需要的朋友可以參考下
    2017-08-08
  • Python?sklearn庫中的隨機森林模型詳解

    Python?sklearn庫中的隨機森林模型詳解

    本文主要說明?Python?的?sklearn?庫中的隨機森林模型的常用接口、屬性以及參數調優(yōu)說明,需要讀者或多或少了解過sklearn庫和一些基本的機器學習知識
    2023-08-08
  • python去除字符strip方法的實現

    python去除字符strip方法的實現

    Python中strip()方法用于去除字符串首尾的空白字符,包括空格、制表符和換行符,可以確保字符串沒有多余的空白字符,感興趣的可以了解一下
    2024-11-11
  • Python實現批量將MP3音頻轉為WAV格式詳解

    Python實現批量將MP3音頻轉為WAV格式詳解

    這篇文章主要介紹了通過Python實現將MP3音頻轉為WAV格式的方法,文中的示例代碼講解詳細,對我們學習Python有一定幫助,感興趣的可以了解一下
    2021-12-12
  • 關于Python3的import問題(pycharm可以運行命令行import錯誤)

    關于Python3的import問題(pycharm可以運行命令行import錯誤)

    這篇文章主要介紹了關于Python3的import問題(pycharm可以運行命令行import錯誤),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 利用Python操作消息隊列RabbitMQ的方法教程

    利用Python操作消息隊列RabbitMQ的方法教程

    RabbitMQ是一個在AMQP基礎上完整的,可復用的企業(yè)消息系統(tǒng)。他遵循Mozilla Public License開源協(xié)議。下面這篇文章主要給大家介紹了關于利用Python操作消息隊列RabbitMQ的方法教程,需要的朋友可以參考下。
    2017-07-07

最新評論