斯坦福小镇升级版——AI-Town搭建指南

导语:
8月份斯坦福AI小镇开源之后,引起了 AIGC 领域的强烈反响,但8月份还有另一个同样非常有意义的 AI-Agent 的项目开源,a16z主导的 AI-Town
本篇文章主要讲解如何搭建该项目,如有英文基础或者对这套技术栈熟悉,可直接参考该项目的 Readme;搭建该项目需要一台服务器、OpenAI 的 Key,以及能够访问外网,需要自行准备

文章目录

      • 技术栈简介
      • 部署流程
      • 后话

技术栈简介

笔者之前搭建过斯坦福版本的AI小镇,也写过流程和代码分析,参见这篇文章

因此在搭建 AI-Town 的时候也对两者的技术栈和搭建过程进行了对比,后续还将再用一篇文章分析 AI-Town 的源码

对比来说,斯坦福的AI小镇是用 Python 搭建的环境,但用了H5的游戏引擎Phaser作为前端表现层,部署流程中遇到的问题靠自己摸索,还需要解决网络不通等问题(PS:笔者个人认为更像一个实验而非完整项目)

AI-Town 用 TypeScript/JavaScript 完成前后端所有代码的编写,虽然接入的组件和平台比较多,但相对的可扩展性更高(比如生成像素图和音乐等),搭建流程基本是全英文文档,但基本没有遇到什么卡点,列一下主要的技术栈:

  • 游戏引擎和数据库(Game engine & Database):Convex
  • 向量数据库(VectorDB):Pinecone
  • 登录认证(Auth):Clerk
  • 文本生成模型(Text model):OpenAI
  • 部署(Deployment):Fly(支持Docker)
  • 像素图生成(Pixel Art Generation):Replicate、Fal.ai

部署流程

因为 GitHub 上的部署教程是全英文的,笔者作为后台对其中的部分工具和平台也不甚熟悉,所以详细记录了下搭建时的流程以及遇到的问题,部分平台可能需要能访问外网,请自行解决

Convex 是由开发 AI-Town 的风投公司 a16z 投资的一款支持用 TypeScript 全栈开发应用程序的平台,能使各种规模的工程团队能够构建快速、可靠的动态应用程序,无需复杂的后端工程或数据库管理

目前为止笔者还不太熟悉 Convex 的架构和开发流程,但整个项目高度依赖 Convex,后续在阅读源码时会一起介绍该平台(目前中文资料很少,近乎没有)

  • 首先clone仓库以及安装环境,如果环境安装失败记得检查 node 版本;正常运行到 npm run dev 命令时会发现报错(提示缺失变量),因为这里缺少运行程序的必要变量
git clone https://github.com/a16z-infra/ai-town.git
cd ai-town
npm install
npm run dev
  • 从下一步开始将配置运行所需的工具和环境,注意里面提到的变量,需要汇总填入 Convex的变量
  • 配置 Clerk 组件,用于平台的登录验证,可以用 GitHub 账号登录,点击 Add application 后取个名字即可
    在这里插入图片描述
    进入创建的 application,点击左侧 API Keys 选项,把右侧的两条 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY 写入 Git 项目根目录下的 .env.local 文件(在前面步骤中自动生成)
    在这里插入图片描述
  • Clerk 还需要点击左侧的 JWT Templates ,新建一个 template
    在这里插入图片描述
    保存这里的 JWKS Endpoint 值,作为下面的 CLERK_ISSUER_URL 配置项
    在这里插入图片描述
  • 下一步是配置 OpenAI Key,这里不做多说,会作为后面的 OPENAI_API_KEY 配置项
  • 配置Pinecone,Pinecone是一个向量数据库,点击右侧的 Create Index
    在这里插入图片描述
    这里页面中的 Name 将作为 PINECONE_INDEX_NAME 配置项,红框处填写 1536,其他部分都保持默认选项即可
    在这里插入图片描述
    创建成功后点击右侧 API Keys,创建或者直接用默认的API Key,保存 Environment 为 PINECONE_ENVIRONMENT 配置项,Value 为 PINECONE_API_KEY配置项(这里与Git里给的示例Environment前缀不一样也没事)
    在这里插入图片描述
  • (可选项)项目还用到了 Replicate 生成像素图片,通过 GitHub 账号登录,进入 API页面,选择任意一个Key 作为 REPLICATE_API_TOKEN
    在这里插入图片描述
  • 前面的步骤中提到的配置项都需要保存到 Convex 的控制台,进入自己创建的项目,点击右侧 Settings,然后弹出页面中选择 Environment variables
    在这里插入图片描述
    直接以 xxx = xxx 的格式将之前的 Key 都复制粘贴进来即可,下面是笔者配置的 Key,可以从前文中找到对应的值以及来源
    在这里插入图片描述
  • 全部都粘贴完成后,回到命令行,并运行下面的命令,即可启动程序
npm run dev

