【Langchain大语言模型开发教程】评估

🔗 LangChain for LLM Application Development - DeepLearning.AI

学习目标

1、Example generation

2、Manual evaluation and debug

3、LLM-assisted evaluation

4、LangChain evaluation platform

1、引包、加载环境变量;

python 复制代码
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
from langchain.document_loaders import CSVLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.vectorstores import DocArrayInMemorySearch

2、加载数据;

python 复制代码
file = 'OutdoorClothingCatalog_1000.csv'
loader = CSVLoader(file_path=file, encoding='utf-8')
data = loader.load()

3、创建向量数据库(内存警告⚠);

python 复制代码
model_name = "bge-large-en-v1.5"
embeddings = HuggingFaceEmbeddings(
    model_name=model_name,
)

db = DocArrayInMemorySearch.from_documents(data, embeddings)
retriever = db.as_retriever()

4、初始化一个LLM并创建一个RetrievalQ链;

python 复制代码
llm = ChatOpenAI(api_key=os.environ.get('ZHIPUAI_API_KEY'),
                         base_url=os.environ.get('ZHIPUAI_API_URL'),
                         model="glm-4",
                         temperature=0.98)

qa = RetrievalQA.from_chain_type(
    llm=llm, 
    chain_type="stuff", 
    retriever=retriever,
    verbose=True,
    chain_type_kwargs = {
        "document_separator": "<<<<>>>>>"
    }
)

Example generation

python 复制代码
from langchain.evaluation.qa import QAGenerateChain

example_gen_chain = QAGenerateChain.from_llm(llm)

new_examples = example_gen_chain.apply_and_parse(
    [{"doc": t} for t in data[:5]]
)

这里我们打印一下这个生成的example,发现是一个列表长下面这个样子;

python 复制代码
[{'qa_pairs': {'query': "What is the unique feature of the innersole in the Women's Campside Oxfords?", 'answer': 'The innersole has a vintage hunt, fish, and camping motif.'}}, {'qa_pairs': {'query': 'What is the name of the dog mat that is ruggedly constructed from recycled plastic materials, helping to keep dirt and water off the floors and plastic out of landfills?', 'answer': 'The name of the dog mat is Recycled Waterhog Dog Mat, Chevron Weave.'}}, {'qa_pairs': {'query': 'What is the name of the product described in the document that is suitable for Infant and Toddler Girls?', 'answer': "The product is called 'Infant and Toddler Girls' Coastal Chill Swimsuit, Two-Piece'."}}, {'qa_pairs': {'query': 'What is the primary material used in the construction of the Refresh Swimwear V-Neck Tankini, and what percentage of it is recycled?', 'answer': 'The primary material is nylon, with 82% of it being recycled nylon.'}}, {'qa_pairs': {'query': 'What is the material used for the EcoFlex 3L Storm Pants, according to the document?', 'answer': 'The EcoFlex 3L Storm Pants are made of 100% nylon, exclusive of trim.'}}]

所以这里我们需要进行一步提取;

python 复制代码
for example in new_examples:
    examples.append(example["qa_pairs"])

print(examples)

qa.invoke(examples[0]["query"])

Manual Evaluation

python 复制代码
import langchain
langchain.debug = True #开始debug模式,查看chain中的详细步骤

我们再次执行来查看chain中的细节;

LLM-assisted evaluation

那我们是不是可以使用语言模型来评估呢;

python 复制代码
langchain.debug = False #关闭debug模式

from langchain.evaluation.qa import QAEvalChain

让大语言模型来为我们每个example来生成答案;

python 复制代码
predictions = qa.apply(examples)

我们初始化一个评估链;

python 复制代码
eval_chain = QAEvalChain.from_llm(llm)

让大语言模型对实际答案和预测答案进行对比并给出一个评分;

python 复制代码
graded_outputs = eval_chain.evaluate(examples, predictions)

最后,我们可以打印一下看看结果;

python 复制代码
for i, eg in enumerate(examples):
    print(f"Example {i}:")
    print("Question: " + predictions[i]['query'])
    print("Real Answer: " + predictions[i]['answer'])
    print("Predicted Answer: " + predictions[i]['result'])
    print("Predicted Grade: " + graded_outputs[i]['results'])
    print()
相关推荐
KKKlucifer1 天前
生成式 AI 冲击下,网络安全如何破局?
网络·人工智能·web安全
ARM+FPGA+AI工业主板定制专家1 天前
基于JETSON ORIN/RK3588+AI相机:机器人-多路视觉边缘计算方案
人工智能·数码相机·机器人
文火冰糖的硅基工坊1 天前
[创业之路-691]:历史与现实的镜鉴:从三国纷争到华为铁三角的系统性启示
人工智能·科技·华为·重构·架构·创业
lljss20201 天前
5. 神经网络的学习
人工智能·神经网络·学习
jie*1 天前
小杰深度学习(fourteen)——视觉-经典神经网络——ResNet
人工智能·python·深度学习·神经网络·机器学习·tensorflow·lstm
闲看云起1 天前
论文阅读《LIMA:Less Is More for Alignment》
论文阅读·人工智能·语言模型·自然语言处理
jie*1 天前
小杰深度学习(sixteen)——视觉-经典神经网络——MobileNetV2
人工智能·python·深度学习·神经网络·tensorflow·numpy·matplotlib
TGITCIC1 天前
有趣的机器学习-利用神经网络来模拟“古龙”写作风格的输出器
人工智能·深度学习·神经网络·ai大模型·模型训练·训练模型·手搓模型
whltaoin1 天前
AI 超级智能体全栈项目阶段五:RAG 四大流程详解、最佳实践与调优(基于 Spring AI 实现)
java·人工智能·spring·rag·springai
Piink1 天前
网络模型训练完整代码
人工智能·深度学习·机器学习