用Flask和开源LLM——LLAMA3??创建的WhatsApp聊天机器人(WhatsApp),

2024/10/24 21:03:36

本文主要是介绍用Flask和开源LLM——LLAMA3??创建的WhatsApp聊天机器人(WhatsApp),,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用Flask和开源LLM(LLAMA3🤖)构建WhatsApp聊天机器人。我们将使用Flask、来自OpenAI的模型和来自AnyScale、Twilio和Ngrok的开源模型创建一个智能的WhatsApp聊天机器人。请按照我们的分步指南实现这些技术,并发现它们如何协同工作以构建一个互动且清晰的聊天体验,让技术变得易于使用且引人入胜。

我们将使用Ngrok和Flask作为我们的服务器,Twilio作为WhatsApp的代理,使用Anyscale API来调用开源模型生成答案,并用Flask应用来提供请求和响应的API。 🛠 #Ngrok #Flask #Twilio #AnyscaleAPI #开源 #API

但在我们深入讲解之前,让我们先看看它的实际演示。

展示一个简单的WhatsApp聊天助手原型,使用大模型来回答问题并提供活动建议

如果您有任何反馈想要提供给我们,请联系我。以下是一些关于我们如何制作这个原型的技术细节。

🛠️我们需要遵循的步骤:

1. 🆓 免费注册Anyscale上的开源LLM、Twilio和Ngrok账户

