小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

LLM之LangChain:LangChain 0.1.0 版本發(fā)布的簡介、安裝和使用方法、案例應用之詳細攻略

 處女座的程序猿 2024-01-15 發(fā)布于上海

LLM之LangChain:LangChain 0.1.0 版本發(fā)布的簡介、安裝和使用方法、案例應用之詳細攻略

導讀:2024年1月8日,今天,我們很高興宣布發(fā)布 langchain 0.1.0,這是我們的第一個穩(wěn)定版本。它完全向后兼容,提供了 Python 和 JavaScript 兩個版本,并通過功能和文檔的雙重改進來提高焦點。LangChain 的穩(wěn)定版本有助于贏得開發(fā)者的信任,并使我們能夠有系統(tǒng)地和安全地演進該庫。

本文主要總結(jié)了 LangChain 0.1.0 版本的發(fā)布以及它解決的一些核心問題。由于歷史版本 LangChain 0.0.x 雜亂無章,沒有明確的版本規(guī)范,給用戶帶來不確定性。無論更新是功能還是修復,都有可能帶來breaking change,給用戶使用和維護帶來困難。

LangChain 0.1.0 版本的發(fā)布,將 LangChain 拆分為核心庫 langchain-core 和不同組件,明確功能邊界。LangChain 0.1.0 起正式采用語義版本號規(guī)范管理,明確breaking更改規(guī)范。提供 LangChain Expression Language (LCEL),支持用戶高度定制各種組件間交互流程。引入 LangSmith 提供全流程觀測能力,幫助開發(fā)調(diào)試。

核心特點:

>> 提供豐富的第三方組件整合能力。

>> 支持學習模型檢索與調(diào)用存儲的數(shù)據(jù)能力。

>> 支持基于學習模型進行復雜任務的智能代理能力。

>> 通過LCEL等支持學習模型結(jié)果解析和自定義工作流能力。

>> 支持學習模型結(jié)果流式處理,提升用戶體驗。

優(yōu)勢:

>> 簡化學習模型項目開發(fā),提高開發(fā)效率。

>> 幫助開發(fā)者快速排查問題和進行調(diào)試。

>> 采用語義版本號明確更新規(guī)范,減少breaking change風險。

>> 提供豐富的核心組件和定制能力,滿足各種復雜需求。

>> 積極開源并與開發(fā)者社區(qū)互動,共同提升產(chǎn)品。


相關文章

Py之Langchain:Langchain(LLM大型語言模型應用程序框架/將LLMs個體進行flow的能力)的簡介、安裝、使用方法之詳細攻略

https://yunyaniu.blog.csdn.net/article/details/127779588

LangChain 0.1.0 版本發(fā)布的簡介

LangChain 已經(jīng)存在了一年多,隨著它發(fā)展成為構(gòu)建 LLM 應用程序的默認框架,它發(fā)生了很多變化。正如我們在一個月前預覽的那樣,我們最近決定對 LangChain 軟件包架構(gòu)進行重大更改,以更好地組織項目并加強基礎。

具體而言,我們進行了兩個重大的架構(gòu)更改:將 langchain-core 和合作伙伴軟件包(或者是放入 langchain-community 中,或者是獨立的合作伙伴軟件包)從 langchain 中分離出來。

作為提醒,langchain-core 包含主要的抽象、接口和核心功能。這段代碼是穩(wěn)定的,已經(jīng)遵循了一個多月的更嚴格的版本控制政策。

然而,langchain 本身仍然保持在 0.0.x 版本上。將所有版本都放在次要版本 0 上創(chuàng)建了一些挑戰(zhàn):

>> 用戶無法確信更新不會有破壞性的變化

>> 隨著我們采取“維護一切”的方式以減少破壞性變化和棄用通知,langchain 變得臃腫且不穩(wěn)定

然而,從今天開始發(fā)布 langchain 0.1.0,所有未來的發(fā)布都將遵循一個新的版本標準。具體而言:

>> 對公共 API 的任何破壞性更改將導致次要版本號的提升(第二位數(shù))

>> 任何錯誤修復或新功能將導致修補版本號的提升(第三位數(shù))

我們希望這一點,再加上之前的架構(gòu)更改,將:

