生成式AI的JavScript技术栈
如果不使用新的软件基础设施技术,就很难理解它们。 至少,a16z 基础设施团队发现了这一点,而且因为我们中的许多人都是以程序员的身份开始职业生涯的,所以我们经常通过实践来学习。 尤其是生成式AI浪潮的情况尤其如此,它来得如此之快、如此引人注目,以至于良好的文档往往落后于代码几个月。 因此,为了更好地了解这个领域,我们一直围绕大型语言模型 (LLM)、大型图像模型、矢量数据库等构建项目。
在这样做的过程中,我们注意到,由于所有这些都是如此新,并且变化如此之快,所以确实没有好的框架可以快速入门。 每个项目都需要一堆样板代码和集成。 坦白说,这是一种痛苦。 因此,我们着手为那些想要尝试核心技术但又不想过多考虑诸如身份验证、托管和工具等辅助问题的人创建一个非常简单的“AI入门”模板 选择。
你可以在此处分叉并部署模板。 我们很乐意听到你的想法和反馈,以使模板变得更好。

推荐:用 NSDT编辑器 快速搭建可编程3D场景
1、组件
我们中的许多人都是 JavaScript/TypeScript 爱好者,因此我们选择 JavaScript 堆栈作为我们的起点。 尽管如此,这个框架可以很容易地修改以支持其他语言,我们计划很快就这样做。
以下是我们与长期合作者和开源爱好者 Tim Qi 共同构建的入门堆栈的简要概述。 目标是强调从 GitHub 上提取代码到运行生成式 AI 应用程序(图像和文本)的最简单路径。 它的设计目的是可以轻松扩展到更复杂的架构和项目:
- 身份验证:Clerk
- 应用逻辑:Next.js
- 矢量数据库:Pinecone / Supabase pgvector
- LLM编排:Langchain.js
- 图像模型:Replicate
- 文本模型:OpenAI
- 部署:Fly.io
有关新兴LLM栈的更详细概述,请查看我们之前的文章“LLM应用程序的新兴架构”。
2、模型与推理
模型托管是一件痛苦的事情,而且很大程度上是构建应用程序的正交问题。 因此,我们使用 OpenAI 进行文本构建,使用 Replicate 进行图像推理。 Replicate 还提供基于文本的模型(查看运行 Vicuna 是多么容易),因此你可以根据需要使用它代替 OpenAI。

3、身份验证
对于入门框架,我们通常不会费心包含 auth。 但是,在这种情况下,这些模型是如此强大和通用,以至于它们成为旨在获得免费使用的大规模、有组织的努力的目标。 当他们的模型提供商意外地收到 10,000 美元的账单时,开发人员通常会经历惨痛的教训。 这就是为什么我们选择包含 Clerk,它负责机器人检测的繁重工作,当然,如果你最终构建更复杂的应用程序,它还提供完整的身份验证支持。

4、矢量数据库
LLM 需要可靠的长期记忆来保存状态并围绕上下文窗口工作; 这是由矢量数据库处理的。 目前,Pinecone 是最成熟、最受生成 AI 人群欢迎的矢量存储库。 也就是说,我们希望为所有用例和首选项提供支持,因此我们还在存储库中包含了对 Supabase 的 pg-vector 的支持。

