LangChain学习文档
-
Chains(链)
- 【LangChain】不同的调用方式(Different call methods)
- 【LangChain】自定义chain
- 【LangChain】调试Chain(Debugging chains)
- 【LangChain】从LangChainHub加载(Loading from LangChainHub)
- 【LangChain】添加上下文记忆(Adding memory (state))
- 【LangChain】序列化(Serialization)–持久化到磁盘
概述
本笔记本介绍了如何将Chain
序列化到磁盘和从磁盘序列化回来。我们使用的序列化格式是json或yaml
。目前,只有部分Chain
支持这种类型的序列化。随着时间的推移,我们将增加支持的Chain
的数量。
内容
将链保存到磁盘(Saving a chain to disk)
首先,我们来看看如何将Chain
保存到磁盘。这可以通过 .save
方法并指定带有 json 或 yaml
扩展名的文件路径来完成。
from langchain import PromptTemplate, OpenAI, LLMChain
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm_chain = LLMChain(prompt=prompt, llm=OpenAI(temperature=0), verbose=True)
# 关键点这里
llm_chain.save("llm_chain.json")
现在让我们看看这个保存的文件里面有什么
cat llm_chain.json
结果:
{
"memory": null,
"verbose": true,
"prompt": {
"input_variables": [
"question"
],
"output_parser": null,
"template": "Question: {question}\n\nAnswer: Let's think step by step.",
"template_format": "f-string"
},
"llm": {
"model_name": "text-davinci-003",
"temperature": 0.0,
"max_tokens": 256,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"n": 1,
"best_of": 1,
"request_timeout": null,
"logit_bias": {},
"_type": "openai"
},
"output_key": "text",
"_type": "llm_chain"
}
从磁盘中加载Chain(Loading a chain from disk)
我们可以使用 load_chain
方法从磁盘加载Chain
。
from langchain.chains import load_chain
chain = load_chain("llm_chain.json")
chain.run("whats 2 + 2")
结果:
> Entering new LLMChain chain...
Prompt after formatting:
Question: whats 2 + 2
Answer: Let's think step by step.
> Finished chain.
' 2 + 2 = 4'
单独保存组件(Saving components separately)
在上面的例子中,我们可以看到prompt
和llm
配置信息与整体Chain
保存在同一个json
中。或者,我们可以将它们分开并单独保存。这通常有助于使保存的组件更加模块化。为此,我们只需指定 llm_path
、 Prompt_path
。
单独对Prompt
组件进行保存
# 上面是:llm_chain.save("llm_chain.json")
llm_chain.prompt.save("prompt.json")
打印看结果:
cat prompt.json
{
"input_variables": [
"question"
],
"output_parser": null,
"template": "Question: {question}\n\nAnswer: Let's think step by step.",
"template_format": "f-string"
}
单独对llm
进行保存:
llm_chain.llm.save("llm.json")
查看结果:
cat llm.json
{
"model_name": "text-davinci-003",
"temperature": 0.0,
"max_tokens": 256,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"n": 1,
"best_of": 1,
"request_timeout": null,
"logit_bias": {},
"_type": "openai"
}
这些独立序列化的组件,该如何组装呢?
就是指定相应组件的文件名
config = {
"memory": None,
"verbose": True,
"prompt_path": "prompt.json",
"llm_path": "llm.json",
"output_key": "text",
"_type": "llm_chain",
}
import json
# 将config编码写入到llm_chain_separate.json文件中
with open("llm_chain_separate.json", "w") as f:
json.dump(config, f, indent=2)
查看效果:
cat llm_chain_separate.json
{
"memory": null,
"verbose": true,
"prompt_path": "prompt.json",
"llm_path": "llm.json",
"output_key": "text",
"_type": "llm_chain"
}
然后我们可以用同样的方式加载它
chain = load_chain("llm_chain_separate.json")
chain.run("whats 2 + 2")
结果:
> Entering new LLMChain chain...
Prompt after formatting:
Question: whats 2 + 2
Answer: Let's think step by step.
> Finished chain.
' 2 + 2 = 4'
总结
本文讲述了,如何持久化、从磁盘加载、独立序列化组件、加载独立序列化组件的内容。
- 序列化:就是
Chain
对象调用save()
方法。 - 从磁盘中加载:就是使用
load_chain()
,去读取文件,得到Chain
对象。 - 独立组件序列化:
llm_chain.prompt.save()
、llm_chain.llm.save()
。 - 加载独立序列化组件:
config = {
"memory": None,
"verbose": True,
"prompt_path": "prompt.json",
"llm_path": "llm.json",
"output_key": "text",
"_type": "llm_chain",
}
import json
with open("llm_chain_separate.json", "w") as f:
json.dump(config, f, indent=2)
参考地址:文章来源:https://www.toymoban.com/news/detail-540793.html
Serialization文章来源地址https://www.toymoban.com/news/detail-540793.html
到了这里,关于【LangChain】序列化(Serialization)--持久化到磁盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!