[polish] 支持根据 ASR 结果和元数据,自定义 LLM 润色策略与调用参数
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 38/100
Línea de trabajo
Start by locating the application pipeline between final ASR output and the LLM request, then map the existing ASR metadata and request configuration structures. Design and document the hook’s typed input, structured output, supported overrides, error fallback, and unchanged default behavior. Done when users can skip polishing or override supported request parameters, with examples and tests covering short-text skipping, text-length-based reasoning settings, and disabled-hook compatibility.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
现象
不同语音输入对润色的需求并不相同。短句的 ASR 结果可能已经足够准确,直接输出或使用较低的推理强度即可;较长、较复杂的内容,则可能需要更充分的整理。
希望能够根据每次 ASR 的结果,自动决定是否调用 LLM,以及本次调用使用哪些参数,减少手动切换配置的操作。
功能建议
在 ASR 完成后、LLM 请求发起前,提供一个可选的用户自定义函数,并明确其输入、输出格式。
OpenLess 应公开传入函数的 ASR 结果结构,提供若干文本和 metadata 字段供用户判断。例如:
| 字段示例 | 含义 |
|---|---|
text |
最终转写文本 |
charCount |
文本字符数,并明确空白、标点等的计数规则 |
audioDurationMs |
音频时长 |
language |
识别语言,如可获得 |
confidence |
识别置信度,如 ASR 服务提供 |
asrProvider |
本次使用的 ASR 服务或引擎 |
这些字段可以来自 ASR 返回结果,也可以由 OpenLess 整理或计算。希望文档明确字段类型、单位、可选性和缺失时的表示方式;不同 ASR 服务的置信度若不可直接比较,也应说明其含义。
函数的返回值可以是一个结构化的策略对象,既能决定是否跳过润色,也能覆盖本次 LLM 调用的部分参数,而不局限于 true / false。
使用示例
以下用 JavaScript 示意,不限定实际脚本语言或最终 Hook 接口名称。
示例中的 action 和 request 是建议的返回结构:action 决定是否润色,request 中的字段用于覆盖本次 LLM 请求参数,未指定的参数沿用当前配置。
LLM 参数采用 OpenAI Chat Completions API 的官方写法 reasoning_effort。如果使用 Responses API,对应写法为 reasoning: { effort: "none" } 等。具体支持哪些值取决于所选模型。OpenAI 官方文档
function configurePolish({ charCount }) {
// 少于 5 个字符:跳过 LLM,直接输出 ASR 原文
if (charCount < 5) {
return { action: "skip" };
}
// 5–9 个字符:调用 LLM 润色,但不启用推理
if (charCount < 10) {
return {
action: "polish",
request: { reasoning_effort: "none" },
};
}
// 100 个字符及以上:使用 medium,也可按需改为 low
if (charCount >= 100) {
return {
action: "polish",
request: { reasoning_effort: "medium" },
};
}
// 10–99 个字符:沿用当前润色配置
return { action: "polish" };
}
这些阈值仅用于说明用户可以自定义策略。skip 表示完全不发送 LLM 请求;reasoning_effort: "none" 则仍会调用 LLM 生成润色结果。
长度只是一个示例。开放明确的输入结构和返回协议后,用户还可以结合语言、音频时长、文本内容等制定规则,也可以按需调整其他受支持的 LLM 请求参数。
预期收益
让简单输入更快完成,同时为复杂输入保留更充分的润色能力。用户可以根据自己的 ASR 准确度和使用习惯,在响应速度、调用成本和输出质量之间进行调整。
建议接受标准
- 提供用户自定义策略函数,在最终转写完成后、LLM 请求发起前执行。
- 文档公开函数输入结构,至少包含转写文本及若干可用于判断的 metadata 字段。
- 明确各字段的类型、含义、计算规则,以及不可用时的表示方式。
- 支持通过返回对象跳过润色,或覆盖本次调用的部分 LLM 参数;未指定的参数沿用当前配置。
- 跳过润色时不发送 LLM 请求,直接输出 ASR 原文,并作为正常流程处理。
- 明确可覆盖的参数、对应的 API 格式及适用范围,并说明模型不支持某个参数时的处理方式。
- 提供同时展示“短文本跳过 LLM”和“按文本长度调整推理强度”的示例。
- 未启用该功能时保持现有行为,并明确函数执行异常时的回退方式。
相关讨论
#1032 已提出按字数跳过短输入润色的场景。本请求进一步希望开放 ASR 结果和元数据,以及可编程的润色策略接口。
- Lenguaje dominante
- Rust
- Estrellas
- 3.7k
- Forks
- 349
- Merge medio
- 2 d 14 h
- PR fusionados (30 d)
- 97
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Open-Less/openless
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
[windows] 录音快捷键还不支持设置为ScrllLock键Posiblemente ocupada @HKLHaoBin la tomó hace 10 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Open-Less/openless#1241 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 18/100
Los mantenedores suelen responder en 1 día
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里Posiblemente ocupada @Breadswim la tomó hace 3 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
Los mantenedores suelen responder en 1 día
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400Posiblemente ocupada @Breadswim la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
Los mantenedores suelen responder en 1 día
Todos los issues de Open-Less/openless
Issues similares
-
docs(metrics): replace stale src/metrics.rs line anchors in dashboard-metrics.md with symbol namesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
vfarcic/dot-agent-deck#2079 ·
Los mantenedores suelen responder en 1 día
-
修改文件名时主键盘上的数字无法输入Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
qingjian-team/qingjian#894 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
rubys/roundhouse#1757 ·
-
[Feature] 侧边栏Agent HTTP请求UA适配Abiertoenhancement user-priority/P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
t8y2/dbx#14196 · 1 comentario ·
Los mantenedores suelen responder en 1 día