使用 AI 制作我自己的智能助手应用程序

使用 Python 和 GPT-3 制作的智能助手应用程序——智能助手正变得越来越流行,出现在 Apple 的 Siri、亚马逊的 Alexa 和 Google Home 等产品中。在本文中,我用 Python 制作了自己的智能助手。简介 智能助手允许您通过语音交互快速从网络收集信息。在做一个智能助手时,我想要……

Applied Machine Learning

使用 AI 制作我自己的智能助手 App

使用 Python 和 GPT-3 制作的智能助手应用

智能助手越来越受欢迎,苹果的 Siri、亚马逊的 Alexa 和 Google Home 等产品出现。在本文中,我用 Python 制作了自己的智能助手。

Introduction

智能助手允许您通过语音交互快速从网络收集信息。在制作智能助手时,我想制作一个带有图形用户界面的 Web 应用程序,我可以在其中使用我的声音与智能助手进行交互。在这篇文章中,我详细介绍了我是如何制作这个应用程序的,我使用了哪些工具以及我应用的方法。用于这个小项目的许多工具可以用于许多其他项目。

Method

为了做智能助手,我使用了 OpenAI 的 GPT-3。 GPT-3 是由 OpenAI 训练的海量语言模型。它经过预训练,能够很好地推广到各种用例。[0]

我的目标是制作一个应用程序,通过它我可以使用我的声音与 GPT-3 进行交互。

该应用程序的整体流程图如下所示:

为了将我的声音传递给 OpenAI,我首先需要将我的语音传递给文本。所以首先我使用 Streamlit 应用程序录制我的声音。然后我对录音进行编码并将其传递给 AssemblyAI 进行转录。我收到转录并将其传递给 OpenAI。然后我可以接受响应并将其显示在应用程序上。[0]

为了通过应用程序与这些服务进行通信,我使用了它们的 API。

什么是 API?

应用程序接口 (API) 是软件程序相互通信的方式。为了让它们进行交互,API 提供了一组协议和工具来帮助交互成功。

两种服务都有 Python 中的 API,因此我可以轻松地将这两种服务集成到应用程序中。 API 允许我访问由公司开发和托管的服务、工具和 AI 模型。我可以向他们发送我希望他们的模型为我处理什么的请求,然后我会收到他们预训练模型的输出的响应。

您如何使用 API?

为了实时转录音频,我使用了 AssemblyAI Websocket API。与 HTTPS 连接不同,Websocket 连接允许双向发送和接收来自 API 服务器的请求。这样我就可以实时转录数据。

为了建立 WebSocket 连接,我在 Python 中使用了异步库“asyncio”和“websockets”库。以下是代码的外观:

async with websockets.connect(
   self.URL,
   extra_headers=(("Authorization", assemblyAI_key),),
   ping_interval=5,
   ping_timeout=20
) as _ws:
   r = await asyncio.sleep(0.1)
   session_begins = await _ws.recv()

在上面的代码中,我连接到 WebSocket URL 并尝试接收连接确认(见上面的 session_begins)。

连接后,我可以定义发送和接收函数,这将允许我以我想要的方式与 API 通信。

  async def send():
         while st.session_state["init"] == True:
             data = self.stream.read(self.FRAMES_PER_BUFFER, exception_on_overflow = False)
             data = base64.b64encode(data).decode("utf-8")
             json_data = json.dumps({"audio_data":str(data)})
             r = await _ws.send(json_data)
         return True
   
  async def receive():

         while st.session_state["init"] == True:
              result_str = await _ws.recv()
              if (json.loads(result_str)["message_type"] == "FinalTranscript") and (json.loads(result_str)['text'] != ""):

                  promt = json.loads(result_str)["text"]
                  response = openai.Completion.create(
                     engine = "text-davinci-002",
                     prompt = promt,
                     n=5,
                     temperature = 0
                  )
                  
                  response_test = response.choices[0].text

send_result, receive_result = await asyncio.gather(send(), receive())

在发送函数中,我首先收集我的音频,将其编码为 utf-8,然后使用 WebSocket 发送。在处理音频文件或使用 API 时,utf-8 编码是相当标准的。

在接收函数中,我首先从音频文件中接收转录文本,然后将该文本发送到 OpenAI 并接收来自 GPT-3 的响应。

使用 Streamlit 构建应用程序

Streamlit 可用于快速构建 Web 应用程序。该应用程序的目标是提供图形用户界面 (GUI),以便用户无需使用任何代码即可与智能助手无缝交互。

我现在将详细介绍我用来制作应用程序的代码结构。我总是将我的 Streamlit 应用程序封装在一个类中。这是整个代码结构的样子:

class app:
   def __init__(self):
      ...
      self.pipeline()

   def pipeline(self):
         self.initialize_tool()
         self.buttons()
         self.load_past()
         asyncio.run(self.send_receive())

   def initialize_tool(self):
      st.set_page_config(page_title="Interactive AI", page_icon="🤖")
      st.markdown('

SMART ASSISTANT TOOL

', unsafe_allow_html=True) ... def clear_chat(self): ... def buttons(self): ... async def send_receive(self): ... async def send(): ... async def receive(): ... if __name__ == '__main__': app()

该应用程序包含两个按钮。第一个是记录按钮,第二个是清除聊天按钮。

录制按钮开始录制您的声音,然后转录文本并将其发送到 OpenAI。然后,响应会在应用程序上显示为聊天对话。

该应用程序会记录对话,聊天存储在 .txt 文件中。当按下清除聊天按钮时,.txt 文件将被清除。

我无法在此处显示的应用程序的最后一个补充是文本到语音。当机器人响应时,它会读出句子。为此,我使用了 pyttsx3 库。

与工具交互

上面是应用程序外观的屏幕截图。顶部是应用程序的两个按钮。要与智能助手互动,请按录音并说出您的信息。您的消息的转录显示在左侧,GPT-3 的响应显示在右侧。

这位智能助手显然名叫莎拉,今年 26 岁。该应用程序似乎运行良好,它可以检测到我的声音并以全面的方式显示。智能助手可以处理更复杂的查询:

智能助手使用基本几何图形或首字母缩写词没有问题。该机器人还可以根据上下文了解现代公司:

Conclusions

在本文中,我将介绍如何制作智能助手应用程序。该应用程序能够记录你的声音,转录它,将转录传递给 OpenAI 的 GPT-3,然后读出你的响应。我将介绍应用程序的管道是什么样子以及应用程序是如何在 streamlit 上编程的。最后,我回顾了一些我与智能助手的交互示例。总的来说,我认为该应用程序很有用并且运行良好。

Support me

希望对你有帮助,喜欢的话可以关注我哦![0]

您还可以使用我的推荐链接成为中型会员,访问我的所有文章等等:https://diegounzuetaruedas.medium.com/membership[0][1]

您可能会喜欢的其他文章

使用 AI 分析语音[0]

人工智能应用于口罩检测[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月11日
下一篇 2022年5月11日

相关推荐