>> 明確傳達是否進行了破壞性更改,使開發(fā)者可以放心地更新

>> 為正式棄用和刪除舊代碼提供途徑,減少冗余

>> 更負責任地處理集成(它們的 SDK 通常與 LangChain 一樣迅速變化)

即使在發(fā)布 0.2 版本之后,我們?nèi)匀怀兄Z維護 0.1 的分支,但僅修補關鍵的錯誤。在本文的最后,您可以了解更多關于我們的計劃。

在重新架構(gòu)軟件包以邁向穩(wěn)定的 0.1 版本的過程中,我們抓住機會與數(shù)百名開發(fā)者交流,了解他們?yōu)楹问褂?LangChain 以及他們喜歡其中的哪些方面。這些意見指導了我們的方向和重點。我們還利用這個機會在下面概述的核心領域中為 Python 和 JavaScript 版本帶來了一致性。

雖然某些集成和更為輔助的鏈可能是特定于語言的,但核心抽象和關鍵功能在 Python 和 JavaScript 軟件包中都得到了相同的實現(xiàn)。

我們想分享我們聽到的意見以及我們不斷改進 LangChain 的計劃。我們希望通過分享這些經(jīng)驗,增加透明度,讓其他人更好地使用、理解和為 LangChain 做出貢獻。畢竟,LangChain 的一個巨大部分是我們的社區(qū)——包括用戶群體和2000多名貢獻者——我們希望每個人都能參與其中。

文章地址LangChain v0.1.0

文檔地址langchain 0.1.0 — 🦜🔗 LangChain 0.1.0

Python GitHub 討論,地址:LangChain v0.1.0 · langchain-ai/langchain · Discussion #15712 · GitHub

Python v0.1.0 指南,地址:GitHub - hwchase17/langchain-0.1-guides at blog.langchain.dev

JS v0.1.0 指南,地址:GitHub - bracesproul/langchainjs-0.1-guides at blog.langchain.dev

YouTube 演示,地址:https://www./watch?v=Fk_zZr2DbQY&list=PLfaIDFEXuae0gBSJ9T0w7cu7iJZbH3T31&pp=gAQBiAQB&ref=blog.langchain.dev

1、第三方集成

人們最喜歡 LangChain 的一點是我們?nèi)绾?span style="color:#ff0000;">輕松地讓他們在任何堆棧上開始構(gòu)建。我們有近700個集成,從LLMs到向量存儲到工具,供代理使用。

LangChain 通常被用作將構(gòu)建 LLM 應用程序所需的所有不同組件“粘合”在一起的工具,因此優(yōu)先考慮強大的集成生態(tài)系統(tǒng)對我們非常重要。

大約一個月前,我們開始進行一些變更,我們認為這些變更將改善集成的穩(wěn)健性、穩(wěn)定性、可擴展性和一般的開發(fā)者體驗。我們將所有第三方集成都拆分到 langchain-community 中——這使我們能夠集中處理與集成相關的工作。我們還開始將各個集成拆分到它們自己的軟件包中。到目前為止,我們已經(jīng)為約10個軟件包執(zhí)行了此操作,包括 OpenAI、Google 和 Mistral。這樣做的一個好處是更好的依賴管理——以前,所有依賴項都是可選的,嘗試安裝特定版本時可能會導致一些麻煩。現(xiàn)在,如果集成位于自己的軟件包中,我們可以更嚴格地版本化它們的要求,從而更容易安裝。另一個好處是版本控制。通常,第三方集成會發(fā)生變化,需要進行破壞性變更?,F(xiàn)在,可以在獨立的集成軟件包中以適當?shù)陌姹究刂品从尺@些變化。

2、可觀察性

構(gòu)建 LLM 應用程序涉及將一個非確定性組件放在系統(tǒng)的中心。這些模型通常會輸出意外的結(jié)果,因此對系統(tǒng)中發(fā)生的事情進行可見性是至關重要的。

我們希望使 langchain 盡可能可觀察和可調(diào)試,無論是通過架構(gòu)決策還是通過我們在一旁構(gòu)建的工具。

我們以幾種方式著手解決這個問題。

