在上一篇文章中,我们介绍了大模型开发框架LangChain的基础功能,包括查数据。今天,我们要介绍的是给大模型喂数据,也就是给大模型增加数据源。

通过前端的输出给大模型喂数据

直接来看代码示例吧:

1
2
3
4
from langchain.prompts import PromptTemplate
template = PromptTemplate.from_template("介绍一下{object}")
print(template.input_variables)
print(template.format(object='马斯克'))

下边是kimi对这段代码的解释

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from langchain.prompts import PromptTemplate
#这行代码从 langchain 库的 prompts 模块导入了 PromptTemplate 类。
#PromptTemplate 是一个用于创建和管理提示词模板的类。

template = PromptTemplate.from_template("介绍一下{object}")
#这行代码创建了一个 PromptTemplate 类的实例,使用 from_template 方法和传入的字符串 
#"介绍一下{object}" 作为模板。
#在这个模板中,{object} 是一个占位符,用于之后替换成具体的值

print(template.input_variables)
#这行代码打印出模板中的输入变量。在这个例子中,模板只有一个输入变量,即 object。
#所以,打印的结果应该是一个包含 object 的列表

print(template.format(object='马斯克'))
#这行代码使用 format 方法将模板中的占位符 {object} 替换为 '马斯克'。
#object 参数在这里是 PromptTemplate 类的一个命名参数,它对应于模板中的 {object} 占位符。
#执行这行代码后,会打印出格式化后的字符串,即 "介绍一下马斯克"。

代码中的占位符就是要输入的内容,这样我们就可以通过前端的输出给大模型喂数据了。

加载txt类型的数据

直接来看代码示例吧:

1
2
3
4
from langchain.document_loaders import TextLoader
loader = TextLoader("./txtLoad.txt")
docs = loader.load()
print(docs[0].page_content[:100])

加载csv类型的数据

直接来看代码示例吧:

1
2
3
4
from langchain.document_loaders.csv_loader import CSVLoader
loader = CSVLoader(file_path='./sys_config.csv')
data = loader.load()
print(data)

加载doc/pdf类型的数据

直接来看代码示例吧:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from langchain.document_loaders import UnstructuredWordDocumentLoader,
     PyPDFium2Loader,DirectoryLoader,PyPDFLoader,TextLoader
import os

def load_pdf(directory_path):
    data = []
    for filename in os.listdir(directory_path):
        if filename.endswith(".pdf"):
            print(filename)
            # print the file name
            loader = PyPDFium2Loader(f'{directory_path}/{filename}')
            print(loader)
            data.append(loader.load())
    return data

def load_word(directory_path):
    data = []
    for filename in os.listdir(directory_path):
        # check if the file is a doc or docx file
        # 检查所有doc以及docx后缀的文件
        if filename.endswith(".doc") or filename.endswith(".docx"):
            # langchain自带功能,加载word文档
            loader = UnstructuredWordDocumentLoader(f'{directory_path}/{filename}')
            data.append(loader.load())

    return data
    
print(load_word("/Users/liuzhifeng/miniconda3/envs/ai_all_stack"))    

其实加载文档的方法有很多,就是用的不同的包,都可以达到加载文档的目的。今天内容也比较容易吧,下一节 我将介绍怎么把这些数据保存起来。