与 Gemini 交谈
一键免费部署您的私人 Gemini 应用,支持 Gemini 1.5 Pro、Gemini 1.5 Flash、Gemini Pro 和 Gemini Pro Vision 模型。
简洁的界面,支持图片识别和语音对话
支持 Gemini 1.5 和 Gemini 1.5 Flash 多模态模型
跨平台的应用客户端,支持常驻菜单栏,让您的工作效率翻倍
注意:如果您项目使用过程中遇到问题,可以查看常见问题的已知问题及解决方案。
主要功能
- 在 1 分钟内使用 Vercel 免费一键部署
- 提供体积极小(~4MB)的跨平台客户端(Windows/MacOS/Linux),可以常驻菜单栏,提升办公效率
- 支持多模态模型,可以理解图片、视频、音频和部分文本文档
- 语音模式:让您直接与 Gemini 对话
- 视觉识别,让 Gemini 可以看懂图片内容
- 助理市场,拥有数百精选的系统指令
- 完整的 Markdown 支持:LaTex 公式、代码高亮等等
- 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话
- 隐私安全,所有数据保存在用户浏览器本地
- 支持 PWA,可以以应用形式运行
- 精心设计的 UI,响应式设计,支持深色模式
- 极快的首屏加载速度,支持流式响应
- 静态部署,支持部署在任何支持静态页面的网站服务,比如 Github Page、Cloudflare、Vercel 等
- 多国语言支持:English、简体中文、繁体中文、日本語、한국어、Español、Deutsch、Français、Português、Русский 以及 العربية
开发计划
- 重构话题广场,引入 Prompt 列表
- 使用 tauri 打包桌面应用
- 实现基于 functionCall 插件
- 支持对话列表
开始使用
- 获取 Gemini API Key
- 单击
- 开始使用
更新代码
如果你想立即更新,可以查看GitHub文档以了解如何将分叉项目与上游代码同步。
您可以关注该项目或关注作者以及时获取发布通知。
访问密码
项目提供访问控制。请在 .env
文件或环境变量页面添加名为 ACCESS_PASSWORD
的环境变量。
添加或修改此环境变量后,请重新部署项目以使更改生效。
自定义模型列表
本项目支持自定义模型列表。请在 .env
文件或环境变量页面添加名为 NEXT_PUBLIC_GEMINI_MODEL_LIST
的环境变量。
默认模型列表使用 all
表示,多个模型之间使用 ,
分隔。
如果需要增加新的模型请直接写入模型名称 all,new-model-name
,或使用 +
符号加上模型名称表示增加,即 all,+new-model-name
。
如果要移除模型列表中的某个模型,请使用 -
符号加上模型名称表示移除,即 all,-existing-model-name
。如果要移除默认模型列表,可以用 -all
表示。
如果要设定默认模型,可以使用 @
符号加上模型名称表示默认模型,即 all,@default-model-name
。
环境变量
GEMINI_API_KEY
(可选)
您的 Gemini api 密钥。 如果您需要“启用”服务器 api,这是必需的。
GEMINI_API_BASE_URL
(可选)
默认值:
https://generativelanguage.googleapis.com
示例:
http://your-gemini-proxy.com
覆盖 Gemini api 请求基本 url。为了避免服务端代理 url 泄漏,不会覆盖前端页面中的链接。
GEMINI_UPLOAD_BASE_URL
(可选)
默认值:
https://generativelanguage.googleapis.com
示例:
http://your-gemini-upload-proxy.com
覆盖 Gemini 文件上传 api 基本 url。为了避免服务端代理 url 泄漏,不会覆盖前端页面中的链接。
NEXT_PUBLIC_GEMINI_MODEL_LIST
(可选)
自定义模型列表,默认为: all。
NEXT_PUBLIC_ASSISTANT_INDEX_URL
(可选)
默认值:
https://chat-agents.lobehub.com
示例:
http://your-assistant-market-proxy.com
覆盖助理市场 api 请求基本 url。会同步调整前端界面中的 api 链接。
NEXT_PUBLIC_UPLOAD_LIMIT
(可选)
文件上传大小限制。默认不限制文件大小。
ACCESS_PASSWORD
(可选)
访问密码。
HEAD_SCRIPTS
(可选)
用于注入的脚本代码可用于统计或错误跟踪。
EXPORT_BASE_PATH
(可选)
仅用于静态部署模式下设置页面基础路径。
最低要求
NodeJS >= 18,Docker >= 20
开发
如果您没安装过 pnpm
npm install -g pnpm
# 1. 先安装nodejs和yarn
# 2. 配置本地变量,请将 `.env.example` 改为 `.env` 或 `.env.local`
# 3. 运行
pnpm install
pnpm dev
部署
容器部署(推荐)
Docker 版本需要在 20 及其以上,否则会提示找不到镜像。
⚠️ 注意:大多数时候,docker 版本会滞后最新版本 1 到 2 天,因此部署后会继续出现“更新存在”的提示,这是正常的。
docker pull xiangfa/talk-with-gemini:latest
docker run -d --name talk-with-gemini -p 5481:3000 xiangfa/talk-with-gemini
您也可以指定其他环境变量:
docker run -d --name talk-with-gemini \
-p 5481:3000 \
-e GEMINI_API_KEY=AIzaSy... \
-e ACCESS_PASSWORD=your-password \
xiangfa/talk-with-gemini
如果您需要指定其他环境变量,请在上述命令中添加 -e key=value
进行指定。
使用 docker-compose.yml
部署:
version: '3.9'
services:
talk-with-gemini:
image: xiangfa/talk-with-gemini
container_name: talk-with-gemini
environment:
- GEMINI_API_KEY=AIzaSy...
- ACCESS_PASSWORD=your-password
ports:
- 5481:3000
⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。
docker pull xiangfa/talk-with-gemini:latest
docker run -d --name talk-with-gemini -p 5481:3000 xiangfa/talk-with-gemini
您也可以指定额外的环境变量:
docker run -d --name talk-with-gemini \
-p 5481:3000 \
-e GEMINI_API_KEY=AIzaSy... \
-e ACCESS_PASSWORD=your-password \
xiangfa/talk-with-gemini
如果您需要指定其他环境变量,请自行在上述命令中增加 -e 环境变量=环境变量值
来指定。
使用 docker-compose.yml
部署:
version: '3.9'
services:
talk-with-gemini:
image: xiangfa/talk-with-gemini
container_name: talk-with-gemini
environment:
- GEMINI_API_KEY=AIzaSy...
- ACCESS_PASSWORD=your-password
ports:
- 5481:3000
静态部署
您也可以直接构建静态页面版本,然后将 out
目录下的所有文件上传到任何支持静态页面的网站服务,比如 Github Page、Cloudflare、Vercel 等。
pnpm build:export
如果您将项目部署在子目录下,在访问时会遇到资源加载失败的情况,请在 .env
文件或者变量设置页面增加 EXPORT_BASE_PATH=/路径/项目名称
。
常见问题
关于 vercel 和 netlify 代理无法上传大文件的解决方案
目前了解到的 vercel 和 netlify 都使用了无服务器的边缘计算,虽然响应速度快,但对于上传文件有大小限制。Cloudflare Worker 对于大文件限制(免费用户 500MB,收费用户 5GB)相对宽松,可以用做 api 代理。如何部署 Cloudflare Worker api 代理
为什么我无法上传 doc、excel、pdf 这类常见文档
目前 Gemini 1.5 Pro
和 Gemini 1.5 Flash
这两个模型支持的大部分的图片、音频、视频和部分文本类的文件,详见支持列表。对于其他文档类型,后续将尝试使用 LangChain.js 来实现。
为什么我用 vercel 一键部署后的网站无法在中国正常访问
vercel 部署后生成的域名在几年前就已经被国内网络屏蔽,但并没有屏蔽服务器的 ip 地址。可以自定义域名,就可以在国内正常访问了。由于 vercel 在国内并没有服务器,所以有时候会出现些许的网络波动,属于正常现象。如何设置域名,可以参考我从网上找到的解决文章Vercel绑定自定义域名。