我們解決這個問題的主要方式是通過構(gòu)建 LangSmith。 LangSmith 提供的主要價值主張之一是為您的 LLM 應用程序提供最佳的調(diào)試體驗。我們記錄確切發(fā)生的每個步驟,每個步驟的輸入是什么,每個步驟的輸出是什么,每個步驟需要多長時間等數(shù)據(jù)。我們以用戶友好的方式顯示這些數(shù)據(jù),使您能夠識別哪些步驟花費的時間最長,進入一個游樂場以調(diào)試意外的 LLM 響應,跟蹤令牌使用情況等等。即使在私人測試版中,對 LangSmith 的需求也是壓倒性的,我們正在大力投資于可伸縮性,以便在未來幾個月內(nèi)發(fā)布公共測試版,然后使其普遍可用。我們還已經(jīng)支持企業(yè)版本,為那些有嚴格數(shù)據(jù)隱私政策的企業(yè)提供了在 VPC 內(nèi)部署的選項。

我們還以其他方式解決了可觀察性的問題。我們長期以來一直在管道的不同日志級別中內(nèi)置了冗長和調(diào)試模式。我們最近引入了可視化您創(chuàng)建的鏈以及獲取所有使用的提示的方法。

3、可組合性

雖然有預構(gòu)建的鏈以幫助入門,但我們經(jīng)??吹綀F隊超越這些架構(gòu)并希望自定義他們的鏈——不僅僅是自定義提示,還包括自定義協(xié)調(diào)的不同部分。

在過去的幾個月里,我們在 LangChain 表達語言(LCEL)上進行了大量投資。這使得可以組合任意序列,提供與數(shù)據(jù)工程管道(批處理、并行化、回退)相同的許多好處。

它還提供了一些對 LLM 工作負載獨特的好處,主要是 LLM 特定的可觀察性(上面已涵蓋),以及本文后面將要介紹的流式傳輸。

LCEL 的組件位于 langchain-core 中。我們已經(jīng)開始為 LangChain 中的特定鏈創(chuàng)建更高級別的入口點。這些將逐漸替換先前的(現(xiàn)在稱為“Legacy”)鏈,因為使用 LCEL 構(gòu)建的鏈將獲得流式傳輸、易于定制、可觀察性、批處理、自動重試等功能。我們的目標是使這個過渡變得無縫。以前可能是這樣做的:

ConversationalRetrievalChain.from_llm(llm, …)

我們希望簡單地做成這樣:

create_conversational_retrieval_chain(llm, …)

在底層,它將創(chuàng)建一個特定的 LCEL 鏈并返回它。如果要修改邏輯——沒問題!因為它全部都是用 LCEL 編寫的,所以可以輕松地修改其中的一部分,而無需子類化任何內(nèi)容或覆蓋任何方法。

LangChain 中有很多鏈,其中許多都被廣泛使用。在替代構(gòu)造函數(shù)存在并被使用和經(jīng)過良好測試之前,我們不會棄用鏈的舊版本。

4、流式傳輸

LLMs 有時可能需要一段時間才能響應。向最終用戶顯示正在執(zhí)行工作而不是盯著空白屏幕非常重要。這可以采用從 LLM 流式傳輸令牌或流式傳輸中間步驟(如果鏈或代理運行時間更長)的形式。

我們在這兩方面都投入了大量資源。所有使用 LCEL 構(gòu)建的鏈都公開了標準的 stream 和 astream 方法,我們在流式傳輸方面進行了大量工作,確保不僅僅在 LLM 調(diào)用中進行流式傳輸(例如,在輸出解析器中也進行)。所有鏈還公開了一個標準的 astream_log 方法,該方法在 LCEL 鏈中流式傳輸所有步驟。然后,可以過濾這些步驟以輕松獲取中間步驟和其他信息。

對于大多數(shù) LLM 應用程序而言,流式傳輸(令牌和中間步驟)是關鍵的用戶體驗組成部分,使用 LangChain 可以輕松實現(xiàn)這一點。

5、輸出解析

LangChain 的主要用途之一是“工具使用”——使用 LLMs 調(diào)用其他工具。

確保 LLM 以可以在下游應用程序中使用的結(jié)構(gòu)化格式返回信息對于啟用 LLM 執(zhí)行操作至關重要。

我們在這方面進行了大量工作,引入了輸出解析器的概念,以提供良好的開發(fā)體驗。

LangChain的主要用例之一是“工具使用” - 使用LLMs調(diào)用其他工具。

確保LLM以結(jié)構(gòu)化格式返回信息,以便在下游應用中使用對于使LLMs能夠采取行動至關重要。

我們在這方面投入了大量工作,引入了輸出解析的概念,以提供良好的開發(fā)人員體驗。

實現(xiàn)這一目標的主要方式之一是通過OpenAI函數(shù)調(diào)用。我們不僅使指定輸出格式變得簡單(使用Pydantic、JSON模式甚至是函數(shù)),而且還輕松處理響應。我們還支持幾種不同的編碼方法(JSON、XML、Yaml),用于在您想要使用不支持OpenAI函數(shù)調(diào)用的模型時進行提示。當您需要使用提示時,您還需要適當?shù)闹噶罡嬖VLLM如何響應 - 所有輸出解析器都配備了一個get_format_instructions方法來獲取這些指令。

我們還在輸出解析器方面投資了更高級的功能,如允許它們在生成時通過部分結(jié)果進行流式處理以改善用戶體驗。這包括從結(jié)構(gòu)化格式(如JSON、XML和CSV)中流式處理部分結(jié)果。對于輸出解析,有時可能會有些棘手 - 為了解析JSON blob,大多數(shù)JSON解析器需要一個完整的JSON blob。許多我們的輸出解析器包含內(nèi)置邏輯,以執(zhí)行部分解析。

6、檢索

我們看到開發(fā)人員構(gòu)建的主要類型的應用程序之一是與其私有數(shù)據(jù)交互的應用程序。

能夠輕松地將您的數(shù)據(jù)與LLMs結(jié)合使用是LangChain的一個非常重要的部分。這通常涉及兩個不同的組件 - 攝取(準備數(shù)據(jù))和檢索(檢索數(shù)據(jù)),我們都已經(jīng)構(gòu)建出來了。

在攝取方面,攝取的一個重要部分是將您正在處理的文本分割成塊。盡管這可能看似微不足道,但通常最好的方法往往是微妙的,而且通常特定于您正在處理的文檔類型。我們有15種不同的文本拆分器,一些經(jīng)過優(yōu)化以適應特定文檔類型(如HTML和Markdown),以使開發(fā)人員在此過程中具有最大的控制權。相關數(shù)據(jù)通常會發(fā)生變化,而我們的攝取系統(tǒng)設計用于生產(chǎn)規(guī)模的應用程序。我們提供了一個索引API,允許您重新攝入內(nèi)容,同時忽略未更改的部分 - 為大量工作負載節(jié)省時間和成本。

在檢索方面,我們投資于更先進的方法,同時使檢索更具生產(chǎn)力。我們實施了來自學術界的先進檢索策略(如FLARE和Hyde),創(chuàng)建了我們自己的策略(如Parent Document和Self-Query),并從其他行業(yè)解決方案中借鑒了一些(如Multi-Query - 源自搜索中常用的查詢擴展)。我們還確保支持生產(chǎn)關注點,如每用戶檢索 - 對于存儲多個用戶的文檔的任何應用程序都至關重要。

重要的是,盡管LangChain提供了構(gòu)建先進檢索系統(tǒng)所需的所有組件,但我們在如何實現(xiàn)這一目標上并不過于武斷。這導致許多其他庫構(gòu)建在LangChain之上,以提供更具意見的檢索方法 - 例如EmbedChain和GPTResearcher。

7、代理

LangChain最早因其代理工作負載而聞名。這可能意味著兩件事:

>> 工具使用:使LLM調(diào)用函數(shù)或工具

>> 推理:如何最好地使LLM多次調(diào)用工具,以及以何種順序(或根本不調(diào)用工具!)

在工具使用方面,我們主要涵蓋了我們認為至關重要的組件:

>> 與大量第三方工具的集成

>> 以適應這些工具的輸入模式的方式結(jié)構(gòu)LLMs的響應

>> 以LCEL指定這些工具應該被調(diào)用的自定義方式的靈活方式

在推理方面,我們有一些不同的“代理”方法,可以基本上被視為在循環(huán)中運行的LLM,每次迭代決定它需要調(diào)用哪個(如果有的話)工具,然后觀察該工具的結(jié)果。我們從一開始就引入了ReAct(一種早期的提示策略),并迅速添加了許多其他類型,包括使用OpenAI函數(shù)調(diào)用的類型,使用它們的新工具調(diào)用API的類型,優(yōu)化對話的類型等等。

通過靈活和可擴展的工具支持和先進的推理功能,LangChain已成為使LLMs能夠采取行動的默認方式。

與檢索類似,盡管LangChain提供了代理的構(gòu)建塊,但我們還看到了一些更具意見的框架構(gòu)建在其上。一個很好的例子是CrewAI,它基于LangChain構(gòu)建,提供了一個更容易的界面,用于多代理工作負載。

8、LangChain 0.2

盡管我們剛剛發(fā)布了LangChain 0.1,但我們已經(jīng)在思考0.2。對我們來說,一些重要的事情是:

>> 用LCEL重寫傳統(tǒng)鏈(具有更好的流式處理和調(diào)試支持)

>> 添加新類型的鏈

>> 添加新類型的代理

>> 提高我們的生產(chǎn)攝取能力

>> 刪除舊的和未使用的功能

重要的是,即使我們對刪除一些舊的和遺留的代碼以使langchain更加精簡和專注感到興奮,我們也希望維護對仍在使用舊版本的人的支持。這就是為什么我們將保持0.1作為一個穩(wěn)定的分支(修復關鍵錯誤)至少在0.2發(fā)布后的3個月內(nèi)。我們計劃在今后的每個穩(wěn)定發(fā)布中執(zhí)行此操作。

如果您一直想要開始貢獻,現(xiàn)在是個好時機。我們最近在GitHub上添加了一個很好的入門問題,如果您正在尋找一個開始的地方。

9、One More Thing

LangChain v0.1.0的一個很大的部分是穩(wěn)定性和專注于上述核心區(qū)域?,F(xiàn)在我們已經(jīng)確定了人們喜歡LangChain的方面,我們可以開始在那些方面添加更先進和完整的工具。

人們喜歡LangChain的主要原因之一是它對代理的支持。大多數(shù)代理基本上被定義為在某種循環(huán)中運行LLM。到目前為止,我們進行這種操作的唯一方式是使用AgentExecutor。我們向AgentExecutor添加了許多參數(shù)和功能,但它仍然只是運行循環(huán)的一種方式。

我們很高興地宣布langgraph的發(fā)布,這是一個允許創(chuàng)建語言代理作為圖形的新庫。

這將允許用戶創(chuàng)建更自定義的循環(huán)行為。您可以定義顯式的規(guī)劃步驟、顯式的反思步驟,或者輕松地將其硬編碼,使得特定工具始終首先被調(diào)用。

它受Pregel和Apache Beam的啟發(fā)。當前公開的接口是受NetworkX啟發(fā)的,看起來像這樣:

Explain
from langgraph.graph import END, Graph

workflow = Graph()

workflow.add_node("agent", agent)
workflow.add_node("tools", execute_tools)

workflow.set_entry_point("agent")

workflow.add_conditional_edges(
    "agent",
    should_continue,
    {
        "continue": "tools",
        "exit": END
    }
)

workflow.add_edge('tools', 'agent')

chain = workflow.compile()

我們過去六個月一直在進行這方面的工作,與用戶進行了測試。它目前支持OpenGPTs。在接下來的幾周內(nèi),我們將添加更多示例和文檔 - 我們對此感到非常激動!

在這里嘗試一下。

10、Conclusion

隨著生態(tài)系統(tǒng)的發(fā)展,LangChain已經(jīng)發(fā)生了顯著變化。我們非常感謝我們的社區(qū)和用戶一直以來的支持和建設。通過這個0.1版本,我們花時間了解您在LLM框架中想要和需要什么,并承諾繼續(xù)構(gòu)建它。隨著社區(qū)需求的演變(或者如果我們遺漏了什么),我們希望聽取您的反饋,以便我們可以解決它。人們說:“千里之行始于足下。” - 或者在我們的情況下,版本0.1。

LangChain 0.1.0 版本的安裝和使用方法

pip install langchain

LangChain 0.1.0 版本的案例應用

更新中……

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多