首页 › 论坛 › 置顶 › 使用Python、OpenAI和Langchain对客户服务聊天进行分类与标注
-
作者帖子
-
2025-03-03 17:00 #13402Q QPY课程团队管理员
具有结构化输出的LLM使得文本分类和标记变得极其简单。今天,我们将编写一个脚本来实现这一点——对客户服务聊天进行分类。
我们将从聊天中提取并标记关键细节,包括用户的姓名、情感、语言以及他们与客户服务代表的对话主题。
在进入代码之前,让我们回顾一下工具和要求:
- 本地安装Python
- OpenAI API密钥
- 一个包含代表与客户之间对话的文本文件
创建项目目录
现在,让我们创建项目目录并使用
cd
命令进入该目录。mkdir text_classification && cd text_classification
让我们确保准备好工具和项目。因此,让我们在根目录中创建项目的入口文件
touch main.py
现在,创建一个虚拟环境以保持我们的依赖项被隔离,这样它们就不会干扰系统范围的Python包,然后激活它。
python -m venv .venv source .venv/bin/activate
安装依赖项
在我们的虚拟环境设置好后,接下来安装我们的依赖项。我将使用pip,因此我将在我的项目终端中运行以下命令:
pydantic
,一个广泛使用的Python验证库。它将允许我们声明我们期望从LLM获得的结构化输出响应的模式。langchain
是一个框架和包,使得在 Python 中使用 LLM(大语言模型)变得更加简单。langchain-openai
是一个 Langchain 包,提供与 OpenAI 模型的无缝集成。
我使用
pip
来安装这些依赖项,因此我将在我的项目终端运行以下命令:pip install pydantic langchain langchain-openai
环境变量与聊天文本文件
太好了!现在我们已经安装了依赖项,让我们创建一个 .env 文件来存储我们的 OpenAI API 密钥。
OPENAI_API_KEY=sk….
在我们开始动手之前,别忘了聊天数据!将一段客服代表与客户之间的对话从WhatsApp导出到一个文本文件中。
你可以使用我的示例聊天文件,或者使用你自己的文件。
我会把这个文本文件放在项目的根目录中,以便稍后将该文件的内容传递给LLM。
开始使用
现在一切都已设置好,是时候打开
main.py
并开始编码了。首先,我们需要确保 OpenAI API 密钥已正确设置——否则我们将无法获得 LLM 的响应。
import os if not os.getenv("OPENAI_API_KEY"): raise ValueError("OPENAI_API_KEY is not set")
接下来,让我们在终端中运行以下命令:python main.py
如果没有出现错误,你就可以继续了。但如果出现错误,请尝试关闭并重新打开你的终端。新的终端将加载你在
.env
文件中的变量。接下来,让我们导入这个脚本所需的其他模块
from pydantic import BaseModel, Field
from langchain.chat_models import init_chat_model
分类架构
现在让我们来看一下这个分类和标记脚本的核心内容。
我们将使用 Pydantic 来定义一个 Classification 类,这个类将作为我们稍后传递给 LLM 的架构,以便它知道从聊天中提取和标记哪些信息。
class Classification(BaseModel): name: str = Field(description=“The name of the user”) sentiment: str = Field( description="The sentiment of the user", enum=["positive", "negative", "neutral"], ) language: str = Field( description="The language of the user", enum=["spanish", "english"], ) issue: str = Field( description="The issue of the user", enum=["technical", "billing", "account", "other"], )
如您所见,模式的
name
字段仅具有一个description
属性,用于指定获取客户的名称。然而,其他字段也包含一个enum
。在某些字段中添加 enum 的原因是确保模型仅在预定义类别内进行分类,从而减少歧义并使数据更易于存储和分析。
结构化输出
现在,让我们创建一个聊天模型。我们将使用
with_structured_output
来传递我们的Classification
模式。在底层,Langchain 的 with_structured_output 方法确保 LLM 启用了结构化输出。
llm = init_chat_model( "gpt-4o-mini", model_provider="openai").with_structured_output(Classification)
接下来,我们将保存来自 `chat.txt` 的聊天内容,并为 LLM 创建一个完整的提示。
with open("chat.txt", "r") as f: chat_text = f.read() prompt = """Extract the desired information from the following chat. Only extract the properties mentioned in the 'Classification' function. Conversation:n"""
最后,让我们使用我们的提示和聊天文本内容调用LLM,并打印结果
response = llm.invoke(prompt + chat_text) print(response)
在我们的终端中,运行脚本
> python main.py name='Andres Urdaneta' sentiment='neutral' language='spanish' issue='other'
总结与下一步
这就是我们所需的——一个使用Python、OpenAI API和Langchain对客户服务聊天进行分类和标记的完整脚本!
只需几行代码,我们就将一段杂乱的对话结构化为清晰、可操作的数据。
这个设置可以作为自动化客户洞察、构建更智能的聊天机器人,或甚至将AI驱动的分析集成到您的工作流程中的基础。
尝试调整分类方案,添加更多类别,或者将多个提示串联在一起,尽情享受吧!
如果您有任何问题,欢迎留言
-
作者帖子
- 哎呀,回复话题必需登录。