用 a16z Companion App 构建 AI 角色

原标题Building AI Characters With the a16z Companion App

Matthew Berman 介绍一个 2023 年的对话角色入门项目,演示从配置服务、生成嵌入向量到编辑角色个性的过程。

MBMatthew Berman主持 · Forward Future
频道
Matthew Berman
发布
2023年7月14日
视频
9:55
阅读
5 分钟
幻灯片
6
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

Matthew Berman 演示了 a16z Companion App。这个教程项目结合角色描述、语言模型、向量搜索和对话存储,让开发者创建可聊天的角色。他使用托管服务配置了一个本地运行的 Web 应用,并展示了编辑角色文件的位置。 视频发布于 2023 年 7 月,界面、模型和价格可能已经变化。Berman 演示了浏览器聊天,但他说 Twilio 短信集成返回了 401 错误。项目仓库将这个技术栈定位为开发者教程,而非完整的生产平台。

  1. 1可配置背景的角色项目提供示例角色,开发者可以更改个性、背景故事和模型选择。仓库将其定位为教程入门技术栈。
  2. 2多服务技术栈演示中的 Next.js 应用通过外部服务实现身份验证、语言模型、向量搜索和对话存储,还提供可选的部署和短信集成。
  3. 3配置凭据Berman 复制环境变量示例文件,填入所选服务商的设置。本次演示使用 Clerk、OpenAI、Pinecone 和 Upstash。
  4. 4生成嵌入向量运行仓库中的命令,将角色描述生成的嵌入向量载入所选向量数据库,随后 Berman 启动开发服务器。
  5. 5编辑角色个性文本保存在角色文件中;模型和可选电话号码等元数据保存在 companions.json 中。Berman 表示,他的 Twilio 测试返回 401 错误。

要点建议

  1. 这个入门项目定义角色个性,并用向量搜索和对话队列提供上下文。
  2. 演示中的 Web 应用虽然在本地运行,仍依赖托管的身份验证、模型和数据库服务。
  3. 2023 年的配置使用 Clerk、OpenAI 或 Replicate、Pinecone 或 Supabase 以及 Upstash 实现不同功能。
  4. 角色描述与角色元数据分别在不同文件中编辑。
  5. 视频没有演示成功发送短信:Berman 报告 Twilio 返回了 401 错误。
全文

按章节阅读整理后的全文

只看原始文稿
01

陪伴应用及其技术栈

Berman 演示与示例角色对话,并介绍项目使用的服务。这段教程录制于 2023 年。