👉首先,访问AnyScale网站(https://www.anyscale.com/)并注册一个免费账户,这将为你提供50美元的信用;只需电子邮件即可;不需要信用卡或手机验证码。根据指引创建AnyScale的API密钥。记住你的API密钥,你将在代码中需要它。

接下来,访问Twilio网站,然后注册一个免费账号。

创建您的 Twilio 账户后,进入 Twilio 控制台。在侧边栏中找到并点击 发送 WhatsApp 消息。这样就可以让 Twilio 代表您通过 WhatsApp 平台发送和接收消息了。📱

最后一步,创建一个 Ngrok 账户。Ngrok 是一个免费工具,允许我们将公共 URL 连接到本地的应用程序。Ngrok 很有用,可以为本地应用程序提供公共访问。

在 Ngrok 上创建一个账号很重要,因为我们需要一个认证 token 才能开始连接。对吧?🌟

2. ⚙️ 项目环境的设置:最佳做法和重要配置

从以下命令开始,在终端中使用这些命令来创建一个虚拟环境:

# 要创建一个虚拟环境,请在终端中使用以下命令
  • conda create -p venv python=3.8 -y
  • source ./venv/bin/activate

一个虚拟环境帮助隔离项目依赖项,保证开发环境干净且有条理,整洁有序。

📋 明确一下项目的要求

列出您的项目所需的包,通过创建一个 requirements.txt 文件来。使用如下命令安装它们:

pip install -r requirements.txt
该命令用于安装requirements.txt文件中列出的所有依赖包。

这就能保持包版本的一致性,这样一来,协作环境的设置就简单多了。

🔐 Ngrok 验证

将您的 Ngrok 认证令牌(Token)添加到本地环境中。请运行以下命令:

ngrok authtoken YOUR_AUTH_TOKEN (这里,YOUR_AUTH_TOKEN 是你的认证令牌)

这条命令将您的本地 Ngrok 客户端程序绑定到您的 Ngrok 账号,使你可以将本地服务器链接到公共 URL 等功能。

保密事项及API密钥

为了安全,优先考虑将敏感信息(例如您的 AnuScale API 密钥)存储在专用环境文件(.env)中。在项目目录中创建一个名为 .env 的新文件,并添加以下行:

添加 your_secrets_key 和实际的 API 密钥。在配置 AnyScale (https://www.anyscale.com/) 账号时得到这些密钥。使用专用的环境文件不仅增强了安全性,还隔离了配置详情与代码库。

3. 使用开源模型和Twilio实现WhatsApp聊天bot的Flask应用

我们将探讨一个负责处理收到的 WhatsApp 消息、使用 AnyScale 的开源模型 Llama3 生成回复并通过 Twilio 发送回复的 Flask 应用程序的实现细节。

🚀 启动 Flask 并加载环境配置变量

    imp或者t openai  
    from openai import OpenAI  
    from flask import Flask, request  
    from twilio.twiml.messaging_response import MessagingResponse  
    from twilio.rest import Client  
    from dotenv import load_dotenv  
    import os  
    import sys  
加载环境变量配置。  
创建一个Flask应用实例。

代码导入了必要的模块,包括 Flask 用于构建 web 应用,Twilio 用于处理消息,以及开源大语言模型,以利用 AnyScale 提供的 llama3 模型。load_dotenv() 函数从 .env 文件中加载环境变量,例如 Anyscale API Key。

🔑 检索密钥和API令牌

anyscale_api_key = os.getenv("ANY_SCALE_API_KEY")  # 获取环境变量中的ANY_SCALE_API密钥
anyscale_base_url = os.getenv("ANY_SCALE_API_BASE")  # 获取环境变量中的ANY_SCALE_API基础URL
MODEL_NAME = 'meta-llama/Meta-Llama-3-8B-Instruct'  # 模型名称
account_sid = os.getenv("TWILIO_ACCOUNT_SID")  # 获取环境变量中的TWILIO账户SID
auth_token = os.getenv("TWILIO_AUTH_TOKEN")  # 获取环境变量中的TWILIO授权令牌

这一行代码从环境变量设置中获取AnyScale API密钥。把像API密钥这样的敏感信息存到环境变量里可以提高安全性。

💭 📬 定义接收消息的Flask路由,然后用AnyScale和LLAMA3生成回复

clientopenAi = OpenAI(  
    base_url="https://api.endpoints.anyscale.com/v1",  
    api_key=anyscale_api_key   # 初始化一个OpenAI客户端  
)
    # 处理接收到的消息  
    @app.route('/sms', methods=['POST'])  
    def handle_incoming_message():  

        try:  

            incoming_message = request.form['Body']  
            print(f"收到的消息:: {incoming_message}")  
            if incoming_message.lower() == 'restart':  
                print('正在重启应用程序...')  
                # 你可以用相应的命令来重启程序  
                os.execv(sys.executable, ['python'] + sys.argv)  
            else:  
                # 将新消息添加到历史记录中  
                history.append(f"用户查询: {incoming_message}")  

                # 如果历史记录的大小大于10,则移除最早的那条消息  
                if len(history) > 10:  
                    history.pop(0)  

                # 将历史记录传递给LLM模型,附带消息说明它们是之前的用户消息  
                prompt = incoming_message+"\n以下是你之前的对话:\n" + "\n".join(history) + "\n请在当前消息不够充分或需要更多信息时参考这些记录。\n"  
                print(prompt)  

                response = clientopenAi.chat.completions.create(  
                model=MODEL_NAME,  

                messages=[  
                    {"role": "system", "content": "你是一个乐于助人的助手。"},  
                    {"role": "user", "content": prompt}  
                ]  
                ).choices[0].message.content  
                print(response)  

                print("历史记录在追加前:",history)  
                # 将模型回复添加到历史记录中  
                history.append(f"{MODEL_NAME} 回复: {response}")  

                print("历史记录:\n",history)  
                # 如果历史记录的大小大于10,则移除最早的那条消息  
                if len(history) > 10:  
                    history.pop(0)
    # 创建一个Twilio MessagingResponse对象  
    twilio_response = MessagingResponse()  

    # 在Twilio MessagingResponse对象中添加响应  
    msg = twilio_response.message()  
    msg.body(response)  

    # 将响应返回给用户  
    print("twilio_response :", twilio_response)  

    # 返回Twilio MessagingResponse对象  
    return str(twilio_response)  
except:  
    ,  
    pass  
return 'OK', 200  

if __name__ == '__main__':  
    app.run(debug=True, host='0.0.0.0', port=5000)

这里定义了一个路径 /sms,Twilio 将使用此路径转发收到的消息。sms 函数提取用户的问题,使用开源模型 Llama3 生成回复,创建 Twilio 的响应并发送回去。

4. 🚀 运行 Flask 应程序

🏃‍♂️ 开始跑 Flask 应用

运行 python app.py

运行这个命令会启动我们的Flask应用,并让它在本地5000端口上运行。

🌐 设置 Ngrok 隧道

运行命令 ngrok http 5000 来启动隧道。

Ngrok 允许您将本地服务器连接到互联网。通过执行此命令,可以创建一个安全的隧道,将 Ngrok 的公共 URL 与您正在 5000 端口运行的 Flask 应用连接起来。

🌐 访问您的:公共网址

运行 Ngrok 后,我们将收到一个公共 URL(例如 https://abcd1234.ngrok.io)。我们将使用此 URL 作为 webhook 的地址,让像 Twilio 这样的服务将传入的消息内容转发到我们本地的 Flask 服务器。

⚙️ 配置 Twilio 使用 Ngrok URL

最后,复制这个公共URL,然后在末尾加上 /sms 路径,再粘贴到Twilio控制台中。将此URL输入到Twilio中,打开WhatsApp后,你就可以开始对话了。

5. 📱💬 发起 WhatsApp 对话

一旦您完成了与Twilio的集成并完成了配置,您就可以用这个号码在WhatsApp上开始聊天了。

你一发送消息,你就能无缝地与你的 Flask 应用程序进行交互。Twilio 会将你的消息转发到本地服务器,在那里由 AnyScale 驱动的 chatbot 会生成回复。

💭 小贴士 💬

后台运行的应用程序:

nohup python app.py 使用 nohup 命令可以让 Python 应用程序在后台运行,即使关闭终端也不会停止执行。

执行命令 nohup ngrok http 5000

找到那个进程然后把它终止掉

运行 lsof -i:5000 命令

or

运行 `ps aux | grep 'python app.py'`,这将列出所有包含 'python app.py' 的进程。

复制运行中的进程的PID,然后杀死该进程。

如果你想终止端口5000上的进程,你可以使用这个命令:kill -9 :5000

GitHub 项目:mayankchugh-learning/WhatsApp-Bot-using-GenAI - 该项目使用了 Flask、Twilio 和 OpenAI 等库来创建一个基于 GenAI 的 WhatsApp 机器人。该项目包括 Flask==2.1.1、twilio==6.50.1、openai==0.28.0 和 python-dotenv 等库的版本信息。详情请查看 GitHub 页面

点击这里查看:https://www.linkedin.com/in/mchugh77

mayankchugh-learning (Mayank Chugh)AI & ML 爱好者(爱好者)huggingface.co

🎉 最后,结束语,

在这篇教程中,我们演示了如何使用Flask、开源模型llama3(由AnyScale提供)、Twilio和Ngrok构建WhatsApp聊天机器人的步骤。通过这些步骤,我们创建了一个能实时响应用户查询的动态智能对话机器人。通过这些步骤,您已经成功构建了一个功能性的WhatsApp聊天机器人,并了解了如何集成多种技术来创建一个智能且响应迅速的聊天系统。🚀🤖💬



这篇关于用Flask和开源LLM——LLAMA3??创建的WhatsApp聊天机器人(WhatsApp),的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程