播放获取
PlayFetch 可以快速、轻松地将大型语言模型功能添加到您的应用程序中。
背景
法学硕士改变了产品团队的工作方式。现在越来越多的应用程序是用自然语言构建的。通常有非工程团队成员参与此过程 - 关心生成文本的语气和交付的内容策略师,为生成的内容带来高度专业知识的领域专家,以及对生成的内容有深入了解的设计师和产品经理。他们的产品需求。随着这些新的团队成员与工程团队一起参与原型设计、开发和维护应用程序的关键部分,出现了许多新的交互。
工程师和团队其他成员之间的这些新交互需要新的工具。工程师不希望纯文本分布在他们的代码库中,不断请求更新,结果却发现新版本实际上并不更好。提示或链的贡献者不希望必须等待工程师集成他们的更新才发现它们没有按预期执行。 PlayFetch 解决了我们在采用这种方式的公司中观察到的这些问题以及许多其他痛点。
什么是 PlayFetch?
- 一个直观的提示游乐场,围绕评论、注释、标签和评级的协作而构建。
- 任何团队成员都可以透明地使用的非破坏性版本控制系统。
- 具有数据导入和导出、测量链和自动聊天机器人测试的测试环境。
- 一个 LLM 平台,可与源代码控制、项目管理和矢量存储工具无缝集成。
- 与模型无关的托管解决方案,具有简单的统一 API,支持简单的调用、聊天和手动中断。
- 专注于 LLM 功能需求的分析和监控解决方案。
在 Google Cloud 上部署 PlayFetch
PlayFetch 已针对在 Google Cloud Platform 上运行进行了优化。请按照以下说明启动并运行您自己的实例。我们假设您已经在 https://github.com/yello-xyz/playfetch 上分叉了官方 PlayFetch 存储库(这样您就可以设置持续集成)。如果您计划更改代码,则可以多次运行这些说明来为开发、暂存和生产设置单独的实例。
配置新项目
- 在 https://cloud.google.com/ 上设置您的 Google Cloud Platform 帐户。
- 通过 https://console.cloud.google.com 访问 Cloud Console。
- 导航到IAM 和管理→管理资源,然后单击创建项目。
- 选择一个唯一的名称(以后无法更改)并单击“创建” 。
- 导航到计费,然后在帐户管理下,确保为新项目启用计费。
配置API
- 导航到API 和服务→启用的 API 和服务。
- 确保在顶部的项目选择器中选择新创建的项目。
- 单击启用 API 和服务。
- 搜索App Engine Admin API并单击ENABLE 。
- 搜索Cloud Build API并单击ENABLE 。
- 搜索Cloud Datastore API并单击启用。
- 搜索Cloud Scheduler API并单击启用。
- 搜索Google App Engine 灵活环境并单击启用。
- 搜索身份和访问管理 (IAM) API并单击启用。
- 搜索Vertex AI API并单击启用。
配置 App Engine 应用程序
- 导航到App Engine →仪表板,然后单击创建应用程序。
- 选择一个位置(以后无法更改)。
- 将服务帐户选项保持打开状态(我们将使用默认值),然后单击“下一步” 。
- 忽略部署面板(单击“我稍后再做”)。
配置数据存储
- 导航到数据存储。
- 如果您没有看到(默认)数据存储,请稍等片刻并刷新。
- 选择(默认)数据存储。
- 在边栏中选择生存时间 (TTL),然后单击创建策略。
- 将Kind设置为_nextauth_token并将Timestamp 属性设置为expires并单击CREATE 。
- 创建另一个具有 kind缓存和属性expiresAt的策略。
配置存储桶
- 导航到Cloud Storage →存储桶并选择存储桶[project-name] .appspot.com 。
- 在“权限”下,单击“授予访问权限” 。
- 添加主体allUsers并分配角色Storage Object Viewer 。
- 单击保存并允许公开访问(此存储桶将用于存储头像)。
创建构建服务帐户
- 导航到IAM 和管理→服务帐户,然后单击创建服务帐户。
- 选择一个唯一的名称,然后单击“创建并继续” 。
- 选择角色服务帐户 用户。
- 单击“添加另一个角色”并选择“App Engine 部署者” 。
- 单击添加另一个角色并选择App Engine 灵活环境服务代理。
- 单击添加另一个角色并选择App Engine 服务管理员。
- 单击添加另一个角色并选择Cloud Build Service Account 。
- 单击添加另一个角色并选择Cloud Datastore Index Admin 。
- 单击添加另一个角色并选择Cloud Scheduler Admin 。
- 单击“继续”和“完成” 。
[可选]配置自定义域
- 导航到App Engine →设置。
- 在“自定义域”下,单击“添加自定义域” 。
- 输入您要使用的自定义域和子域(按照说明验证所有权)。
- 单击“继续”和“完成” 。
- 将显示的记录添加到自定义域提供商的 DNS 配置中。
[可选但推荐]配置 Google OAuth 用户身份验证
- 导航到API 和服务→ OAuth 同意屏幕。
- 根据您的用例选择内部或外部用户类型,然后单击创建。
- 填写必填字段,单击“保存并继续” ,然后单击“添加或删除范围” 。
- 检查范围.../auth/userinfo.profile和.../auth/userinfo.email ,然后单击UPDATE并SAVE AND CONTINUE 。
- 如果您在上面选择了外部用户类型,则可以添加一些测试帐户(在将应用程序发布到生产环境之前)。确保包含您要用于第一个管理员用户的电子邮件地址。请注意,您仍然需要在 PlayFetch 中授予这些用户访问权限。
- 单击保存并继续,然后返回仪表板。
- 在边栏中选择Credentials ,然后单击CREATE CREDENTIALS和OAuth client ID 。
- 选择Web 应用程序作为应用程序类型并选择一个名称。
- 在Authorized JavaScript origins下,添加https:// [project-name] .appspot.com (以及自定义域,如果有的话)。如果您还想在本地运行应用程序时使用 Google 身份验证,请同时添加http://localhost:3000 。
- 在授权重定向 URI下,添加https:// [project-name] .appspot.com/api/auth/callback/google (以及任何自定义域的类似 URL)。如果您还想在本地运行应用程序时使用 Google 身份验证,请同时添加http://localhost:3000/api/auth/callback/google 。
- 单击“创建”并复制生成的客户端 ID 和客户端密钥以在下面的构建触发器设置中使用。
配置构建
- 导航到Cloud Build →触发器,然后单击CONNECT REPOSITORY 。
- 选择源GitHub(云构建 GitHub 应用程序) ,然后单击继续以验证您分叉存储库的 GitHub 帐户(在弹出窗口中)。
- 选择分叉存储库,选中下面的框,然后单击CONNECT 。
- 单击创建触发器。
- 为您的构建选择一个名称。
- 在Configuration下,选择Cloud Build 配置文件(yaml 或 json) 。
- 对于最低设置,您需要通过单击ADD VARIABLE将以下替换变量添加到构建触发器(在“高级”部分中):
- _ENCRYPTION_KEY :64 个十六进制数字的随机字符串。
- _NEXTAUTH_SECRET :至少 32 个字符的随机字符串。
- _NEXTAUTH_URL :您的实例的面向公众的 URL,如果您有一个自定义域,则可以是自定义域,也可以是https:// [project-name] .appspot.com 。
- _GCLOUD_STORAGE_BUCKET :您允许公开访问的 Cloud Storage 存储桶的名称,例如[project-name] .appspot.com 。
- _NOREPLY_EMAIL_USER和_NOREPLY_EMAIL_PASSWORD :用于发送交易电子邮件的 Gmail 帐户。可以是 Google Workspace 中的专用帐户(使用常规密码),也可以是单独的 Gmail 帐户(使用应用密码)。如果您需要使用其他电子邮件提供商,请参阅下面的说明。
- 如果您在上面配置了 Google 身份验证,您还应该添加以下变量:
- _GOOGLE_CLIENT_ID和_GOOGLE_CLIENT_SECRET :生成 OAuth 凭据后在上面复制的值。
- 在服务帐户下,选择您在上面创建的服务帐户。
- 单击“创建” 。
- 单击新创建的触发器旁边的“运行” ,然后单击“运行触发器”。
- 选择侧栏中的“历史记录” ,然后等待验证构建是否成功完成(可能需要 10-15 分钟)。
初始化您的 PlayFetch 环境
- 选择将用作初始管理员用户登录名的电子邮件地址。
- 打开浏览器并导航到https:// [project-name] .appspot.com/api/admin/init?admin= [[email protected]] (确保在查询中指定正确的电子邮件地址)。
- 该端点将运行一个脚本来初始化数据存储(可能需要一分钟),但您只能运行一次(除非您重新创建数据存储)。
- 脚本完成后,复制响应中显示的_PLAYFETCH_API_KEY和_PLAYFETCH_ENDPOINT_URL的值。
- 导航到Cloud Build → Triggers ,单击您创建的触发器,添加上述步骤中的两个附加Substitution 变量,然后单击SAVE 。
- 使用添加的变量再次运行构建触发器。此构建可能需要生成丢失的数据存储索引,因此最好等到它再次完成。
您现在应该能够导航到https:// [project-name] .appspot.com并使用您为第一个管理员用户指定的电子邮件地址登录。您可以使用 Google 身份验证(如果已配置)或电子邮件链接(前提是_NOREPLY_EMAIL变量设置正确)。可以在管理面板中授予其他用户访问权限。
本地运行 PlayFetch
如果您想为 PlayFetch 做出贡献或调试问题,可以按照以下说明使其在本地计算机上运行。
安装节点和npm
安装最新版本的Node和npm的最简单方法是运行最新的安装程序。
克隆存储库
使用 GitHub Desktop 打开并克隆到本地目录,或者使用 SSH 连接到 GitHub 并运行git clone [email protected]:yello-xyz/playfetch.git
。如果您已经分叉了存储库,则可以克隆该存储库。
配置环境
为了在本地运行应用程序,您需要将一些相同的变量添加到本地.env.local文件中(源代码管理会忽略该文件以避免泄漏密钥)。这些值可以与您在 Google Cloud 构建触发器中为开发实例指定的值相同(假设您正在运行单独的生产实例,因为您不想冒泄露这些密钥的风险),但_NEXTAUTH_URL除外,应在其中指定值http://localhost:3000。
您可以从本地计算机访问 Google Cloud 中的数据存储(再次假设您正在运行单独的开发实例,这样就不会意外损坏或泄漏生产数据),方法是安装 Google Cloud CLI 并按照此处的说明进行初始化(您可以跳过其他步骤)。运行以下命令使用您的 Google 帐户登录:
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
构建并运行
您现在应该能够运行以下命令:
-
npm install
-
npm run build
-
npm run start
或者,在开发过程中,您只需运行以下命令即可运行快速刷新的调试构建:
npm run dev
运行所有测试一次:
npm run test
要观察更改并自动重新运行相关测试套件:
npm run watch
可选功能
为了扩展最低设置,您可以配置以下环境变量(在 GCP 构建触发器中或在本地 .env.local 文件中)以启用一些附加功能。
集成
- _GITHUB_CLIENT_ID 、 _GITHUB_CLIENT_SECRET :可用于配置 GitHub OAuth 身份验证(类似于 Google)。需要设置 GitHub OAuth 应用程序。
- _GITHUB_APP_CLIENT_ID 、 _GITHUB_APP_CLIENT_SECRET 、 _GITHUB_APP_ID 、 _GITHUB_APP_PRIVATE_KEY 、 _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK :可用于配置源代码管理集成。需要设置 GitHub 应用程序。
- _LINEAR_APP_CLIENT_ID 、 _LINEAR_APP_CLIENT_SECRET 、 _LINEAR_APP_WEBHOOK_SECRET :可用于配置任务管理集成。还需要设置 Linear 应用程序。
- _NOTION_TOKEN、_NOTION_ONBOARDING_PAGE_ID、_NOTION_WAITLIST_PAGE_ID :可用于自动同步 Notion 的候补名单注册和入职调查响应。需要设置一个 Notion 应用程序。
分析
- _GOOGLE_ANALYTICS_API_SECRET 、 _GOOGLE_ANALYTICS_MEASUREMENT_ID :可用于配置服务器端分析 (GA4)。
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID 、 _NEXT_PUBLIC_COOKIE_DOMAIN 、 _NEXT_PUBLIC_COOKIE_NAME :可用于配置 cookie 和客户端分析(Google 跟踪代码管理器)。
环境
- _GOOGLE_ANALYTICS_DASHBOARD_URL 、 _GOOGLE_ANALYTICS_REPORTS_URL 、 _GOOGLE_SEARCH_CONSOLE_URL 、 _INTEGRATION_TEST_URL 、 _SERVER_LOGS_URL :可用于在管理面板中添加各种诊断链接。
- _NEXT_PUBLIC_DOCS_URL 、 _NEXT_PUBLIC_SUPPORT_EMAIL :可用于生成工作区和项目侧边栏中文档和支持的链接。
- _NOREPLY_EMAIL_HOST 、 _NOREPLY_EMAIL_PORT :可用于为外发交易电子邮件配置备用电子邮件提供商。
- _API_URL :可用于拆分网站和 api 之间的流量,例如,如果您有单独的子域指向您的实例。
执照
PlayFetch 是在 MIT 许可下开源的。
请注意,PlayFetch 使用 CodeMirror 作为依赖项。如果您在商业上使用 CodeMirror,社会(但没有法律)期望您帮助资助其维护。
贡献
PlayFetch 正在 GitHub 上开发。欢迎贡献。在修复错误或添加功能时,请随意提出问题或提出拉取请求。为了帮助您入门,可以在 TODO.md 中找到一些灵感。