我想演示如何搭建 [a16z Companion App](https://github.com/a16z-infra/companion-app),这是一个用于创建聊天角色的入门项目。你可以为角色设定个性和背景故事,并存储对话历史。仓库将其描述为开发者教程;本次演示中的界面和集成反映的是 2023 年 7 月的情况。

示例应用自带几个角色,使用托管的 ChatGPT 和 Vicuna 模型。作者告诉我,包括数据库在内的完全本地版本已列入路线图,但那是一项计划,并非这次演示的内容。我和 Alex 简单聊了几句,他的回答提到了绘画和科幻书籍。

首先克隆项目仓库并进入其目录。应用组合了多种服务:Next.js 负责应用逻辑,Clerk 负责身份验证,Pinecone 或 Supabase 负责向量存储,LangChain 负责模型编排,OpenAI 或 Replicate 负责文本生成,Upstash 负责对话历史。项目还列出 Fly 和 Twilio,分别用于部署和短信;其中一些集成是可选的。

Companion App 服务栈
幻灯片 1 / 6Companion App 服务栈项目 README 列出了身份验证、模型、存储和可选短信功能所用的组件。
02

配置服务

他安装依赖、准备环境变量文件,并配置身份验证、模型访问、向量存储和对话历史。虽然应用在本地运行,他使用的服务仍由外部托管。

环境配置示例
幻灯片 2 / 6环境配置示例示例文件展示了配置前的服务商选择和凭据字段。

克隆后运行 `npm install`,然后在编辑器中打开文件夹。将 `.env.local.example` 重命名或复制为 `.env.local`,填入所选服务的设置。本次演示我使用 Pinecone;示例也提供 Supabase,我提到它可以在本地托管。

配置身份验证时,先创建 Clerk 应用并选择登录方式。我选择电子邮件和 Google 登录,再把可发布密钥和私钥复制到对应的环境变量中,保留画面中已有的登录和注册路径。这些配置界面和选项现在可能有所不同。

接下来,在环境文件中添加 OpenAI API 密钥。我在这里使用 OpenAI;项目也支持由 Replicate 托管的 Vicuna 13B,需要提供 Replicate token。演示中的 Web 服务器在本地运行,但模型调用和其他选定服务仍由外部托管。

创建一个 Pinecone 索引,在环境文件中填入索引名称、环境和 API 密钥。项目配置为示例嵌入向量指定了 1,536 个维度。画面中的入门套餐信息属于历史信息;如果改用 Supabase,就按照项目说明配置该服务。

存储对话需要创建 Upstash Redis 数据库,选择区域以及画面中展示的 SSL 和淘汰设置,然后把 REST URL 和 token 复制到环境文件。视频使用的是托管 Redis 服务,因此这并不是完全本地的技术栈。

03

运行并自定义角色

他生成嵌入向量、启动应用并编辑角色定义。演示中尝试的 Twilio 集成没有成功。

生成嵌入向量并启动应用
幻灯片 3 / 6生成嵌入向量并启动应用README 分别给出两种向量数据库的命令,以及启动本地开发服务器的命令。

仓库针对 Pinecone 和 Supabase 分别提供了生成嵌入向量的命令。我运行 Pinecone 命令,将角色信息生成的嵌入向量载入向量存储,然后用 `npm run dev` 启动开发服务器。我在浏览器打开本地地址,通过 Clerk 登录。

示例陪伴角色
幻灯片 4 / 6示例陪伴角色应用展示了使用不同托管模型选项的角色。

本地应用展示了使用 ChatGPT 的 Alex 和 Sebastian,以及使用 Vicuna 13B 的 Rosie 和 Lucky。我说过,即使界面当时没有显示全部对话历史,历史仍会被存储。仓库解释说,对话队列和检索到的角色信息提供上下文;存储历史不等于模型拥有无限记忆。

角色个性文件
幻灯片 5 / 6角色个性文件Alex 的文本文件包含角色指令和示例对话材料。

要更改个性,可以打开 `companions` 目录下对应的文本文件。Alex 的文件描述了一个喜欢绘画、编程和科幻作品的虚构角色。你可以编辑描述或创建新个性,再在 `companions.json` 中更新图像、模型和可选电话号码等元数据。

角色元数据
幻灯片 6 / 6角色元数据JSON 文件指定每个角色的名称、描述、图像、模型和可选电话号码。

项目包含通过 Twilio 给角色发短信的集成,但我没能让它正常工作:尝试时返回了 401 错误。我打算继续排查,如果解决就补充更新。这次成功演示的是浏览器中的陪伴角色。

同频道的其他文章

12 张幻灯片34:21EN → 简体中文
Matthew Berman· 2026年10月27日Matthew Berman 解读 Anthropic 的上市文件、AI 增长与治理Matthew Berman, Sam Altman · Forward Future主持人审视 S-1 中的财务指标、算力战略和投票结构,并质疑 AI 快速发展与安全之间的张力。AnthropicAI Safety企业 AI+2
0:26EN → 简体中文
Matthew Berman· 2026年10月25日Sam Altman 谈 AI 世界中的人类价值与问题解决Sam Altman · OpenAI在一段简短的访谈摘录中,Altman 思考解决难题的乐趣,以及人在解读结果时的作用。Human-AI CollaborationFuture of WorkAI Strategy
2 张幻灯片0:36EN → 简体中文
Matthew Berman· 2026年10月25日Kimi K3.1 与魔方求解演示Matthew Berman · Forward FutureMatthew Berman 展示一个被打乱的虚拟魔方如何复原,并对 Kimi K3.1 的测试给予积极评价。评估编程智能体Open-weight models
2 张幻灯片0:21EN → 简体中文
Matthew Berman· 2026年10月24日AI 生成的 Kimi 基准图表使用了虚构分数Matthew Berman · Forward FutureMatthew Berman 要求生成一张 Kimi K3.1 Pro 基准图表,随后发现图中的数字只是示意性占位值。Benchmarks评估Generative media
6 张幻灯片25:50EN → 简体中文
Matthew Berman· 2026年10月24日Kimi K3.1 Pro 实测:3D 演示出色,表现不一,价格有竞争力Matthew Berman · Forward FutureMatthew Berman 测试这款开放权重模型的编程、3D 渲染和视觉讲解能力,并比较基准成绩与价格。Open-weight modelsBenchmarksAI cost & performance+1
2 张幻灯片32:20EN → 简体中文
Matthew Berman· 2026年10月23日本地 AI 究竟适合谁?成本、取舍与混合模式的未来Matthew Berman · Forward FutureMatthew Berman 权衡数据控制和自主权,与硬件成本、设置复杂度及推理速度之间的关系。Local inferenceOpen-weight modelsAI cost & performance+1