[![贡献者][contributors-shield]][contributors-url] [![分叉][forks-shield]][forks-url] [![关注者][stars-shield]][stars-url] [![问题][issues-shield]][issues-url] [![MIT 许可证][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]
构建工具
[![Svelte][svelte-shield]][svelte-url] [![SvelteKit][sveltekit-shield]][sveltekit-url] [![Skeleton][skeleton-shield]][skeleton-url] [![OpenAI][openai-shield]][openai-url]
SlickGPT
一个令人惊叹的 ChatGPT 客户端 - 具有超能力!
亲自试试 »
获取您的 API 密钥
·
报告错误
·
请求功能
加入我们的 Discord 服务器
·
在 Patreon 上支持我们
新功能:SlickGPT Pro(无需 API 密钥)
SlickGPT 现在提供固定价格的可选“Pro”计划。如果您选择此选项,您可以使用我们 Azure 云基础设施访问所有 OpenAI 模型和设置,而无需担心拥有自己的 API 密钥或使用限制。是的,这是无限的。
目前,SlickGPT 对 Pro 用户没有额外功能。我们不会记录任何数据 - 唯一知道的是花费的代币数量。这只是支持项目并摆脱管理您自己的 API 密钥麻烦的一种方式。
如果您真的对 AI 感兴趣,还可以将其与我们的其他项目 Wingman AI 结合起来,获得包含 SlickGPT Pro 的 Wingman AI Ultimate,价格更优惠。
关于项目
![SlickGPT][slickgpt-screenshot]
SlickGPT 是一个轻量级的“使用您自己的 API 密钥”(或可选的:基于订阅)OpenAI API 的 Web 客户端,使用 Svelte 编写。它为用户提供了非常华丽的用户界面,并具有丰富的功能集,如管理本地聊天记录(在 localStorage 中)、无用户 "Share" 功能、显著的上下文编辑器,以及代币费用计算和分配。您可以在本地运行客户端,自行托管或使用我们的公共实例。
功能概览
- 华丽的用户界面
用优雅且干净的 UI 进行交互,使聊天变得有趣,并向用户解释很多繁重的内容。 - 移动优先且完全响应式
SlickGPT 始终在您手边。字面意思上,在您的手机上。 - 本地历史记录
您的聊天记录保存在 localStorage 中,从未离开您的机器(除非您主动决定共享聊天)。 - 删除和编辑消息
就像您在 OpenAI 客户端中习惯的那样。 - 自动建议聊天标题
SlickGPT 可以根据您发送的第一个消息建议聊天标题。 - 共享聊天
生成可共享的聊天链接,只需 3 次点击即可与团队或朋友协作和头脑风暴,而不需要任何身份验证。 - 设置上下文
在给出回答时为 AI 模型提供您自己的上下文,以确保相关和集中的结果。 - 费用计算
通过内置的代币费用计算器实时跟踪并控制您的 API 使用成本。 - 完全配置能力
自定义 OpenAI 模型设置,以根据您的喜好调整体验。 - 无需注册或登录
创建甚至共享聊天而无需登录或注册 - 简单、快速且高效。请注意,如果您想使用 SlickGPT Pro 订阅,则需要注册/登录。 - 使用自己的 API 密钥
通过使用自己的 OpenAI API 密钥保持您的 API 调用私密和安全,或者如果您不想要 API 密钥或更喜欢固定价格而非“按使用付费”模型,可以使用我们的云基础设施。 - 自行托管/随处运行
在您的机器上本地运行实例,或在您喜欢的云提供商上托管。
查看更多详情的 YouTube 视频:
[ 返回顶部 ]
更详细
本地聊天记录
您的聊天记录保存在浏览器的 localStorage 中,从未离开您的机器(除非您主动决定分享聊天)。
共享聊天
只需 3 次点击即可共享聊天,与您的团队或朋友协作和头脑风暴。无需身份验证或注册。您也可以稍后取消共享或更新共享的聊天。接收者可以通过一次点击导入共享的聊天,并在他们自己的本地聊天实例中继续您的对话。
更改高级设置
SlickGPT 允许您根据自己的喜好自定义与 OpenAI API 提供的所有参数。您可以更改模型、温度、top_p 和频率惩罚参数,以获得最佳结果。您还可以设置聊天上下文(或“系统”消息)以引导 AI 模型并塑造其行为和回答,甚至使用“停止序列”来限制您获得的答案。
详细的代币计算
SlickGPT 提供了内置的代币费用计算器。您可以在输入和接收回答时实时查看聊天的费用。这使您可以跟踪和控制您的 API 使用情况。SlickGPT 还有一个雅致的饼图,可以将聊天中的费用分布可视化。
更改上下文
您知道与 ChatGPT 聊天时的“上下文”是什么吗?大多数用户不知道,因此 SlickGPT 会非常清楚地显示和解释这一概念,并在您开始新聊天时提供解释和示例。这样,最强大功能之一就成为了聊天的一部分。
在浅色和深色模式之间切换
SlickGPT 提供了浅色和深色主题。您可以通过点击右上角的切换按钮在两种模式之间切换,一旦切换,它将记住您的选择。
[ 返回顶部 ]
与 ChatGPT 的比较
虽然 ChatGPT 提供了很棒的对话 AI 体验,但它缺少许多用户渴望的功能。
| 功能 | SlickGPT | ChatGPT Plus |
| ------------------------------------ | -------- | ---------------------------- |
| 使用不同的模型 | ✅ | ✅ |
| 聊天记录 | ✅ | ✅ |
| 突出显示 / 格式化代码 | ✅ | ✅ |
| 使用您自己的 API 密钥 | ✅ | ✅ |
| 编辑和分支消息 | ✅ | ✅ |
| 停止生成 | ✅ | ✅ |
| 分享和继续聊天 | ✅ | (✅) (无法导入) |
| 自我托管 / 本地运行 | ✅ | ❌ |
| 设置上下文 / 系统消息 | ✅ | ❌ |
| 更改模型配置 | ✅ | ❌ |
| 不需要登录 | ✅ | ❌ |
| 令牌成本计算 | ✅ | ❌ |
| 移动优先设计 | ✅ | ❌ |
| 内部上下文提示(内容管理) | ❌ | 硬编码,不能更改 |
| 无限使用订阅 | 5,99 €/m | 18,00 €/m |
如您所见,SlickGPT 包含了满足广泛用户需求的几项附加功能,例如自我托管服务、使用本地聊天记录、分享聊天和自定义聊天配置。此外,SlickGPT 不需要登录,从而实现更快、更流畅的访问。这些附加功能使 SlickGPT 成为寻求高级 ChatGPT 体验的用户的更灵活和方便的解决方案。
<p align="right">[<a href="#readme-top">返回顶部</a>]</p>
<!-- 路线图 -->
## 路线图
- [x] 增加亮/暗模式切换
- [x] 可编辑消息和分支聊天记录
- [x] 停止完成生成
- [ ] 增加主题切换器
- [ ] 更多文档
- [ ] 国际化
- [ ] 英语
- [ ] 德语
查看 [未解决的问题](https://github.com/ShipBit/slickgpt/issues) 了解更多提议的功能和已知问题。
<p align="right">[<a href="#readme-top">返回顶部</a>]</p>
## 开发
SlickGPT 使用 [Svelte](https://svelte.dev/)、[SvelteKit](https://kit.svelte.dev/) 和 [Skeleton UI](https://www.skeleton.dev/) 作为前端基础。
SlickGPT 的秘诀在于几乎所有内容都存储在浏览器的 `localStorage` 中。当用户与 [OpenAI API](https://platform.openai.com/) 通信时,会突破此边界。问题是简单的 POST 请求,而响应则通过原生 [EventSource API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) 发送回客户端,并像 ChatGPT 客户端一样呈现为“实时流”。
另一个情况是用户使用“无用户分享”功能与他人分享聊天。这时 SlickGPT 会将相应的 `localStorage` 对象转储到一个简单的 [Firebase 实时数据库](https://firebase.google.com/docs/database) 中,并用一个随机的 `updateToken` 标记它。一项无服务器的(边缘)功能会将这个令牌发送回客户端,客户端将其存储在原始聊天记录旁边的 `localStorage` 中。这个令牌可以后来用于更新或取消分享聊天。
SlickGPT 使用 Svelte 端点作为客户端和外部 API 之间的“代理”。这样,客户端根本不需要知道任何 Firebase 密钥,如果需要的话,您有一个很好的起点来实现更复杂的“后端”逻辑。
### 设置环境变量
将 `.env.example` 的内容复制到一个名为 `.env` 的新文件中,并用您的 Firebase 数据填充变量。您可以从 Firebase 控制台的项目设置中获取 `firebaseConfig`。
在开发时,Vite 将是您的“服务器”,并在本地计算机上运行端点功能。它通过 SvelteKits 的 `$env/static/private` 导入访问您的环境变量。
对于生产环境,端点预配置为在 Vercel 上运行为边缘功能。为此,您只需在实例上线时向 Vercel 提供所需环境变量即可。您可以在导入项目到 Vercel 时,或在项目设置中,或使用 Vercel CLI 后粘贴 `.env` 文件的内容。
### 启动客户端
克隆后,在根目录中运行常用的 SvelteKit 命令:
```bash
npm i # 或者 yarn,pnpm 等
npm run dev -- --open
就是这样!您现在应该可以使用 Svelte / Vite 所知和喜爱的所有热重载便利来进行开发了。
我可以在没有 Firebase 的情况下运行吗?
当然。最快最简单的方法是禁用 SlickGPT 中的“分享聊天”功能,如果您不需要它的话。我们有一个 未解决的问题,其中有很好的起点。
另一个(更好的)方法是使用任何其他数据库来转储 SlickGPT 的序列化 Chat 对象。这应该是一个简单的任务,因为客户端从未直接与 Firebase 通话,如上所述,SlickGPT 没有利用任何特定于 Firebase 的功能。只要您的数据库能以 slug 作为键来保存和加载聊天记录,您应该就可以了。您需要编辑的唯一文件是 share endpoint。
我可以在 Vercel 以外的提供商上托管吗?
有一个 未解决的问题 ,其中包含有关 Netlify 的一些额外信息。我们尚未测试其他提供商,但只要您的提供商能够运行 SvelteKit 应用程序和无服务器功能,应该没问题。我们已经看到一个利用 Railway 的分支。
您还可以让客户端直接访问 Firebase 和 OpenAI API,以完全摆脱无服务器功能的要求。
我如何使用另一个 Skeleton 主题?
只需按照官方 Skeleton UI 文档 中的说明操作。而需要更改的代码在 SlickGPT 的 +layout.svelte 文件中。
贡献指南
欢迎贡献!请随时打开拉取请求,报告错误或提交功能请求。参与此项目时,请遵循行为准则和贡献指南。
主要贡献者
Simon Hopstätter
Timo Korinth
[返回顶部]
许可证
此项目是根据 MIT 许可证许可的。
联系方式
SlickGPT 最初由 Simon Hopstätter 和 Timo Korinth 在 Shipbit 创建。
如果您有任何问题,请随时联系我们。
[返回顶部]
[contributors-shield]: https://img.shields.io/github/contributors/ShipBit/slickgpt.svg?style=for-the-badge
[contributors-url]: https://github.com/ShipBit/slickgpt/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/ShipBit/slickgpt.svg?style=for-the-badge
[forks-url]: https://github.com/ShipBit/slickgpt/network/members
[stars-shield]: https://img.shields.io/github/stars/ShipBit/slickgpt.svg?style=for-the-badge
[stars-url]: https://github.com/ShipBit/slickgpt/stargazers
[issues-shield]: https://img.shields.io/github/issues/ShipBit/slickgpt.svg?style=for-the-badge
[issues-url]: https://github.com/ShipBit/slickgpt/issues
[license-shield]: https://img.shields.io/github/license/ShipBit/slickgpt.svg?style=for-the-badge
[license-url]: https://github.com/ShipBit/slickgpt/blob/master/LICENSE
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/company/shipbit/
[slickgpt-screenshot]: static/docu/hero-image.png
[svelte-shield]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge&logo=svelte
[svelte-url]: https://svelte.dev/
[sveltekit-shield]: https://img.shields.io/badge/SvelteKit-4A4A55?style=for-the-badge&logo=svelte
[sveltekit-url]: https://kit.svelte.dev/
[openai-shield]: https://img.shields.io/badge/OpenAI-4A4A55?style=for-the-badge&logo=openai
[openai-url]: https://openai.com/
[skeleton-shield]: https://img.shields.io/badge/Skeleton-4A4A55?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJmaWxsLXRva2VuIiB2aWV3Qm94PSIwIDAgNDAgNDAiPgogICAgPHBhdGgKICAgICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgICAgICAgZD0iTTE5Ljg1NSAxMC4yMWM1LjA3IDAgOS4zOTggMS43MzYgMTIuNDk1IDQuNTg4bC4wNTctLjAxN2MuMzg4LS4xMi43Mi0uMjQ0Ljk5NC0uMzcuODc5LS40MDYgMi4wMzItMS4yMzYgMy40Ni0yLjQ5Mi0uMjMyIDIuMTg4LS40OCAzLjc5NC0uNzQ3IDQuODE4YTE5LjMwNiAxOS4zMDYgMCAwIDEtLjY2MiAxLjk5NCAxNS44NTUgMTUuODU1IDAgMCAxIDEuNzA3IDQuNjcyYzEuMjIxIDYuMDU3LS44NzEgOC43MzUtNS43MjcgMTAuMjMuMDM3LjE4LjA2NS4zNzMuMDg2LjU4LjE3MyAxLjc3Mi0uNzMzIDQuNjMzLTEuODIgNC42MzMtLjcxNiAwLTEuMTgxLS45ODYtMS42OC0yLjQyNi0uMTU1IDEuNjY2LS45MjMgMy41OC0xLjgxMyAzLjU4LS45NTggMC0xLjQ2Ny0xLjc2Ny0yLjIxLTQuMDIyQzIzLjYxOCAzNy43NSAyMy4wNSA0MCAyMi4wNDYgNDBjLTEuMDIgMC0uNDYtMy4xNzctMi4xODEtNC41MjMtOC43MjEuNDctMTYuMDU3LTIuNzE4LTE2LjA1Ny0xMS45MTYgMC0xLjY5My40MDUtMy4zNDYgMS4xNDctNC44OC0uMTMyLS4yNTctLjI1NS0uNTEtLjM3LS43NjEtLjU4LTEuMjY0LTEuMjc1LTMuMTc2LTIuMDg1LTUuNzM3IDIuMDc0IDEuNTMgMy42NjUgMi40NDIgNC43NzIgMi43MzUuMTEuMDI5LjIyNi4wNTUuMzQ2LjA3NyAyLjkwNi0yLjg3OSA3LjI0OC00Ljc4NSAxMi4yMzctNC43ODVaTTE3LjgyIDIyLjYyYy0yLjk0NyAwLTUuMzM2IDIuMjk0LTUuMzM2IDUuMTI0IDAgMi44MyAyLjM4OSA1LjEyNCA1LjMzNiA1LjEyNCAyLjk0NiAwIDUuMzM1LTIuMjk0IDUuMzM1LTUuMTI0IDAtMi43Ni0yLjI3LTUuMDA5LTUuMTE1LTUuMTJabTcuNTczIDYuNGMtLjg5MSAwLTEuMzYyIDEuODgzLTEuMzYyIDIuNzI3IDAgLjY2LjIyNCAxLjAyNC41ODkgMS4wOS44ODUuMDgyLjYxNS0xLjE5NCAxLjA1Ni0xLjE5NC40NyAwIDEuMDIgMS4zMDUgMS40OCAxLjEyOC41NDctLjMyMi4zMzgtMS4wMjQuMTQ5LTEuNTc4LS42NjUtMS4zOTQtMS4wMi0yLjE3My0xLjkxMi0yLjE3M1ptNS44MDEtNi43Yy0yLjAzIDAtMy42NzYgMi4wMTQtMy42NzYgNC41IDAgMi40ODUgMS42NDYgNC41IDMuNjc2IDQuNSAyLjAzIDAgMy42NzctMi4wMTUgMy42NzctNC41IDAtMi40ODYtMS42NDYtNC41LTMuNjc3LTQuNVpNMTguNSAyNWEzIDMgMCAxIDEtLjUgNS45NTggMyAzIDAgMCAwIDAtNS45MTdjLjE2Mi0uMDI3LjMzLS4wNDEuNS0uMDQxWk0zMSAyNGMxLjM4IDAgMi41IDEuMzQzIDIuNSAzcy0xLjEyIDMtMi41IDNjLS4xNzEgMC0uMzM5LS4wMi0uNS0uMDYgMS4xNDEtLjI3OCAyLTEuNDg5IDItMi45NCAwLTEuNDUxLS44NTktMi42NjItMi0yLjk0LjE2MS0uMDQuMzI5LS4wNi41LS4wNlptLjI4NC0xOC41ODYuMzI0LjIwN2MuMTQ2LjA5My4xOS4yODguMDk2LjQzNGwtMi4zOSAzLjY1NWEuMzE0LjMxNCAwIDAgMS0uNDMzLjA5M2wtLjMyNC0uMjA3YS4zMTQuMzE0IDAgMCAxLS4wOTUtLjQzNGwyLjM5LTMuNjU1YS4zMTQuMzE0IDAgMCAxIC40MzItLjA5M1ptLTIzLjE3Ny41NTQgMS45NCAyLjc1Yy4xLjE0MS4wNjYuMzM3LS4wNzYuNDM3bC0uMzE5LjIyYS4zMTQuMzE0IDAgMCAxLS40MzUtLjA3N2wtMS45NC0yLjc0OWEuMzE0LjMxNCAwIDAgMSAuMDc2LS40MzhsLjMxOC0uMjJhLjMxNC4zMTQgMCAwIDEgLjQzNi4wNzdaTTIwLjY4MyAwbC41OCA0LjgyNiAyLjE0Ni0yLjM4NS4wNiA1Ljk0Mi0uNDI2LS4wOTRjLTEuMjQyLS4yNzMtMi4zNjktLjQxLTMuMzc5LS40MWE5LjYzNSA5LjYzNSAwIDAgMC0yLjgyMS4zOTlsLS40NzQuMTQzLjM4Mi03LjQzMiAxLjk2NyAzLjY3NUwyMC42ODMgMFoiCiAgICAgICAgc3R5bGU9ImZpbGw6IHdoaXRlOyIKICAgIC8+Cjwvc3ZnPg==
[skeleton-url]: https://www.skeleton.dev/