运行起来后,默认监听的是 3000 端口,可通过 localhost:3000 访问页面(附一个跑起来的截图
在这里插入图片描述

后话

GitHub 的英文文档其实已经足够清晰,笔者只是补充了一些详细的说明,后续还会写一篇代码分析


原创不易,转载请注明出处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP之三次握手四次挥手

在前面的文章中我们了解到http是基于TCP/IP协议的,这篇文章我们来了解一下TCP/IP。 一、TCP与UDP 1、UDP 基于非连接。类似于写信,不能保证对方能不能接收到,接收到的内容是否完整,顺序是否正确。 优缺点:性能损耗小…

云数据库知识学习——概述

一、云计算是云数据库兴起的基础 云计算是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等计算机和网络技术发展融合的产物。云计算是由一系列可以动态升级和被虚拟化的资源组成的,用户无需掌握云计算的技术,只要通过网络就可以访问这些资…

Maven中导入jQuery,前端页面中引用jQuery

第一步pom文件中,配置maven坐标。 第二步,在前端页面中引用jQuery 注:该前端页面需要在web根目录即webapp目录下。可认为在maven中导入jQuery后,jquery.min.js文件放在目录webapp/webjars/jquery/3.3.1下。

java实现本地文件转文件流发送到前端

java实现本地文件转文件流发送到前端 Controller public void export(HttpServletResponse response) {// 创建file对象response.setContentType("application/octet-stream");// 文件名为 sresponse.setHeader("Content-Disposition", "attachment;…

【C# Programming】编程入门:方法和参数

一、方法 1、方法的定义 由一系列以执行特定的操作或计算结果语句组成。方法总是和类关联,类型将相关的方法分为一组。 方法名称 形参和实参(parameter & argument)返回值 2、命名空间 一种分类机制,用于组合功能相关的所有类型。命名空间是分级…

架构师成长之路|Redis实现延迟队列的三种方式

延迟队列实现 基于监听key过期实现的延迟队列实现,这里需要继承KeyspaceEventMessageListener类来实现监听redis键过期 public class KeyExpirationEventMessageListener extends KeyspaceEventMessageListener implementsApplicationEventPublisherAware {private static f…

HarmonyOS开发:探索动态共享包的依赖与使用

前言 所谓共享包,和Android中的Library本质是一样的,目的是为了实现代码和资源的共享,在HarmonyOS中,给开发者提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(H…

docker镜像配置mysql、redis

mysql 拉取mysql镜像 docker pull mysql:5.7创建并运行mysql容器 docker run -p 3306:3306 --name mysql\-v /mydata/mysql/log:/var/log/mysql\-v /mydata/mysql/data:/var/lib/mysql\-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD123456\-d mysql:5.7-e 设置…

Spring整合tomcat的WebSocket详细逻辑(图解)

主要解决存在的疑问 为什么存在2种spring整合websocket的方式,一种是使用ServerEndpoint注解的方式,一种是使用EnableWebSocket注解的方式,这2种有什么区别和联系?可以共存吗?它们实现的原理是什么?它们的各…

redis实战篇之导入黑马点评项目

1. 搭建黑马点评项目 链接:https://pan.baidu.com/s/1Q0AAlb4jM-5Fc0H_RYUX-A?pwd6666 提取码:6666 1.1 首先,导入SQL文件 其中的表有: tb_user:用户表 tb_user_info:用户详情表 tb_shop:商户…

windows11安装docker时,修改默认安装到C盘

1、修改默认安装到C盘 2、如果之前安装过docker,请删除如下目录:C:\Program Files\Docker 3、在D盘新建目录:D:\Program Files\Docker 4、winr,以管理员权限运行cmd 5、在cmd中执行如下命令,建立软联接: m…

【办公类-19-03】办公中的思考——Python批量制作word单元格照片和文字(小照片系列)

背景需求: 工会老师求助:如何在word里面插入4*8的框,我怎么也拉不到4*8大小(她用的是我WORD 文本框) 我一听,这又是要手动反复黏贴“文本框”“照片”“文字”的节奏哦 我问:你要做几个人&…

WEB APIs day6

一、正则表达式 RegExp是正则表达式的意思 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…

Ubuntu离线或在线安装Python解释器

这里以安装Python3.5.7为例。 首先进入官网&#xff0c;下载Python-3.5.7.tgz&#xff0c;或者使用以下命令下载&#xff08;需要联网&#xff09;&#xff1a; wget https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tgz下载完成后&#xff0c;使用以下命令进行解压缩…

【教程】安防监控/视频存储/视频汇聚平台EasyCVR接入智能分析网关V4的操作步骤

TSINGSEE青犀AI边缘计算网关硬件 —— 智能分析网关目前有5个版本&#xff1a;V1、V2、V3、V4、V5&#xff0c;每个版本都能实现对监控视频的智能识别和分析&#xff0c;支持抓拍、记录、告警等&#xff0c;每个版本在算法模型及性能配置上略有不同。硬件可实现的AI检测包括&am…

Qt利用QTime实现sleep效果分时调用串口下发报文解决串口下发给下位机后产生的粘包问题

Qt利用QTime实现sleep效果分时调用串口下发报文解决串口下发给下位机后产生的粘包问题 文章目录 Qt利用QTime实现sleep效果分时调用串口下发报文解决串口下发给下位机后产生的粘包问题现象解决方法 现象 当有多包数据需要连续下发给下位机时&#xff0c;比如下载数据等&#x…

1987-2021年全国31省专利申请数和授权数

1987-2021年全国31省国内三种专利申请数和授权数 1、时间&#xff1a;1987-2021年 2、来源&#xff1a;整理自国家统计局、科技统计年鉴、各省年鉴 3、范围&#xff1a;31省市 4、指标&#xff1a;国内专利申请受理量、国内发明专利申请受理量、国内实用新型专利申请受理量…

Java“牵手”阿里巴巴商品详情数据,阿里巴巴商品详情API接口,阿里巴巴国际站API接口申请指南

阿里巴巴平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取阿里巴巴商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xf…

高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)

我之前也已经在写了好几篇高频知识点汇总&#xff0c;简要介绍一下&#xff0c;有需要的同学可以点进去先收藏&#xff0c;之后用到时可以看一看。如果有帮助的话&#xff0c;希望大家给个赞&#xff0c;给个收藏&#xff01;有疑问的也可以在评论区留言讨论&#xff0c;能帮的…

WebStorm2023新版设置多个窗口,支持同时显示多个项目工程

调整设置 Appearance & Behavior -> System Settings> Project open project in New window&#xff1a;