[开源] TalkWithGemini 支持 vercel 一键部署,新版本无需代理即可免费使用 Gemini 多模态功能,支持最高 100 万 Token 的图片、音频、视频和文本文档解读。

31 天前
 amery2010

一些朋友应该对 TalkWithGemini 已经不在陌生,这是我作为独立开发者第三次在 V2EX 上发布新版本。

回顾之前的两篇文章:

可能是目前唯一完整支持 Gemini 1.5 Pro 和 Gemini 1.5 Flash 多模态模型的开源聊天框架

[开源] Gemini Pro 极简聊天框架,支持图文聊天和语音对话模式 https://gemini.u14.app/


起初,我只是作为爱好而开发了 TalkWithGemini,作为 Gemini 的基础聊天框架,除了极简之外其实没有太多的亮点。但 V2EX 上的朋友还是给了我不错的反馈,不到一天时间 star 数破百。作为独立开发者而言这是一次不小的激励。

在 Google I/O 2024 发布会之后,Google 开放了更强大的 Gemini 1.5 Pro 和 Gemini 1.5 Flash 。这两个强大的多模态模型,和之前的 Gemini Pro 相比,完全是质的飞跃。为了兼容 Gemini 1.5 系列的接口,我不得不重写底层的对话结构。如果要让模型理解除文字以外的内容,我需要先上传文件,但官方的 npm 包只支持 node 环境,我不得不用几天的时间研究开发了一套通用环境的文件上传功能。这个过程虽然辛苦,但当我看到最后的成果时忽然觉得一切都是值得的。上周发布的版本,一开始反响平平,但想不到经过一些热心的 v 友主动转发,项目开始不断扩散,star 数也在稳步上升。

随着使用人数的增加,大家也开始给出不少需求和反馈。有热心网友一次性给我提了 9 个想法🤣,这得累死我呀。也有一些朋友在使用过程中遇到了一些体验上的问题,也都在项目 issue 中友好的提问。对于这些朋友的需求和想法,我在新版本里几乎都一一实现。我会尽可能让希望这个项目的朋友能得到正向的反馈。


接下来说一说这周痛苦的开发经历...

之前的版本虽然可以上传文件,但由于 vercel 平台的限制,无法上传大于 4MB 的文件,这是一件非常尴尬的事情。为了解决这个问题,我先想到了用 Cloudflare Worker 代理转发的方式,但这种方式的局限性在于,虽然可以上传 500MB 的文件,但在国内无法与 Gemini 正常对话。为了解决这个问题,我想了好几天方案,也翻烂了 Google AI 的官方文档。偶然间发现 Gemini 的文件上传底层使用的是 Google Drive 。在反复研究和尝试之下,发现 Gemini 文件上传其实也支持分片上传,只不过尴尬是分片大小被限制在了 8MB 😅,这让我有**一种“柳暗花明,走错村”的感觉...**即然都到了这一步了,也没理由从头再来,即然 Gemini 接口无法解决问题,那就回过头去想想怎么让 vercel 平台支持大文件上传。功夫不负有心人,在多次尝试下,发现 vercel 的路由重写功能,可以支持 8MB 以上的文件上传。这样一样,整条路就忽然通畅了!在反复测试和完善之后,新版本的文件分片上传功能终于完整实现~虽然后来又遇到了在编译 docker 镜像过程中,动态变量丢失的问题,搞得我一夜没睡,这又是另一个 long long story 了。

新版本除了实现大文件上传功能以外,主要是完善了整个对话框架的细节功能,其中包括十几个热心网友提出的需求。主要更新如下:

您可以通过 https://gemini.u14.app 进行体验,也可以通过使用 vercel 的一键部署功能,拥有专属于你的 Gemini 私人助理。

项目地址:https://github.com/Amery2010/TalkWithGemini

你们的支持( star )是我项目开发的最大动力!我会尽可能会回应所有合理的需求与反馈

这周熬了几天夜,除了开发几乎没怎么出门😅,好在女朋友还能理解我。

1332 次点击
所在节点    分享创造
15 条回复
woorz
31 天前
gemini api 收费的
coter
31 天前
不错,希望加入用户系统,可以保存对话历史
amery2010
31 天前
@woorz Google AI studio 的 key 可以免费申请,每天 1500 次,个人使用完全足够,注意不要使用计费模式下的 key 就可以。
amery2010
31 天前
@coter 有计划做,可能要等几个版本
cyio
30 天前
作者开发给力!再请教几个问题:
1. 文件上传到哪了,上限是多少
2. 语音朗读有办法支持跨语言吗( chatgpt 的可以)
amery2010
30 天前
@cyio
1 、文件都是通过后端服务中转或者直接上传 Google AI Drive ,文件上传后只有查看 mata 信息的权限无法访问和下载源文件。
2 、你问的跨语言是只文本在朗读过程中使用多种语言?还是你问的是中文,希望他用英文朗读文本?如果是后者可以通过设置页面进行语音合成语言类型的设置,前者的话没办法,底层调用的是微软的 edge-tts 服务。
cyio
29 天前
@amery2010 微软有,比如 Jenny Multilingual ,不知道 edge-tts 服务是怎么调的,语音选项里有没有
amery2010
29 天前
@cyio 我底层的 tts 库是接入的免费的服务 api ,可选择的角色较少。
设置-语音服务
合成声源与语音合成是联动的,你可以先选择目标语言,然后选择对应的合成声源

如果对应语言下的合成声源列表中没有你想要的语音包,那就没办法了,毕竟用的是免费的 api
pkxutao
28 天前
谢谢,很方便,提个个人建议: 内容最下端不要显示在输入框下面,在输入框顶端就截止会比较好,不喜欢文字被输入框覆盖
amery2010
27 天前
@pkxutao 后续会考虑进行优化
nfksuk
17 天前
很棒的应用,准备尝试部署。
nfksuk
17 天前
直接使用提示:400: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse: [400 ] User location is not supported for the API use.
amery2010
17 天前
@nfksuk 国内不支持直接访问 Gemini API ,这个问题请参看常见问题部分的解决方案
bian2023
11 天前
@amery2010
> 我先想到了用 Cloudflare Worker 代理转发的方式,但这种方式的局限性在于,虽然可以上传 500MB 的文件,但在国内无法与 Gemini 正常对话。
---
worker 默认域名被墙可以通过绑定自义定域名解决,而且还可以通过自义定路径的方式使用优选 IP 。至于地区不支持问题:国内现在连 CF 数据中心基本都是圣何塞或者洛杉矶的,不专门优选,连到香港数据中心的概率很小,所以 CF worker 连接谷歌的 IP 大概率也是美国的,所以希望考虑下 CF worker 上传的方案(主要是 vercel 每月有流量限制,免费账号我还部署这其他东西,流量不太够)
amery2010
11 天前
目前支持使用 CF worker 作为代理,CF worker 的脚本我也有提供 [如何使用 Cloudflare Worker]( https://github.com/Amery2010/TalkWithGemini/blob/main/docs/How-to-deploy-the-Cloudflare-Worker-api-proxy.md)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1044181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX