Python 程式設計 - 高階

LangChain 怎麼玩?為了荷包著想,管好你的 prompt 長度(size)

每 1 個語言模型都有其限制,而所有語言模型都會有的限制就是 tokens 上限,而 tokens 上限會影響能夠接受的 prompt 長度。

如果你使用的不是開源語言模型,那不控制 prompt 長度所帶來的影響還有伴隨而來的費用。

以 OpenAI 所提供的語言模型 GPT-4 為例,每輸入 1 百萬個 tokens 就需要收費 $30 美元,如果你的應用沒有注意使用者所輸入 prompt 長度,那你很可能會為不必要的 tokens 付出代價。

所以學會如何控制 prompt 長度也是一門重要的課題!因為會幫助你避免踩到語言模型的限制之外,也可以幫助你控制費用支出。

Posted on  Mar 5, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

LangChain 怎麼玩?用 LangServe 架個 API 伺服器吧!

打造語言模型相關應用,總不能要求使用者都要透過網路下載/更新語言模型,畢竟每個使用者的硬體條件不一,包含 CPU / GPU / 記憶體 / 硬碟容量都可能需要滿足一定條件,才能夠執行語言模型,而且語言模型作為競爭力核心,無法輕易開放他人下載使用,也是一種商業考量。

綜觀而言,將語言模型的功能透過 API 方式開放,是 1 個相當合理的選項,不僅使用者不需要滿足硬體條件,又可以保護開發者的商業競爭力。

LangChain 自然也有提供將語言模型轉回 API 服務的能力,該功能/套件稱為 LangServe 。

本文將教學如何使用 LangServe 將語言模型轉為 API 服務!

Last updated on  Jul 25, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 9 min read

LangChain 怎麼玩? 動態修改運作中的 Chain 設定 / configure chain internals at runtime

不知道你有沒有想過 1 個 Chain 要如何做到動態載入不同使用者的資料?或者如何像 ChatGPT 那樣可以切換模型?

這個功能在 LangChain 中稱為 configurable_fieldsconfigurable_alternatives ,可以讓我們動態修改 chain 的設定,或者置換 chain 上的某個 Runnable (例如 prompt, language model 都是 Runnable) 。

能動態變更 chain 設定的功能相當重要,學會使用它也是必要的功課之一,否則我們所開發出來的應用會喪失不少彈性!

Posted on  Feb 29, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 6 min read

LangChain 怎麼玩? LCEL (LangChain Expression Language) 篇,一定要認識的 LangChain 核心

LangChain 怎麼玩?入門教學篇 雖然有提到 LCEL(LangChain Expression Language), 不過並沒有深入理解到底什麼是 LCEL 。

LCEL 是 LangChain 的核心,如果要能夠設計出更複雜的 LangChain 應用,甚至是將 LangChain 應用轉為 API 對外服務,那麼 LCEL 是一定要認識/理解的。

Posted on  Feb 27, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

LangChain 怎麼玩? Agents 篇,來整合一些客製化的功能/工具吧

你有沒有特別想過如果我們開發的功能要怎麼跟語言模型進行結合?畢竟語言模型如果只能做聊天應用的話,那麼它的應用範圍就相當侷限。

這個問題的解答就是 LangChain 的 Agents 。

Agents 可以讓我們把自己開發的功能接上語言模型,讓語言模型執行我們所開發的功能!

本文同樣以 1 個簡單的範例開始,帶大家建立自己的 Agents 。

Posted on  Feb 24, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 7 min read

LangChain 怎麼玩? Retrieval 篇,來做個聊天機器人(ChatBot)吧

LangChain 怎麼玩?入門教學篇 中,我們學會如何透過 LangChain 與語言模型進行互動,不過很可惜的是它不像 ChatGPT 那樣記住對話內容,另外也無法輸入新的資料,訓練它像客服機器人一樣回答特定的問題。

本文將進一步突破這些限制,讓我們能夠做出像 ChatGPT 那樣的對話應用,甚至是輸入新的資料給語言模型,讓它能夠回答特定的問題!

Posted on  Feb 8, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 9 min read

LangChain 怎麼玩?入門教學篇

AI 時代,打不贏就加入它!

所以個人認為學會 LangChain 之類的框架,在未來可能會是每個程式設計師不可或缺的技術,也就是說除了寫程式之外,你可能還需要用 LangChain 之類的框架做出適合自己的工具,幫助提升效率與生產力,藉此增加自身的職場優勢。

本文將介紹 LangChain 結合 llama 語言模型如何使用的入門教學。

p.s. 使用開源語言模型的 llama 的好處在於不用付費,輸出品質也有一定保證

Posted on  Feb 2, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

Python 細說 type() 與 Metaclass

Python 的類別定義有個神奇的參數,稱為 metaclass , 範例如下:

class Meta(type):
    pass

class A(metaclass=Meta):
    pass

這個參數不是繼承(inheritance), 但是它到底具體是做什麼的呢?就讓本文娓娓道來吧!

Posted on  Oct 26, 2023  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 4 min read