使用Llama和ChatGPT构建一个多聊天后端的微服务

2023年09月08日 由 neo 发表 359 0

微服务架构促进创建灵活、独立、边界明确的服务。这种可扩展的方法使开发者能够单独维护和更新服务,而不影响整个应用程序。然而,要充分发挥微服务架构的潜力,特别是对于AI驱动的聊天应用程序,需要与最新的大型语言模型(LLMs)如Meta Llama V2和OpenAI的ChatGPT以及其他根据每个应用程序用例进行微调的发布进行强大的集成,以提供多模型方法,实现多样化的解决方案。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_8

LLMs是基于多样化数据训练而生成类似人类文本的大规模模型。通过从互联网上学习数十亿个单词,LLMs理解上下文并在各个领域生成调整过的内容。然而,将各种LLMs集成到一个应用程序中通常会带来挑战,因为每个模型都需要独特的接口、访问端点和特定的有效载荷。因此,拥有一个能够处理各种模型的单一集成服务可以改善架构设计并增强独立服务的规模。

本教程将向你介绍如何使用Node.js和Express在微服务架构中实现IntelliNode对ChatGPT和LLaMA V2的集成。


聊天机器人集成选项

以下是IntelliNode提供的一些聊天集成选项:

  1. LLaMA V2:你可以通过Replicate的API进行简单的集成,或者通过你的AWS SageMaker主机进行额外的控制。 LLaMA V2是一个强大的开源大型语言模型(LLM),它已经在多达70B个参数的基础上进行了预训练和微调。它在各个领域的复杂推理任务中表现出色,包括编程和创意写作等专业领域。它的训练方法涉及自监督数据和通过强化学习与人类反馈(RLHF)与人类偏好的对齐。LLaMA V2超越了现有的开源模型,在可用性和安全性方面与ChatGPT和BARD等闭源模型相媲美。
  2. ChatGPT:只需提供你的OpenAI API密钥,IntelliNode模块就可以在一个简单的聊天界面中与模型集成。你可以通过GPT 3.5或GPT 4模型访问ChatGPT。这些模型已经在大量数据上进行了训练和微调,以提供高度上下文相关和准确的回复。


逐步集成

让我们首先初始化一个新的 Node.js 项目。打开终端,导航到项目目录,然后运行以下命令:

npm init -y

此命令将为你的应用程序创建一个新的“package.json”文件。

接下来,安装Express.js,它将用于处理HTTP请求和响应以及用于LLM模型连接的Intellinode:

npm install express

npm install intellinode

安装完成后,在项目的根目录中创建一个名为“ app.js ”的新文件。然后,在“app.js”中添加快速初始化代码。

const express = require('express');
const app = express();
app.use(express.json());

// Define your routes here

app.listen(3000, () => {
console.log('Server is running on port 3000');
});


使用Replicate的API进行Llama V2集成

Replicate通过API密钥提供了与Llama V2的快速集成路径,IntelliNode提供了聊天机器人接口,将您的业务逻辑与Replicate后端解耦,允许您在不同的聊天模型之间切换。

让我们首先与Replica后端托管的Llama集成:

const { Chatbot, LLamaReplicateInput, SupportedChatModels } = require('intellinode');

app.get('/llama/replica', async (req, res) => {
const chatbot = new Chatbot(process.env.REPLICATE_API_KEY, SupportedChatModels.REPLICATE);

const system = 'You are a helpful assistant.';
const input = new LLamaReplicateInput(system);
input.addUserMessage(req.query.message);

const response = await chatbot.chat(input);
res.json({ response });
});

从replicate.com获取试用密钥以激活集成。


使用AWS SageMaker集成Llama V2

现在,让我们介绍一下通过AWS SageMaker进行的Llama V2集成,提供隐私和额外的控制层。

集成需要从你的AWS帐户生成API端点,首先我们将在微服务应用程序中设置集成代码:

// When copying the code to the same file, ensure removing the repeated imports
const { Chatbot, LLamaSageInput, SupportedChatModels } = require('intellinode');

