提升聊天机器人:无用户反馈的高效评估策略

86 阅读3分钟

提升聊天机器人:无用户反馈的高效评估策略

近年来,聊天机器人已成为大规模语言模型(LLM)的常见应用界面。然而,确保聊天机器人质量的关键在于持续的开发和优化。传统的用户反馈机制(如点赞或点踩)往往不足,用户也很少主动提供。本文将探讨一种无需显式用户反馈的方法,通过解析用户的后续响应来推断聊天机器人的回复质量。

聊天机器人评估方法

1. 反馈稀缺问题

在许多案例中,仅有大约0.04%的查询获得了显式反馈,而约70%的查询是对先前问题的后续。在大多数情况下,用户的后续查询可以揭示其对之前AI回复的满意度或不满程度。

2. 自定义评估器的实现

为了解决反馈稀缺的问题,我们可以使用LangSmith平台。该平台允许使用自定义的RunEvaluator,并通过EvaluatorCallbackHandler在不干扰聊天机器人运行的情况下启动评估。评估器利用LLM(如gpt-3.5-turbo)生成合理的反馈分数并附带说明。

以下是如何在LangChain对象上调用自定义评估器的代码:

my_chain.with_config(
    callbacks=[
        EvaluatorCallbackHandler(
            evaluators=[
                ResponseEffectivenessEvaluator(evaluate_response_effectiveness)
            ]
        )
    ],
)

代码示例

部署与运行

如下代码展示了如何使用LangServe配置服务器并流式获取聊天机器人回应:

from functools import partial
from typing import Optional, 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://127.0.0.1:8031/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)])

常见问题和解决方案

  1. 响应不准确:应考虑使用更具上下文理解能力的模型,并增加训练数据的多样性。
  2. 评分不合理:修改评估器的提示词,以更好地反映应用的目标和期望行为。

总结和进一步学习资源

通过本文介绍的方法,开发者可以在没有用户显式反馈的情况下有效评估聊天机器人性能,并持续改进其质量。对于深入了解LangSmith平台及其功能,可以参考官方文档

参考资料

  • LangServe与LangSmith简介和文档
  • OpenAI GPT-3.5-turbo API文档
  • 自定义评估器实现指南

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

---END---