Photon AI Translator 和做产品的一些思考

news/2025/2/1 2:59:39/

近 4 个月内我一直在做 Apple 平台的产品,虽然从使用量来说「简体中文」用户是占多数,但我一直有做多语言的支持:英语、简体中文和繁体中文。习惯上 Google 翻译的我,基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Translate 的网页,为的是能 ”随时“ 地去把简体中文翻译成繁体中文——当然这个 ”随时“ 可真不是随时,毕竟从 Xcode 切换到 Chrome 再到对应的 Tab 还是需要点功夫。

是的,我知道浏览器划词翻译已经有众多的插件来支持——但是我日常开发工作的主战场,并不是在浏览器。作为使用 MacBook Pro 单屏幕开发的人来说,切换一个窗口都是麻烦的事情。

有没有能帮我加速这个工作流的工具呢?

如果没有,或者找不好,那就很简单:自己做一个。

以上只是需求背景,契机是:Open AI 开放 API 了,我们可以使用同样驱动 ChatGPT 的 GPT-3.5 模型,来接入 AI 到我们自己的工作流了。在社交网络到处充斥着关于 ChatGPT 的消息的时候,你很难不去对它的作用产生思考:

  • 利用 OpenAI API 能实现什么产品?解决什么痛点?
  • 如何在现有产品上接入 OpenAI API,产生更高的价值?

第二点我在开始做一些尝试,但关于第一点,我用它来解决上述背景的需求:我做了一个 Mac 上的 Menu Bar 的翻译 app,并已经在 App Store 上线了。

Photon AI Translator

‎App Store 上的 Photon AI Translator

虽然也是「众多翻译 app」之中的一员,但它依然有自己的一些特色:

  • 纯 Menu Bar 的 Mac app,在你点击 Menu Bar 上的图标之前,它是不会有窗口的,也不会占用你的 Dock 栏的位置。Menu Bar 在 macOS 里始终位于顶部,抛开因为挖孔导致的 Overflow 问题没有被解决外,它是你能随手可达的地方——当然,Overflow 问题,我个人推荐使用 Bartender 4 进行隐藏和整理。
  • 支持翻译、词典、语法检查和提炼信息四种模式,你可以通过 ⌘ + 1-4 来快速切换到对应的模式
  • 翻译模式为直接翻译模式,你可以选择对应的目标语言进行翻译。翻译模式特别新增「App 多语言」模式,对于 Apple 平台或者 Android 开发者来说,你可以复制粘贴你的 localization.strings 或者 strings.xml 内容,会以字典的模式进行翻译——也就是,你不用担心你的 key 会被翻译成对应的语言。
  • 词典目前在英文语境下使用最佳,能给出一个单词的具体词典定义,如果它能用作名词、副词等,都会一并给出。
  • 语法检查仅支持英文,用于检查并返回修复的语法。
  • 提炼信息可以帮助你从一段文本里提炼总结,并以特定的目标语言输出。

当然,这一切都是 OpenAI 驱动,只不过 Prompts 是我自己调的。因此你需要一个自己的 API Key 才能访问——相信我,即便你不用此 app,学会使用 ChatGPT 以及注册好 OpenAI Platform,都会对你今后的工作效率有帮助。

目前仅支持 macOS 13 Ventura,你可以在 App Store 搜索并免费下载使用。

PhotonOpenAIKit 帮你的 app 快速接入 OpenAI

虽然 OpenAI 平台的 API 本身就可以直接通过 HTTP 请求来使用,但官方还是封装了 Python 的库以及一些提供了一些第三方库的 GitHub 参考。但可惜的是 Swift 版本的库目前还不支持 SSE 模式——你看官方 ChatGPT 的字是逐字出来的,是依靠这个模式来实现的:于是乎我又造了一个轮子,叫 PhotonOpenAIKit,来帮助你快速接入 OpenAI。

https://github.com/JuniperPhoton/PhotonOpenAIKit

此库目前仅支持 ChatCompletion,但配合上 GPT-3.5 模型,能满足很大部分的需求了。

更多详情和使用方式,请参考以上 GitHub 库的链接和 README。

做产品背后的一些思考

尽管这看起来像是一个关于 AI 和 ChatGPT 的「跟风」行为——坦白说确实有一方面的考虑在里面,如果现在你不接触多点这块的知识和消息,那么跟真正的互联网可能会慢慢产生信息差,这是从业人员害怕的一个事情。

