使用LLama和ChatGPT为多聊天后端构建微服务

微服务架构便于创建边界明确定义的灵活独立服务。这种可扩展的方法使开发人员能够在不影响整个应用程序的情况下单独维护和完善服务。然而,若要充分发挥微服务架构的潜力、特别是针对基于人工智能的聊天应用程序,需要与最新的大语言模型(LLM,比如Meta LLama V2和OpenAI的ChatGPT)以及基于各种应用程序用例发布的其他经过微调的LLM进行强大的集成,从而为多样化的解决方案提供多模型方法。
LLM是大规模模型,可以基于不同数据训练生成类似人类的文本。通过从互联网上数十亿的单词中学习,LLM了解上下文并生成不同领域的调整后内容。然而,由于需要独特的接口、访问端点和每个模型的特定载荷,将各种LLM集成到单个应用程序中常常带来挑战。因此,拥有可以处理各种模型的单一集成服务就能改进架构设计,并加大独立服务的规模。
本教程将介绍使用Node.js和Express在微服务架构中针对LLama V2和ChatGPT的IntelliNode集成。
聊天机器人集成选项
以下是IntelliNode提供的几个聊天集成选项:
1. LLama V2:您可以通过Replicate的API集成LLama V2模型,以实现简单的流程,也可以通过AWS SageMaker主机集成LLama V2模型,以实现额外的控制。
LLama V2是一种功能强大的开源LLM,它已经过预训练,并使用多达700亿个参数进行了微调。它擅长处理众多领域的复杂推理任务,包括编程和创意写作等专业领域。它的训练方法包括自我监督数据,并通过从人类反馈中强化学习(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”中添加express初始化代码。

使用Replicate的API集成LLama V2
通过API密钥,Replicate提供了与LLama V2快速集成的路径,IntelliNode提供了聊天机器人接口,将您的业务逻辑与Replicate后端实现分离,允许您在不同的聊天模型之间切换。
不妨从与托管在Replica后端的LLama集成开始:

从replicate.com获取试用密钥以激活集成。
使用AWS SageMaker集成LLama V2
现在介绍通过AWS SageMaker集成LLama V2,提供隐私和额外的控制层。
集成需要从您的AWS帐户生成API端点,首先我们将在微服务应用程序中设置集成代码:

下列步骤是在您的帐户中创建一个LLama端点,一旦您设置了API网关,复制用于运行“/LLama /aws”服务的URL。
在您的AWS帐户中设置LLama V2端点:
1.SageMaker服务:从您的AWS帐户中选择SageMaker服务,然后点击域。

2.创建SageMaker域:先在您的AWS SageMaker上创建一个新域。这一步为您的SageMaker操作建立了受控空间。

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

4.复制端点名称:一旦您已部署了模型,确保注意端点名称,这对后面的步骤至关重要。

5.创建Lambda函数:AWS Lambda允许运行后端代码而无需管理服务器。创建一个Node.js lambda函数,用于集成部署的模型。
6.设置环境变量:在Lambda中创建一个名为LLama_endpoint的环境变量,附有SageMaker端点的值。

7.Intellinode Lambda导入:您需要导入准备好的Lambda zip文件,该文件建立到SageMaker LLama部署的连接。这个导出是一个zip文件,可以在lambda_LLama_sagemaker目录中找到。

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


9.Lambda函数设置:更新Lambda角色以授予访问SageMaker端点所需的权限。此外,应该延长函数的超时时间以适应处理时间。可以在Lambda函数的“Configuration”选项卡中进行这些调整。
点击角色名称以更新权限,并提供访问SageMaker的权限:

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

从platform.openai.com获取试用密钥。
进行实验
先在终端中导出API密钥,如下所示:

然后运行node应用程序:
node app.js
在浏览器中输入以下url以测试chatGPT服务:
http://localhost:3000/chatgpt?message=hello
我们构建了一个微服务,基于LLama V2和OpenAI的ChatGPT等LLM具有的功能。这种集成为充分利用基于高级AI的无数业务场景打开了大门。
通过将机器学习需求转换成解耦的微服务,您的应用程序可以获得灵活性和可扩展性的好处。不用配置您的操作,以适应整体式模型的约束,语言模型功能现在可加以单独管理和开发,这有望提高效率,更容易进行故障排查和升级管理。
相关文章:
使用LLama和ChatGPT为多聊天后端构建微服务
微服务架构便于创建边界明确定义的灵活独立服务。这种可扩展的方法使开发人员能够在不影响整个应用程序的情况下单独维护和完善服务。然而,若要充分发挥微服务架构的潜力、特别是针对基于人工智能的聊天应用程序,需要与最新的大语言模型(LLM&…...
CSS3 用户界面、图片、按钮
一、CSS3用户界面: 在CSS3中,增加了一些新的用户界面特性来调整元素尺寸、框尺寸和外边框。CSS3用户界面属性:resize、box-sizing、outline-offset。 1、resize: resize属性指定一个元素是否应该由用户去调整大小。 <style…...
说说对Redux中间件的理解?常用的中间件有哪些?实现原理?
一、是什么 中间件(Middleware)是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的…...
【已验证】php配置连接sql server中文乱码(解决方法)更改utf-8格式
解决数据库中的中文数据在页面显示乱码的问题 在连接的$connectionInfo中设置"CharacterSet" > "UTF-8",指定编码方式即可 $connectionInfo array("UID">$uid, "PWD">$pwd, "Database">$database…...
《未来之路:技术探索与梦想的追逐》
创作纪念日 日期:2023年07月05日文章标题:《从零开始-与大语言模型对话学技术-gradio篇(1)》成为创作者第128天 在这个平凡的一天,我撰写了自己的第一篇技术博客,题为《从零开始-与大语言模型对话学技术-…...
vue3 自动导入composition-apiI和组件
1.api的自动导入 常规写法: <script setup>import { ref, reactive, onMounted, computed ,watch } from vue;import { useRouter } from "vue-router";const router useRouter();const person reactive ({name:张三,age…...
LeetCode15-三数之和
本文最精华的就是下面的视频讲解! 🔗:参考的视频讲解 class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> ans new ArrayList<>();Arrays.sort(nums);int nnums.length;int i0,j0,k0,sum0;for(…...
安全物理环境(设备和技术注解)
网络安全等级保护相关标准参考《GB/T 22239-2019 网络安全等级保护基本要求》和《GB/T 28448-2019 网络安全等级保护测评要求》 密码应用安全性相关标准参考《GB/T 39786-2021 信息系统密码应用基本要求》和《GM/T 0115-2021 信息系统密码应用测评要求》 1物理位置选择 1.1机房…...
箭头函数 跟匿名函数this的指向问题
var id 10; function foo() {// 创建时 this->windowthis.id 20; // 等价于 window.id 20let c () > {console.log("id1:", this.id); // 创建时父级 创建时 this->window};let d function () {console.log("id2:", this.id); // 执行时本…...
Java Stream:List分组成Map或LinkedHashMap
在Java中,使用Stream API可以轻松地对集合进行操作,包括将List转换为Map或LinkedHashMap。本篇博客将演示如何利用Java Stream实现这两种转换,同时假设List中的元素是User对象。 1. 数据准备 List<User> list new ArrayList<>(…...
vue2+elementui使用MessageBox 弹框$msgbox自定义VNode内容:实现radio
虽说实现下面的效果,用el-dialog很轻松就能搞定。但是这种简单的交互,我更喜欢使用MessageBox。 话不多说,直接上代码~ <el-button type"primary" size"mini" click"handleApply()" >处理申请</el-b…...
OC 实现手指滑动拖动View
RPReplay_Final1699613924 实现手指滑动拖动View 支持手势移动的控件 支持 Masonry frame 布局 使用富文本 也支持自动高度 核心代码 - (void)handlePanGesture:(UIPanGestureRecognizer *)p {CGPoint panPoint [p locationInView:self.view];CGPoint currentViewPoint _dr…...
多级缓存之实现多级缓存
多级缓存的实现离不开Nginx编程,而Nginx编程又离不开OpenResty。 1. OpenResty快速入门 我们希望达到的多级缓存架构如图: 其中: windows上的nginx用来做反向代理服务,将前端的查询商品的ajax请求代理到OpenResty集群 OpenRest…...
React【axios、全局处理、 antd UI库、更改主题、使用css module的情况下修改第三方库的样式、支持sass less】(十三)
文件目录 Proxying in Development http-proxy-middleware fetch_get fetch 是否成功 axios 全局处理 antd UI库 更改主题 使用css module的情况下修改第三方库的样式 支持sass & less Proxying in Development 在开发模式下,如果客户端所在服务器跟后…...
在gitlab中指定自定义 CI/CD 配置文件
文章目录 1. 介绍2. 配置操作3. 配置场景3.1 CI/CD 配置文件在当前项目step1:在当前项目中创建目录,编写流水线文件存放在该目录中step2:在当前项目中配置step3:运行流水线测试 3.2 CI/CD 配置文件位于外部站点上step1:…...
(论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
文献阅读笔记 简介 题目 Learning a Deep Compact Image Representation for Visual Tracking 作者 N Wang, DY Yeung 原文链接 Learning a Deep Compact Image Representation for Visual Tracking (neurips.cc) 关键词 Object tracking、DLT、SDAE 研究问题 track…...
浅谈设计模式
文章目录 一、单例模式 1.饿汉模式 2.懒汉模式 二、工厂模式 三、建造者模式 四、代理模式 设计模式是前辈们对代码开发的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解…...
企业年会/年终活动如何邀请媒体记者报道?
媒体邀约是企业或组织进行宣传的重要手段之一。通过邀请媒体参加活动,可以增加活动的曝光度和知名度,吸引更多的关注和参与。同时,媒体报道还可以提高企业或组织的权威性和可信度,从而让公众更容易接受其传达的信息。 企业年会或…...
C语言如何执行HTTP GET请求
在现代互联网时代,网络数据的获取和分析变得越来越重要。无论是为了研究市场趋势,还是为了收集信息进行数据分析,编写一个网络爬虫可以帮助我们自动化这一过程。在这篇文章中,我们将使用C语言和libcurl库来编写一个简单的网络爬虫…...
.Net 6 Nacos日志控制台疯狂发输出+Log4Net日志过滤
我们的项目配置了Log4Net 作为日志输出工具,在引入Nacos后,控制台和日志里疯狂输出nacos心跳日志和其他相关信息,导致自己记录的信息被淹没了,找了很多解决办法: 1、提高nacos日志级别,然后再屏蔽相应级别…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