5、部署
对于部署,我们使用 Fly.io,因为它是多区域的,易于管理,并提供非常通用的计算环境(在容器中运行的任何东西)。
随着时间的推移,许多人工智能项目最终会使用多种语言,并且可能在后端需要实现重要的功能,因此 Fly.io 是 Vercel 或 Netlify 等 JavaScript 原生托管环境与传统云之间的良好折衷方案。 也就是说,如果你愿意的话,该代码可以轻松支持其他托管环境。 Fly.io 很快还将为你想要托管自己的模型的情况提供 GPU。
6、路线图
尽管我们认为第一次迭代是一个很好的起点,但我们正在用更多选项充实技术栈。 以下是我们的路线图:
- 用于 create-ai-stack 的交互式 CLI,开发人员可以在其中选择自己的项目支架和依赖项
- 用于高级用例的事务数据库(例如,保留问答中的问题、用户偏好等)
- 矢量数据库和部署平台的更多选项
- 开源模型的轻量级微调步骤
原文链接:生成式AI的JS技术栈 — BimAnt
相关文章:
生成式AI的JavScript技术栈
如果不使用新的软件基础设施技术,就很难理解它们。 至少,a16z 基础设施团队发现了这一点,而且因为我们中的许多人都是以程序员的身份开始职业生涯的,所以我们经常通过实践来学习。 尤其是生成式AI浪潮的情况尤其如此,它…...
从零开始学习软件测试-第39天笔记
接口测试 http消息结构 请求报文 请求行 请求方式 url 协议版本请求头空行请求体响应报文 响应行 协议版本 状态码 状态消息响应头空行响应体 请求参数类型 path参数 写在路径中的 https://xxx.xxx.com/参数值query参数 写在url问号后面,以键值对形式存在 h…...
【多思路附源码】2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策
赛题介绍 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬…...
Vue2+Vue3基础入门到实战项目(六)——课程学习笔记
镇贴!!! day07 vuex的基本认知 使用场景 某个状态 在 很多个组件 来使用 (个人信息) 多个组件 共同维护 一份数据 (购物车) 构建多组件共享的数据环境 1.创建项目 vue create vuex-demo 2.创建三个组件, 目录如下 |-components |--Son1.…...
QT—基于http协议的网络文件下载
1.常用到的类 QNetworkAccessManager类用于协调网络操作,负责发送网络请求,创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号: finished():完成…...
SpringBoot-配置优先级
配置 SpringBoot项目支持的三种格式的配置文件 application.properties:这是最常用的配置文件类型,使用键值对的形式来配置应用程序的属性。可以在该文件中配置应用程序的端口号、数据库连接信息、日志级别等。 application.yml:这是一种更…...
科普初步了解大模型
目录 一、大模型的简单认知 (一)官方定义 (二)聚焦到大语言模型 (三)大模型的应用举例 二、如何得到大模型 (一)整体的一般步骤 训练自己的模型 使用预训练模型 选择适当的…...
Nginx 和 网关的关系是什么
分析&回答 Nginx也可以实现网关,可以实现对api接口的拦截,负载均衡、反向代理、请求过滤等。网关功能可以进行扩展,比如:安全控制,统一异常处理,XXS,SQL注入等;权限控制,黑白名…...
解决springboot项目中的groupId、package或路径的混淆问题
对于像我一样喜欢跳跃着学习的聪明人来说,肯定要学springboot,什么sevlet、maven、java基础,都太老土了,用不到就不学。所以古代的聪明人有句话叫“书到用时方恨少”,测试开源项目时,编译总是报错ÿ…...
Vmware 网络恢复断网和连接
如果你的 虚拟机无法联网了,比如: vmware 无法将网络更改为桥接状态: 没有未桥接的主机网络适配器 等各种稀奇古怪的问题; 按照下面操作 还远默认设置 包你解决各种问题!...
学生来看!如何白嫖内网穿透?点进来!
文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1 搭建虚拟机1.1 下载文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压虚拟机文件1.4 虚拟机初始化1.5 没有搜索到解决方式:1.6 虚…...
C++中的stack和queue
文章目录 1. stack的介绍和使用1.1 stack的介绍1.2 stack的使用 2. queue的介绍和使用2.1 queue的介绍2.2 queue的使用 3 priority_queue的介绍和使用3.1 priority_queue的介绍3.2 priority_queue的使用 4. 容器适配器4.1 什么是适配器4.2 STL标准库中stack和queue的底层结构4.…...
Ubuntu-22.04通过RDP协议连接远程桌面
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、RDP是什么?二、配置1.打开远程桌面功能2.验证服务3.防火墙配置4.测试效果 总结 前言 由于一些特殊需要,我需要通过远程桌面连接到U…...
20230908java面经整理
1.cpp和java的区别 cpp可以多重继承,对表java中的实现多个接口 cpp支持运算符重载、goto、默认函数参数 cpp自动强转,导致不安全;java必须显式强转 java提供垃圾回收机制,自动管理内存分配,当gc要释放无用对象时调用f…...
uniapp 开发App 网络异常如何处理
我对该问题思考的不是很清楚,目前只想到了基本的解决方案 第一、客户端的网络异常(断网) 1. 断网情况 一定要弹出信息提示,目前最好的解决方式就是在uni.request封装的统一方法中写提示 //1. 封装的网络请求 async function se…...
docker安装常用软件
Linux系统安装docker请参考:https://mp.csdn.net/mp_blog/creation/editor/128176825 docker安装mysql 1、拉镜像:docker pull mysql:8.0.26 2、创建数据目录: mkdir -p /mnt/data/mysql/data mkdir -p /mnt/data/mysql/logs mkdir -p /mn…...
CocosCreator3.8研究笔记(五)CocosCreator 脚本说明及使用(下)
在Cocos Creator中,脚本代码文件分为模块和插件两种方式: 模块一般就是项目的脚本,包含项目中创建的代码、引擎模块、第三方模块。 插件脚本,是指从 Cocos Creator 属性检查器中导入的插件,一般是引入第三方引入库文件…...
Adobe Acrobat Reader界面改版 - 解决方案
问题 日期:2023年9月 Adobe Acrobat Reader下文简称Adobe PDF Reader,此软件会自动进行更新,当版本更新至2023.003.20284版本后。 软件UI界面会大改版:书签页变成了右边、工具栏变到了左边、缩放按钮变到了右下角,如…...
实用调试技巧(2)
文章目录 6. 如何写出好(易于调试)的代码6.1 优秀的代码:6.2 示范:6.3 const的作用 7. 编程常见的错误7.1 编译型错误7.2 链接型错误7.3 运行时错误 附: 6. 如何写出好(易于调试)的代码 6.1 优…...
海外ASO优化之如何优化游戏应用
如果我们发布了一款手机游戏或者管理了一款手机游戏,那么需要确保我们的手机游戏对合适的人可见,目的是增加应用的下载量。 1、优化游戏元数据的关键词。 Apple和Google在应用商店中为我们提供有限的空间,来描述手机游戏及其优势。我们需要使…...
OpCore-Simplify终极指南:如何快速构建完美的OpenCore EFI配置
OpCore-Simplify终极指南:如何快速构建完美的OpenCore EFI配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的Hackintosh配置…...
微信好友关系检测工具:如何识别单向好友并优化通讯录管理
微信好友关系检测工具:如何识别单向好友并优化通讯录管理 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...
Vue3-DateTime-Picker:如何让Vue 3应用的时间选择变得简单又优雅?
Vue3-DateTime-Picker:如何让Vue 3应用的时间选择变得简单又优雅? 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker 你是否曾经在开发Vue应用时&…...
Python中数据分块处理的实现方法
在实际的数据处理任务中,我们经常需要处理大规模数据集。一次性加载所有数据到内存可能会导致内存溢出,这时数据分块处理就显得尤为重要。本文将介绍Python中三种高效的数据分块处理方法。 一、为什么需要数据分块处理? 在处理大型数据集时…...
LoadRunner11中文破解版安装全攻略:从下载到脚本录制一步到位
LoadRunner11性能测试工具实战指南:从环境搭建到脚本录制 性能测试作为软件质量保障的关键环节,LoadRunner11至今仍是许多企业进行系统压力测试的首选工具。本文将系统性地介绍这款经典工具的环境配置与基础应用,帮助测试工程师快速掌握核心工…...
2026年企业AI HR选型实用手册
导读:这份2026年企业AI HR选型实用手册由eRoad易路出品,核心围绕AI技术与人力资源管理的深度融合,提出以“搭子”方法论打造企业落地AI HR的最短路径,展现了从技术应用到产业落地的HR智能化进化方向。关注公众号:【互联…...
【国家级智慧农场落地案例】:Python图像算法如何将番茄裂果识别准确率提升至98.7%?
第一章:国家级智慧农场落地背景与番茄裂果识别挑战近年来,国家《“十四五”推进农业农村现代化规划》明确提出加快数字技术与农业生产深度融合,推动建设一批国家级智慧农场示范项目。在华北、华东等核心蔬菜产区,规模化番茄种植基…...
BilibiliDown革新性视频下载解决方案:从需求到实践的全方位指南
BilibiliDown革新性视频下载解决方案:从需求到实践的全方位指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_…...
all-MiniLM-L6-v2部署教程:Ollama中自定义embedding模型名称与API端点配置
all-MiniLM-L6-v2部署教程:Ollama中自定义embedding模型名称与API端点配置 想在你的本地环境中快速部署一个轻量、高效的文本向量化服务吗?all-MiniLM-L6-v2是一个绝佳的选择。这个模型虽然小巧,但在语义理解任务上表现不俗,特别…...
告别重复造轮子:用快马ai一键生成代码管理工具提升效率
作为一个经常需要复用代码片段的开发者,我最近发现了一个能显著提升工作效率的方法——用InsCode(快马)平台快速生成代码管理工具。这个方案完美解决了我在日常开发中遇到的三个痛点: 重复代码难管理:每次遇到相似功能都要翻历史项目或重新搜…...