但对于做的此 app 以及之前做的效率类 app MyerList 和 MyerTidy,我更多考虑的是:

用自己的技术和设计能力,做出最符合自己需求以及审美的工具。如果这同时也能解决潜在的一部分用户需求,那么就太好了,做多点用户体验上的包装以及优化,也希望他们用得舒服。

ChatGPT 以及 LLM 大型语言模型很厉害,它不是一蹴而就的产品,底层技术不是我们一般人或者开发者能学习得来。或许「调 API」是一个看上去没什么技术含量的工作,但「调 API 并用户(我们)带来实际的效率的提升」,也可能正是 OpenAI 平台开放 API 的一个初衷——但更何况,调 API 这事情本身也不是没有技术含量的工作,这里面太多细节和环节,都要做好,还是很花功夫的。

后记

在离职半年多后,我现在很难定义我是不是一个「独立开发者」——因为做的产品,并没有给我带来多少能让我生存的收入,更多的还是在用上班的钱,来体验不一样的「工作」。

之前在 Netflix 看到一部纪录片 Street Food: Asia,里面介绍了很多上了年纪还在做街边小吃的人,对他们来说——他们喜欢这个「工作」,这是一件能做到老的事情。在很多场合下,提起「上班」很多人都会头疼,但我从中感受到,上班跟工作不是一个事情的,根据使用 Photon AI Translator 词典功能,Work 的定义是:

Work (noun): activity involving mental or physical effort done in order to achieve a purpose or result.

只要你为自己的工作设定一个目标,只要完成了就应该是一件值得你高兴的事情,哪怕这个目标并不是通俗意义上的「挣钱」(虽然这是大多数人需要工作的目标)。


http://www.ppmy.cn/news/58883.html

相关文章

Linux套接字编程-2

在上一篇博客中,我们先对套接字编程的内容进行了一个简单涵盖,并详细陈述了UDP协议内容。本篇我们承接上文,讲述完UDP后,我们来讲解TCP。 目录 1.TCP协议 1.1通信两端流程 1.1.1服务端流程 1.1.2客户端流程 1.2套接字相关操…

Java 新的生态型应用开发框架,Solon v2.2.14 发布

Java 新的生态型应用开发框架,Solon :更快、更小、更简单。从零开始构建,有自己的标准规范与开放生态: 150多个生态插件,可以满足各种场景开发大量的国产框架适配,可以为应用软件国产化提供更好支持 相对…

USART串口接收

文章目录 运行环境:1.1 串口接收代码分析1)开启接收中断和空闲中断2)接收存储变量声明和定义3)中断处理函数 2.1实验效果 运行环境: ubuntu18.04.melodic 宏基暗影骑士笔记本 stm32f427IIH6 stlink 9-24v可调电源 usb转串口 杜邦线转4pin 1.1 串口接收…

[Java] 中的具体集合

文章目录 集合根接口List列表(线性表)Queue & Deque双端队列 Set集合HashSet源码应用 TreeSet源码 Map映射Map的底层实现HashMapLinkedHashMapTreeMap Maps methodcompute()merge()replace()remove() Stream流Collections工具类 集合表示一组对象&am…

PHP面试宝典之Laravel篇

artisan常用命令? 查看laravel版本:php artisan --version 重启队列:php artisan queue:restart 监听队列:php artisan queue:listen 删除失败队列:php artisan queue:forget 列出所有失败队列:php artisa…

第十五届“中国电机工程学会杯”全国大学生电工数学建模竞赛

在中国电机工程学会的指导下,在全国各高等学校的鼎力支持下,“中国电机工程学会杯”全国大学生电工数学建模竞赛已成功举办十四届,累计参赛高校千余所,参赛学生近10万人,是目前国内最具影响力、显著提高学生创新意识和…

浅堆深堆解读

浅堆(Shallow Heap) 浅堆是指一个对象所消耗的内存。在32位系统中,一个对象引用会占据4个字节,一个int类型会占据4个字节,long型变量会占据8个字节,每个对象头需要占用8个字节。根据堆快照格式不同&#x…

无人机测试二维码降落。

一、首先要做的就是让NX板卡驱动usb摄像头: 1. 下载usb_cam软件包 sudo apt install ros-melodic-usb-cam2. 启动相机节点: A. 查找摄像头接口 ls /dev/video*B. 在该路径下修改launch文件,换成你自己的摄像头接口 我这里的摄像头接口为…