自动化与同事的对话:我使用ChatGPT创建Discord机器人的经历

释放AI的力量:使用ChatGPT和Discord构建对话机器人

ChatGPT中文站

介绍:

自从我看了《硅谷》一集,其中一个角色创造了一个个人替代来处理烦人的人,我就对这个想法着迷了。最近,我有机会通过使用ChatGPT创造一个机器人来处理我在职业环境中的对话。在这篇Medium文章中,我将分享我的经历以及我用来构建这个机器人的步骤。

让我们开始吧:

首先,为什么需要一个 Discord 机器人?

ChatGPT中文站

我选择使用Discord作为我的机器人平台,因为这里是我大部分交流的场所,特别是在我的工作中。无论是与朋友、老板还是同事聊天,Discord都是我们的首选通讯工具。

准备数据:

ChatGPT中文站

为了确保我的机器人跟随最新与我日常工作和我们正在进行的承诺相关的信息,我需要一种融合我们的Discord聊天历史的方式。虽然Discord提供了直接请求该信息的选项,但我选择了一种不同的方法来节省时间。

我跟随教程(https://www.youtube.com/watch?v=ovLFCM10m_Q) 提取了我与老板的聊天记录并得到了一个CSV文件。为了清洗数据,我创建了一个脚本,删除了不必要的列,用ChatGPT更容易理解的名称替换了Discord的用户名,仅保留了日期时间、作者和消息内容。

清理数据.py

ChatGPT中文站

数据库集成:

有了清理和处理好的数据,我将 CSV 文件转换为适合插入我的向量数据库的 Langchain 文件。为了托管我的数据库,我使用了 Pinecone 服务,它提供了一个免费的层,足以满足我项目开发的需求。

首先,我必须得到正确的信息格式。

进程信息.py

ChatGPT中文站

然后我填写数据库。

加载数据库.py

ChatGPT中文站

完成以上步骤后,我们将结束数据处理过程。

Discord机器人应用

无需翻译,因为它是文件名。

在此我将初始化应用程序中使用的不同服务,并创建接收消息的监听器。

ChatGPT中文站

消息传递服务.py

这个类负责处理传入的消息并确保自然对话的流畅性。为了实现这一点,该服务实现了信息队列系统,这可以防止需要单独回复每个独立的消息。

让我用一个例子来解释这个概念:假设有人发送以下行:

你好

你好吗?

尽管这些是独立的消息,但在对话的语境中它们代表着单个的信息。为了抓住这个语境,一旦第一条消息到达,便会触发一个倒计时器来发起回应。如果在这个倒计时期间有其他消息到达,它们会添加到同一队列中,视为同一条消息的一部分。然而,如果有新的消息到达,倒计时器将重新启动以确保及时回应。

这种方法可以提供更自然和连贯的对话体验,机器人可以整体回应一系列相关的讯息,而不是逐个回应。

ChatGPT中文站

AssistantService.py

这个类在管理与LLM(大语言模型)的连接和利用向量数据库服务方面起着至关重要的作用。它的主要功能是处理用户消息并提供由人工智能生成的响应。

为了生成回应,我选择了ChatGPT 3.5 Turbo,它提供了强大的语言处理能力。此外,我使用了text-embedding-ada-002-v2模型来访问向量数据库服务。需要注意的是,每个请求都会产生相关成本,这应该被考虑到。

在开发过程中,我探索使用本地的LLM来降低成本。然而,作为一名西班牙语使用者,我在使用ChatGPT训练的模型(如llama、gpt4all等)时遇到了挑战。

然而,正如你所注意到的那样,我使用了Langchain框架来处理LLM,因此替换所选的LLM可能并不是很困难,尽管这可能涉及提示方面的更改。

2023-10-20 16:51:36 AI中文站翻译自原文