OpenAI Chat API Alfred 工作流程
🎩 这是一个用于与 GPT-4 🤖💬 进行交互的 OpenAI Chat API Alfred 5 工作流程。它还支持图像生成 🖼️、图像理解 👀、语音转文字 🎤 和文字转语音 🔈。
📦 下载 OpenAI Chat API 工作流程(版本 3.0.1
)
你可以通过以下方式执行上述所有功能:
- Alfred 用户界面 🖥️
- 选定的文本 📝
- 专用的网页用户界面 🌐
网页用户界面由工作流程构建并在你的 Mac 💻 本地运行。API 调用直接在工作流程和 OpenAI 之间进行,确保你的聊天消息不会与除 OpenAI 以外的任何人共享 🔒。此外,OpenAI 不会使用从 API 平台获得的数据进行训练 🚫。
你可以将聊天数据导出到一个简单的 JSON 格式的外部文件 📄,并且可以通过以后导入继续聊天 🔄。
安装
- 安装 Homebrew
- 在终端运行以下命令:
brew install pandoc mpv sox jq duti
- 下载并运行 OpenAI Chat API Workflow
- 设置你的 OpenAI API 密钥
设置快捷键
你可以在工作流程的设置屏幕中设置快捷键。要设置快捷键,双击浅紫色的工作流程元素。
- 打开网页用户界面(推荐)
- 直接查询
- 发送选定的文本
- 屏幕捕获以进行图像理解
- 语音转文字
依赖项
- Alfred 5 加强版
- OpenAI API 密钥
- Pandoc: 将 Markdown 转换为 HTML
- MPV: 播放文字转语音音频流
- Sox: 录制语音输入
- jq: 处理 JSON 格式的聊天记录
- duti: 检测默认的网页浏览器
要开始使用此工作流程,你必须设置环境变量 apikey
,你可以通过创建一个新的 OpenAI 账户来获得它。另外请参阅下面的配置部分。
你还需要安装 pandoc
和 sox
程序。Pandoc 将允许此工作流程将 OpenAI 的 Markdown 响应转换为 HTML 并在你的默认网页浏览器中显示结果,并启用语法高亮(特别是在使用此工作流程生成程序代码时非常有用)。Sox 将允许你录制语音音频,并使用 Whisper 语音转文字 API 将其转换为文字。
要设置依赖项(pandoc
、mpv
、sox
、jq
和 duti
),首先安装 homebrew 并运行以下命令。
brew install pandoc mpv sox jq duti
变更日志
近期变更日志
- 3.1.3: 支持
gpt-4o-2024-08-06
;不再支持gpt-3.5
系列模型; - 3.1.2: 支持
gpt-4o-mini
; - 3.0.1: 将
记忆跨度
的默认值设置为10
- 3.0.0: 支持
gpt-4o
;
执行方法
有三种方法运行工作流程:1) 在 Alfred 用户界面中使用命令,2) 将选定的文本传递给工作流程,3) 使用网页用户界面。另外,还有一种方便的方法来向 GPT 提问。
在 Alfred 用户界面中使用命令
你可以直接在 Alfred 文本框中输入查询文本:
- 方法 1:Alfred 文本框 → 关键词 (
openai
) → 空格/Tab → 输入查询文本 → 选择命令(见下文) - 方法 2:Alfred 文本框 → 输入查询文本 → 选择备用搜索(
OpenAI 查询
)
传递选定的文本
你可以选择你 Mac 上的任何文本并发送给工作流程:
- 方法 1:选择文本 → 通用操作热键 → 选择
OpenAI 查询
- 方法 2:设置一个自定义热键将
选定的文本发送到 OpenAI
使用网页界面
你可以打开一个网页界面
- 方法 1:Alfred 文本框 → 关键词 (
openai-webui
) - 方法 2:设置一个自定义热键打开网页界面
使用默认浏览器
如果你的默认浏览器设定为以下之一并且系统中安装了 duti 命令,网页界面将自动在你选择的浏览器中打开。如果没有,默认将使用 Safari。
- 谷歌 Chrome 浏览器(稳定版、测试版、开发版等)
- 微软 Edge 浏览器(稳定版、测试版、开发版等)
- Brave 浏览器
在更改默认浏览器后,如果网页用户界面运行不正常,请通过执行 openai-restart-server
重启 OpenAI 工作流程服务器。
网页界面模式
通过设置中的 Web UI 模式
选择器切换模式(light
/dark
/auto
)。
简单的直接查询/聊天
要快速与 GPT 聊天:
- 方法 1:输入关键词
gpt
→ 空格/Tab → 输入查询文本(例如:“gpt 什么是大型语言模型?”) - 方法 2:设置一个自定义热键进行
OpenAI 直接查询
基本命令
通过 直接查询
,输入的文本将直接作为提示发送到 OpenAI Chat API。你也可以通过在输入文本之前/之后添加文本来创建查询。
直接查询
输入的文本将直接作为提示发送到 OpenAI Chat API。
前置文本 + 查询
在输入初始文本后,系统会提示用户输入附加文本。附加文本会添加在初始文本之前,并将结果文本用作查询。
追加文本 + 查询
在输入初始文本后,系统会提示用户输入附加文本。附加文本会添加在初始文本之后,并将结果文本用作查询。
生成图像
使用 DALL-E API(dall-e-3
或 dall-e-2
)根据输入的提示生成图像。见下文的 图像生成 部分。
特定目的命令
在 OpenAI 示例页面 上显示的一些示例包含在此工作流程中作为命令。未准备为命令的功能可以通过向上述基本命令提供适当的提示来实现。
编写程序代码 GPT 根据输入的文本生成程序代码和示例输出。你可以指定程序的用途、功能、使用的语言和技术等。
示例输入
创建一个命令行程序,接受一个英语句子并返回语法解析后的输出。提供 Python 代码和示例用法。
示例输出
用你的语言提问
你可以用设置为变量 first_language
的语言提问。
注意:如果 first_language
的值不是 英语
(例如 日语
),查询的结果可能会不准确。
翻译 L1 到 L2
GPT 将变量 first_language
中指定的语言文本翻译为 second_language
指定的语言。
翻译 L2 到 L1
GPT 将 second_language
变量中指定的语言文本翻译为 first_language
变量中指定的语言。
语法纠正
GPT 纠正可能包含语法错误的句子。参见 OpenAI 的描述。
头脑风暴
GPT 根据给定文本帮助你进行创新性构思。
创建学习笔记
GPT 为给定主题提供学习笔记。参见 OpenAI 的描述。
类比生成
GPT 创建类比。参见 OpenAI 的描述。
论文提纲
GPT 为研究主题生成提纲。参见 OpenAI 的描述。
TL;DR 概要
GPT 摘要给定文本。参见 OpenAI 的描述。
为二年级学生总结
GPT 将复杂的文本翻译成更简单的概念。参见 OpenAI 的描述。
关键词
GPT 从文本块中提取关键词。参见 OpenAI 的描述。
图片生成
图片生成可以通过上述命令之一执行。也可以使用网页界面来交互式更改提示,以更接近所需的图像。
当图像生成模式设置为 dall-e-3
时,用户的提示自动扩展为更详细和具体的提示。你也可以编辑扩展后的提示并重新生成图片。
图片理解
图片理解可以通过 openai-vision
命令执行。它启动捕获模式,让你指定要分析的屏幕部分。或者你可以使用 "OpenAI Vision" 文件操作指定图片文件(jpg、jpeg、png、gif)。此模式需要在工作流设置中设置 gpt-4o
或 gpt-4o-mini
模型。
语音合成和语音识别
大多数文本到语音和语音到文本的功能在网页界面上可用。然而,也有一些特定的功能提供为命令,例如音频文件到文本转换和带时间戳的转录。
文本到语音合成
输入的文本或来自 GPT 的应答文本可以使用 OpenAI 的文本到语音 API 以自然的声音朗读。
- 方法一:按
播放 TTS
按钮在网页界面上 - 方法二:选择文本 → 通用动作热键 → 选择
OpenAI Text-to-Speech
语音到文本转换
Whisper API 可以将语音转换为多种语言的文本。请参阅 Whisper API FAQ 了解可用语言和其他限制。
- 方法一:按
语音输入
按钮在网页界面上 - 方法二:Alfred 文本框 → 关键字 (
openai-speech
)
音频文件到文本
你可以选择一个 mp3
、mp4
、flac
、webm
、wav
或 m4a
格式的音频文件(小于 25MB),并将其发送到工作流:
- 选择文件 → 通用动作热键 → 选择
OpenAI Speech-to-Text
录制语音音频并转录
你可以录制语音音频并将其发送到工作流进行转录,使用 Whisper API。录音不得超过 30 分钟,并在此时间后自动停止。录音时间限制为 30 分钟,在此限度后自动停止。
-
Alfred 文本框 → 关键字 (
openai-speech
) → 终端窗口打开并开始录音 -
对内部或外部麦克风讲话 → 按回车键结束录音
-
选择要应用于录制音频的处理
- 转录 (+ 删除录音)
- 转录 (+ 保存录音到桌面)
- 转录并查询 (+ 删除录音)
- 转录并查询 (+ 保存录音到桌面)
- 退出 (+ 删除录音)
- 退出 (+ 保存录音到桌面)
你可以在工作流的设置中选择转录文本的格式为 text
、srt
或 vtt
。以下是 text
和 srt
格式的示例:
其他功能
导入/导出
你可以将聊天数据导出为一个简单的 JSON 格式文件,并通过导入它来恢复对话。
要导出数据,只需在聊天窗口中点击 展示全部聊天
导航到聊天历史页面,然后选择 导出数据
。要导入数据,只需在主页或聊天历史页面点击 导入数据
。
监控 API 使用
要查看当前计费周期的代币使用情况,请在 OpenAI 使用页面键入关键字 openai-usage
。有关计费的更多详细信息,请访问 OpenAI 的计费概述。
配置参数
你可以在此工作流的设置面板中设置各种参数。此处设置的一些参数作为默认值使用,但你可以在网页界面上临时更改这些值。你也可以通过网页界面点击 Open Config
访问设置面板。
必需设置
-
OpenAI API 密钥: 设置您的 OpenAI 密钥。注册 OpenAI 并在 https://platform.openai.com/account/api-keys/ 获取 API 密钥。
-
基本 URL: OpenAI Chat API 的基本 URL。(默认值:
https://api.openai.com/v1
)
Web UI 参数
- 回环地址:
localhost
或127.0.0.1
可以用作 UI 服务器的回环地址。如果 Web UI 的工作不如预期,试试另一种。(默认值:127.0.0.1
) - 流输出: 在默认的网页浏览器中显示结果。如果未勾选,则使用 Alfred 的“大字体”功能来显示结果。(默认值:
已启用
) - 隐藏语音按钮: 启用时,Web UI 上的 TTS 播放和语音输入按钮将被隐藏。
- 网页 UI 模式: 设置您的首选 UI 模式(
light
/dark
/auto
)。(默认值:自动
)
聊天参数
-
模型: 用于工作流程的 OpenAI 聊天模型(默认值:
gpt-4o-mini
)。如果你想使用最新的模型,将其设置为gpt-4o-2024-08-06
。以下是一些目前可用的模型:gpt-4o-mini
gpt-4o-2024-08-06
gpt-4o
-
最大代币: 完成时生成的最大代币数(默认值:
2048
)。如果此参数设置为0
,null
将作为默认值发送到 API(未指定最大代币数)。参见 OpenAI 的文档。 -
温度: 参见 OpenAI 的文档。(默认值:
0.3
) -
Top P: 参见 OpenAI 的文档。(默认值:
1.0
) -
频率惩罚: 参见 OpenAI 的文档。(默认值:
0.0
) -
存在惩罚: 参见 OpenAI 的文档。(默认值:
0.0
) -
记忆跨度: 设置发送到 API 作为上下文的过往对话次数。将此参数设置为
4
意味着 2 次对话(用户 ➔ 助手 ➔ 用户 ➔ 助手)将作为新查询的上下文发送。值越大,消耗的代币越多。(默认值:10
) -
最大字符: 查询中可以包含的最大字符数(默认值:
50000
)。 -
超时: 打开套接字并连接到 API 前等待的秒数(默认值:
10
)。如果连接失败,将在 1 秒后尝试重新连接(最多 20 次)。 -
添加表情符号: 如果启用,GPT 的响应文本中将包含适合内容的表情符号。这是通过在系统内容末尾添加以下句子实现的。(默认值:
已启用
)添加适合响应内容的表情符号。
-
系统内容: 链接到 API 的每个查询的文本作为聊天规范的常规信息。默认值如下:
你是一位友好但专业的顾问,对用户的提示做出各种回答,提出合适的建议,给出有用的建议。你的回答必须简洁、建议性强且准确无误。
图像理解参数
- 图像理解最大尺寸: 发送到图像理解 API 的图像数据大边的最大像素值(
512
到2000
)。较大的图像将被相应地调整大小。(默认值:512
)
图像生成参数
- 图像生成模型: 可用
dall-e-3
和dall-e-2
。(默认值dall-e-3
) - 图像尺寸 (
针对 dall-e-3
): 设置生成图像的尺寸从1024x1024
,1024x1792
,1792x1024
。 (默认值:1024x1024
) - 质量 (
针对 dall-e-3
): 从standard
和hd
选择图像质量。(默认值:standard
) - 风格 (
针对 dall-e-3
): 从vivid
和natural
选择图像风格。(默认值:vivid
) - 图像数量 (
针对 dall-e-2
): 设置图像生成模式生成的图像数量从1
到10
。(默认值:1
) - 图像尺寸 (
针对 dall-e-2
): 设置生成图像的大小从256x256
,512x512
,1024x1024
。(默认值:256x256
)
文本转语音参数
- 文本转语音模型: 可用的 TTS 模型之一:
tts-1
或tts-1-hd
。(默认值:tts-1
) - 文本转语音声音: 生成音频时要使用的声音。支持的声音有:
alloy
,echo
,fable
,onyx
,nova
和shimmer
。(默认值:alloy
) - 文本转语音速度: 生成音频的速度。选择一个从 0.25 到 4.0 的值。(默认值:
1.0
) - 自动文本转语音: 如果启用,结果将使用系统默认的文本转语音语言和语音朗读。(默认值:
已禁用
)
语音转文本参数
-
转录格式: 设置从麦克风输入或音频文件转录的文本格式为
text
,srt
,或vtt
。(默认值:text
) -
录制后的进程 设置录音完成后将执行的默认进程选择(默认值:
转录 [+ 删除录音]
)。- 转录 [+ 删除录音]
- 转录 [+ 保存录音到桌面]
- 转录并查询 [+ 删除录音]
- 转录并查询 [+ 保存录音到桌面]
-
音频转英语: 启用时,Whisper API 会转录输入音频并输出翻译成英语的文本。(默认值:
已禁用
)
其他设置
- 你的母语: 设置你的母语。这种语言在使用 GPT 进行翻译时使用。(默认值:
英语
) - 你的第二语言: 设置你的第二语言。这种语言在使用 GPT 进行翻译时使用。(默认值:
日语
) - 声音: 如果勾选,返回响应时将播放通知声音。(默认值:
已禁用
) - 保存文件路径: 如果设置,结果将保存到指定路径下的 markdown 文件中。(默认值:
未设置
)
环境变量
可以通过点击位于工作流设置屏幕右上角的 [x]
按钮访问环境变量。通常无需更改环境变量的值。
http_keep_alive
: 当首次显示 Web UI 时,该工作流启动一个 HTTP 服务器。之后,如果环境变量设置的时间(秒)内未使用 Web UI,服务器将停止。(默认值:7200
= 2 小时)http_port
: 指定 Web UI 的端口号。(默认值:80
)http_server_wait
: 指定从 HTTP 服务器启动到页面在浏览器中显示的等待时间。(默认值:2.5
)websocket_port
: 指定用于在 Web UI 上显示流式响应的 websocket 通信的端口号。(默认值:8080
)
作者
Yoichiro Hasebe (yohasebe@gmail.com)
许可证
MIT 许可证
免责声明
作者对因使用此软件而可能产生的任何潜在损害不承担责任。