app.get('/llama/aws', async (req, res) => {
const chatbot = new Chatbot(null, SupportedChatModels.SAGEMAKER, {url: process.env.AWS_API_URL});

const system = 'You are a helpful assistant.';
const input = new LLamaSageInput(system);
input.addUserMessage(req.query.message);

const response = await chatbot.chat(input);
res.json({ response });
});

 以下步骤是在你的账户中创建一个Llama端点,一旦你设置好了API网关,就可以复制URL来运行‘/llama/aws’服务。

在你的AWS账户中设置Llama V2端点的步骤如下:

1- SageMaker服务:从你的AWS账户中选择SageMaker服务,然后点击域名。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_5


2- 创建一个SageMaker域名:首先在你的AWS SageMaker上创建一个新的域名。这一步建立了一个用于你的SageMaker操作的受控空间。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_9


3- 部署Llama模型:利用SageMaker JumpStart来部署你计划集成的Llama模型。建议从2B模型开始,因为运行70B模型的月费用较高。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_1


4- 复制端点名称:一旦你部署了一个模型,一定要记下端点名称,这对于后续步骤非常重要。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_6


5- 创建Lambda函数:AWS Lambda允许在不管理服务器的情况下运行后端代码。创建一个Node.js lambda函数来用于集成部署的模型。


6- 设置环境变量:在你的lambda中创建一个名为llama_endpoint的环境变量,其值为SageMaker端点。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_3


7- Intellinode Lambda导入:你需要导入准备好的Lambda zip文件,该文件建立了与你的SageMaker Llama部署的连接。这个导出是一个zip文件,可以在lambda_llama_sagemaker目录中找到。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_4


8- API网关配置:在Lambda函数页面上点击“添加触发器”选项,并从可用触发器列表中选择“API网关”。

albarqawi_building_microservice_multichat_backends_llama_chatgpt_7

albarqawi_building_microservice_multichat_backends_llama_chatgpt_10


9- Lambda函数设置:更新lambda角色以授予访问SageMaker端点所需的权限。另外,函数的超时时间应该延长以适应处理时间。在你的Lambda函数的“配置”选项卡中进行这些调整。

点击角色名称以更新权限,并提供访问sagemaker的权限:

albarqawi_building_microservice_multichat_backends_llama_chatgpt_2


ChatGPT集成

最后,我们将说明将Openai ChatGPT作为微服务架构中的另一个选项集成的步骤:

// When copying the code to the same file, ensure removing the repeated imports
const { Chatbot, ChatGPTInput, ChatGPTMessage } = require('intellinode');

app.get('/chatgpt', async (req, res) => {
const chatbot = new Chatbot(process.env.OPENAI_API_KEY, 'openai');

const system = 'You are a helpful assistant.';
const input = new ChatGPTInput(system);
input.addUserMessage(req.query.message);

const responses = await chatbot.chat(input);
res.json({ responses });
});

从platform.openai.com获取试用密钥。


执行实验

首先在终端中导出 API 密钥,如下所示:

export REPLICATE_API_KEY=<your-replica-key>
export OPENAI_API_KEY=<your-openai-key>
# optional - if you deployed Llama sagemaker ednpoint
export AWS_API_URL=<sagemaker-url>

然后运行节点应用程序:

node app.js

在浏览器中输入以下网址来测试chatGPT服务:

http://localhost:3000/chatgpt?message=hello


我们构建了一个由大型语言模型(如Llama V2和OpenAI的ChatGPT)提供能力的微服务。这种集成为利用先进的AI驱动无限的业务场景打开了大门。

通过将你的机器学习需求转化为解耦的微服务,你的应用程序可以获得灵活性和可扩展性的好处。你不需要将你的操作配置为适应单一模型的限制,语言模型功能现在可以单独管理和开发;这有助于提高效率和简化故障排除和升级管理。

文章来源:https://www.kdnuggets.com/building-microservice-for-multichat-backends-using-llama-and-chatgpt?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=building-microservice-for-multi-chat-backends-using-llama-and-chatgpt
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消