BigDL-LLM 提供了 TransformerLLM,它实现了 LangChain 的 LLM wrapper 的标准接口。因此可以利用LangChain的各种方法。
1.1 模型加载
以TransformerLLM方法为例,可以从 huggingface model_id 或路径实例化llm。可以在 model_kwargs 中以字典形式传入与模型生成相关的参数(如 temperature
, max_length
)。以 vicuna-7b-v1.5 模型为例实例化创建一个 TransformerLLM
。
from bigdl.llm.langchain.llms import TransformersLLM
llm = TransformersLLM.from_model_id(
model_id="lmsys/vicuna-7b-v1.5",
model_kwargs={"temperature": 0, "max_length": 1024, "trust_remote_code": True},
)
1.2 使用 Chains
在简单应用中,单独使用LLM是可以的, 但更复杂的应用需要将LLM进行链接 - 要么相互链接,要么与其他组件链接.LangChain为这种"链接"应用提供了Chain接口。chain 中的组件可以是 prompt 模板、模型、内存缓冲区等。
LLMChain是最基本的构建块链。它接受一个提示模板,将其与用户输入进行格式化,并返回 LLM 的响应。
from langchain import PromptTemplate //创建模板
from langchain import LLMChain // 引入Chain组件
from bigdl.llm.langchain.llms import TransformersLLM //导入模型的方法
//导入模型
llm = TransformersLLM.from_model_id(
model_id="lmsys/vicuna-7b-v1.5",
model_kwargs={"temperature": 0, "max_length": 1024, "trust_remote_code": True},
)
//创建模板
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
llm_chain = LLMChain(prompt=prompt, llm=llm) //构建Chain
question = "What is AI?"
result = llm_chain.run(question)
1.3 多个参数模板
如果模板中有多个变量,您可以使用字典一次性输入它们。
prompt = PromptTemplate(
input_variables=["company", "product"],
template="What is a good name for {company} that makes {product}?",
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run({
'company': "ABC Startup",
'product': "colorful socks"
}))