更新於 2024/12/17閱讀時間約 5 分鐘

LLM 串連:利用不同模型的優勢完成更複雜和多樣的任務

前言

在先前的文章中,我們探討了 IBM Watsonx 在客戶滿意度分析中的應用。今天,我們將利用 Google 的兩款大型語言模型(LLM)— flan-ul2 和 flan-t5-xxl,展示它們如何串聯起來生成關於特定主題的隨機問題和回答。

在這篇文章中,將使用 SimpleSequentialChain 方法,其中一個模型的輸出將成為另一個模型的輸入,形成一個連續的對話流程。以下說明如何設置和運用這兩個模型,以及它們是如何互相作用來產生有趣且相關的問答。

Chain的基本概念

LLM 是一種深度學習模型,經過大量的文本訓練,使其擁有從海量的知識中識別、匯總、翻譯、預測等能力。Chain 是一種將多個 LLM 連接在一起,以完成更複雜和多樣的任務的方法。Chain 可以讓您利用不同模型的優勢,並將它們的輸出作為下一個模型的輸入,形成一個有序的工作流程。

例如,您可以使用一個 LLM 來生成一個問題,然後使用另一個 LLM 來回答該問題,或者使用一個 LLM 來翻譯一段文本,然後使用另一個 LLM 來摘要該文本。如果想要串聯多個 LLMChain,您可以使用 SimpleSequentialChain 或 SequentialChain 類別來實現。這些類別可以讓多個 LLMChain 按照順序連接起來,並將前一個 LLMChain 的輸出作為後一個 LLMChain 的輸入。


實作

選擇基礎模型

model_id_1 = ModelTypes.FLAN_UL2
model_id_2 = ModelTypes.FLAN_T5_XXL

這次為了要讓兩模型互動,選擇了兩個基礎模型。

定義模型參數

from ibm_watson_machine_learning.metanames import GenTextParamsMetaNames as GenParams
from ibm_watson_machine_learning.foundation_models.utils.enums import DecodingMethods

parameters = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 100,
GenParams.MIN_NEW_TOKENS: 1,
GenParams.TEMPERATURE: 0.5,
GenParams.TOP_K: 50,
GenParams.TOP_P: 1
}

Simple Sequential Chain

「簡易串聯鏈」(SimpleSequentialChain)是一種基礎鏈結構,其中每個階段的輸出自動成為下一階段的輸入。在這個過程中,我們將使用兩個 PromptTemplate 對象:一個用於創造隨機問題,另一個用於回答問題。這樣的設置允許我們將 LLMChain 串連,實現自動問題生成和回答

from langchain import PromptTemplate

prompt_1 = PromptTemplate(
input_variables=["topic"],
template="Generate a random question about {topic}: Question: "
)
prompt_2 = PromptTemplate(
input_variables=["question"],
template="Answer the following question: {question}",
)

實際 inference

from langchain.chains import LLMChain

prompt_to_flan_ul2 = LLMChain(llm=flan_ul2_model.to_langchain(), prompt=prompt_1)
flan_to_t5 = LLMChain(llm=flan_t5_model.to_langchain(), prompt=prompt_2)
from langchain.chains import SimpleSequentialChain 
qa = SimpleSequentialChain(chains=[prompt_to_flan_ul2, flan_to_t5], verbose=True)

產生

應用中文版

延伸應用在 FAQ 的生成


小心得

這次練習 LLM 串連的基本概念和實作方法,並展示了如何使用 Google 的兩款大型語言模型 flan-ul2 和 flan-t5-xxl 生成關於特定主題的隨機問題和回答。通過 LLM 串連,我們可以將多個 LLM 模型按照順序連接起來,形成一個有序的工作流程,並利用不同模型的優勢來完成更複雜和多樣的任務。

在這個過程中,當兩個語言模型被放在一起時,它們可以開始進行對話和討論,這為智能客服或對話機器人等應用中的 AI 創造了更多的價值。希望這篇文章能夠幫助您更好地理解 LLM 串連的概念和應用,並啟發您在自己的項目中使用 LLM 串連來實現更多的創新和價值,感謝看到這裡的你,我們下次見~

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.