@thor123141245r/ai-translate 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -68
- package/README.zh-CN.md +212 -0
- package/dist/ai/model-client.d.ts +25 -0
- package/dist/ai/model-client.d.ts.map +1 -0
- package/dist/ai/model-client.js +22 -0
- package/dist/ai/model-client.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -6
- package/dist/cli.js.map +1 -1
- package/dist/i18n/command.d.ts +2 -2
- package/dist/i18n/command.d.ts.map +1 -1
- package/dist/i18n/prompt.d.ts +3 -3
- package/dist/i18n/prompt.d.ts.map +1 -1
- package/dist/i18n/prompt.js +24 -21
- package/dist/i18n/prompt.js.map +1 -1
- package/dist/i18n/translate.d.ts +2 -2
- package/dist/i18n/translate.d.ts.map +1 -1
- package/dist/i18n/translate.js +5 -5
- package/dist/i18n/translate.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/model.d.ts +9 -4
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +89 -49
- package/dist/model.js.map +1 -1
- package/dist/prompt.d.ts +3 -4
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +13 -12
- package/dist/prompt.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
# ai-translate:可复用的 AI 翻译 CLI 与 i18n JSON 批量翻译
|
|
2
2
|
|
|
3
|
-
本仓库是 npm 包 `@thor123141245r/ai-translate`
|
|
4
|
-
- 通用文件翻译:把任意文本文件分块后交给大模型翻译(适合 Markdown、代码注释、技术文档等)
|
|
5
|
-
- i18n JSON 翻译:以 `en.json` 为标准,批量生成/补齐多语言 JSON(严格保留 key 与结构,只翻译字符串 value)
|
|
3
|
+
本仓库是 npm 包 `@thor123141245r/ai-translate` 的源码。
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
它提供两类能力:
|
|
6
|
+
- 通用文件翻译:把任意文本文件分块后交给大模型翻译(适合 Markdown、技术文档、代码注释等)
|
|
7
|
+
- i18n JSON 翻译:以 `en.json` 为标准,批量生成/补齐其他语言 JSON(严格保留 key 与结构,只翻译字符串 value)
|
|
8
|
+
|
|
9
|
+
核心设计原则是:结构在本地处理,模型只做翻译。避免把大体量结构化文件整段塞进模型上下文导致不稳定。
|
|
8
10
|
|
|
9
11
|
## 功能概览
|
|
10
12
|
- CLI:
|
|
11
13
|
- `ai-translate` 通用文件翻译
|
|
12
14
|
- `ai-translate i18n` i18n JSON 批量翻译
|
|
13
|
-
-
|
|
14
|
-
- 配置:`.ai-translate.json
|
|
15
|
-
- 兼容多模型提供方:ollama / openai / anthropic / mistral / deepseek(通过
|
|
15
|
+
- 可复用模块:`AiTranslateTransform`、`TextSplitterStream`、`translateI18nDir`
|
|
16
|
+
- 配置:`.ai-translate.json`(支持环境变量覆盖)
|
|
17
|
+
- 兼容多模型提供方:ollama / openai / openai-compatible / anthropic / mistral / deepseek(通过 Vercel AI SDK)
|
|
16
18
|
- i18n 专用能力:
|
|
17
|
-
-
|
|
19
|
+
- 只翻译 value,不改 key 与结构
|
|
18
20
|
- 批处理调用,避免上下文混乱
|
|
19
21
|
- 占位符保护(例如 `{{name}}`、`{name}`、`%s`)
|
|
20
22
|
- 本地缓存,减少重复翻译
|
|
21
23
|
|
|
22
|
-
##
|
|
24
|
+
## CLI
|
|
23
25
|
|
|
24
|
-
###
|
|
26
|
+
### 通用翻译参数
|
|
25
27
|
| 参数 | 作用 | 备注 |
|
|
26
28
|
| --- | --- | --- |
|
|
27
29
|
| `-h`, `--help` | 输出帮助信息 | |
|
|
@@ -31,11 +33,11 @@
|
|
|
31
33
|
| `-t`, `--to LANG` | 目标语言 | 可用英文名或 BCP47 代码 |
|
|
32
34
|
| `-i`, `--input FILE` | 输入文件路径 | |
|
|
33
35
|
| `-o`, `--output FILE` | 输出文件路径 | |
|
|
34
|
-
| `--format FORMAT` | 指定输入格式 |
|
|
35
|
-
| `set KEY VALUE` | 写入配置项 |
|
|
36
|
-
| `i18n` |
|
|
36
|
+
| `--format FORMAT` | 指定输入格式 | cpp/go/java/js/php/proto/python/rst/ruby/rust/scala/swift/markdown/latex/html |
|
|
37
|
+
| `set KEY VALUE` | 写入配置项 | 见配置说明 |
|
|
38
|
+
| `i18n` | i18n JSON 批量翻译 | 只翻译 value |
|
|
37
39
|
|
|
38
|
-
###
|
|
40
|
+
### 配置项
|
|
39
41
|
| 参数 | 作用 | 默认值 |
|
|
40
42
|
| --- | --- | --- |
|
|
41
43
|
| `provider` | 模型提供方 | `ollama` |
|
|
@@ -48,46 +50,106 @@
|
|
|
48
50
|
|
|
49
51
|
## 快速开始
|
|
50
52
|
|
|
51
|
-
###
|
|
52
|
-
无需全局安装,推荐直接用 `npx` / `pnpx`:
|
|
53
|
+
### npx / pnpx 运行
|
|
53
54
|
```bash
|
|
54
55
|
npx @thor123141245r/ai-translate --help
|
|
55
56
|
pnpx @thor123141245r/ai-translate --help
|
|
56
57
|
```
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
### 选择模型提供方(要真正翻译必须配置)
|
|
60
|
+
本工具需要能访问某个大模型提供方;如果未配置 provider 或未提供 key,翻译调用会失败。
|
|
61
|
+
|
|
62
|
+
下面任选一种方式:
|
|
63
|
+
|
|
64
|
+
#### 方式 A:OpenAI(云)
|
|
65
|
+
先配置环境变量:
|
|
66
|
+
```bash
|
|
67
|
+
export OPENAI_API_KEY="你的key"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
再设置 provider(会写入 `.ai-translate.json`):
|
|
71
|
+
```bash
|
|
72
|
+
npx @thor123141245r/ai-translate set provider openai
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 方式 B:Anthropic(云)
|
|
76
|
+
```bash
|
|
77
|
+
export ANTHROPIC_API_KEY="你的key"
|
|
78
|
+
npx @thor123141245r/ai-translate set provider anthropic
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### 方式 C:Mistral(云)
|
|
82
|
+
```bash
|
|
83
|
+
export MISTRAL_API_KEY="你的key"
|
|
84
|
+
npx @thor123141245r/ai-translate set provider mistral
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### 方式 D:DeepSeek(云)
|
|
88
|
+
```bash
|
|
89
|
+
export DEEPSEEK_API_KEY="你的key"
|
|
90
|
+
npx @thor123141245r/ai-translate set provider deepseek
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### 方式 E:Ollama(本地)
|
|
94
|
+
启动 Ollama,并确保 `OLLAMA_BASE_URL` 可访问(默认 `http://127.0.0.1:11434`,内部会自动补齐 `/v1`)。
|
|
95
|
+
```bash
|
|
96
|
+
export OLLAMA_BASE_URL="http://127.0.0.1:11434"
|
|
97
|
+
npx @thor123141245r/ai-translate set provider ollama
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### 方式 F:OpenAI Compatible(市面大多数模型)
|
|
101
|
+
只要模型提供方支持 OpenAI Compatible API,就可以直接接入:
|
|
102
|
+
```bash
|
|
103
|
+
export AI_TRANSLATE_API_KEY="你的key"
|
|
104
|
+
export AI_TRANSLATE_BASE_URL="https://your-compatible-endpoint"
|
|
105
|
+
npx @thor123141245r/ai-translate set provider openai-compatible
|
|
106
|
+
npx @thor123141245r/ai-translate set model your-model-name
|
|
107
|
+
```
|
|
108
|
+
说明:
|
|
109
|
+
- `AI_TRANSLATE_BASE_URL` 若未包含 `/v1`,会自动补齐
|
|
110
|
+
- 也可改用 `OPENAI_API_KEY` / `OPENAI_BASE_URL`(同样会被识别)
|
|
111
|
+
- `openai-compatible` 必须提供 `baseUrl`
|
|
112
|
+
|
|
113
|
+
补充说明:
|
|
114
|
+
- `AI_TRANSLATE_API_KEY` 会覆盖各 provider 的 `*_API_KEY`
|
|
115
|
+
- `AI_TRANSLATE_BASE_URL` 会覆盖各 provider 的 `*_BASE_URL` 或 `OLLAMA_BASE_URL`
|
|
116
|
+
- `baseUrl` 若未包含 `/v1`,会自动补齐
|
|
117
|
+
|
|
118
|
+
### 本地开发
|
|
59
119
|
```bash
|
|
60
120
|
npm install
|
|
61
121
|
npm run build
|
|
62
122
|
```
|
|
63
123
|
|
|
64
|
-
|
|
124
|
+
## 用法
|
|
125
|
+
|
|
126
|
+
### 通用文件翻译
|
|
65
127
|
```bash
|
|
66
|
-
#
|
|
128
|
+
# 翻译文件
|
|
67
129
|
node dist/bin/ai-translate.js -f Spanish -t English -i input.md -o output.md
|
|
68
130
|
|
|
69
|
-
#
|
|
131
|
+
# 从 stdin 读取,并使用当前目录的配置文件
|
|
70
132
|
echo "translate" | node dist/bin/ai-translate.js -f en -t en -c .
|
|
71
133
|
```
|
|
72
134
|
|
|
73
|
-
|
|
74
|
-
1.
|
|
75
|
-
2.
|
|
76
|
-
3.
|
|
77
|
-
4.
|
|
135
|
+
工作方式:
|
|
136
|
+
1. 通过 `--format` 或文件扩展名推断格式
|
|
137
|
+
2. 将输入按 chunkSize 分块(默认 1000)
|
|
138
|
+
3. 对每个分块使用统一 Prompt 调用模型翻译
|
|
139
|
+
4. 尽量保留原始空白与结构
|
|
78
140
|
|
|
79
|
-
### i18n JSON
|
|
80
|
-
|
|
141
|
+
### i18n JSON 翻译(以 en.json 为标准)
|
|
142
|
+
不要把 `en.json` 当纯文本翻译,这很容易破坏 JSON 语法或把 key 翻译掉。
|
|
143
|
+
请使用 `i18n` 子命令:只翻译叶子字符串 value。
|
|
81
144
|
|
|
82
145
|
```bash
|
|
83
|
-
#
|
|
146
|
+
# 用 npx 直接运行
|
|
84
147
|
npx @thor123141245r/ai-translate i18n --base ./src/i18n/pages/sora-watermask-remover --source en --targets ru
|
|
85
148
|
|
|
86
|
-
# 目录内:存在 en.json / ru.json / de.json ...
|
|
87
149
|
# 默认 mode=fill:保留已有翻译,只补齐缺失项
|
|
88
150
|
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en
|
|
89
151
|
|
|
90
|
-
#
|
|
152
|
+
# 指定目标语言(即使目标文件不存在也会生成)
|
|
91
153
|
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en --targets ru,de
|
|
92
154
|
|
|
93
155
|
# 覆盖重翻(慎用)
|
|
@@ -97,28 +159,24 @@ node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remove
|
|
|
97
159
|
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en --dry
|
|
98
160
|
```
|
|
99
161
|
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
- 本地解析 JSON
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
162
|
+
工作方式:
|
|
163
|
+
- 从 `--base` 目录读取源文件(默认 `{source}.json`,例如 `en.json`)
|
|
164
|
+
- 目标文件默认 `{lang}.json`(例如 `ru.json`)
|
|
165
|
+
- 本地解析 JSON,提取所有“叶子字符串 value”作为待翻译单元
|
|
166
|
+
- 通过批处理调用模型(模型不会拿到整份 JSON)
|
|
167
|
+
- 按原 key 路径写回翻译结果,严格不改 key
|
|
168
|
+
- 默认在目录下写入缓存 `.ai-translate.cache.json`,减少重复翻译
|
|
107
169
|
|
|
108
|
-
|
|
170
|
+
i18n 常用参数:
|
|
109
171
|
- `--mode fill`:只补齐缺失项(推荐默认)
|
|
110
|
-
- `--mode overwrite
|
|
111
|
-
- `--mode prune
|
|
112
|
-
- `--batchMaxItems` / `--batchMaxChars
|
|
113
|
-
- `--cache`:自定义缓存文件名(相对于 `--base
|
|
114
|
-
|
|
115
|
-
### 开发态直接运行
|
|
116
|
-
```bash
|
|
117
|
-
npm run dev:cli -- -f en -t zh-CN -i input.md -o output.md
|
|
118
|
-
```
|
|
172
|
+
- `--mode overwrite`:重翻全部字符串 value
|
|
173
|
+
- `--mode prune`:对齐结构并清理多余 key
|
|
174
|
+
- `--batchMaxItems` / `--batchMaxChars`:控制批处理大小
|
|
175
|
+
- `--cache`:自定义缓存文件名(相对于 `--base`)
|
|
119
176
|
|
|
120
177
|
## 配置说明
|
|
121
178
|
配置文件名为 `.ai-translate.json`,可通过命令行写入:
|
|
179
|
+
|
|
122
180
|
```bash
|
|
123
181
|
node dist/bin/ai-translate.js set provider ollama
|
|
124
182
|
node dist/bin/ai-translate.js set apiKey YOUR_API_KEY
|
|
@@ -126,38 +184,23 @@ node dist/bin/ai-translate.js set model qwen2.5:7b
|
|
|
126
184
|
node dist/bin/ai-translate.js set chunkSize 1000
|
|
127
185
|
```
|
|
128
186
|
|
|
129
|
-
支持的配置项:
|
|
130
|
-
- provider
|
|
131
|
-
- model
|
|
132
|
-
- apiKey
|
|
133
|
-
- baseUrl
|
|
134
|
-
- temperature
|
|
135
|
-
- maxRetries
|
|
136
|
-
- chunkSize
|
|
137
|
-
|
|
138
187
|
## 环境变量优先级
|
|
139
|
-
|
|
188
|
+
优先级:环境变量 > 配置文件 > 默认值。
|
|
140
189
|
|
|
141
|
-
|
|
190
|
+
通用环境变量:
|
|
142
191
|
- `AI_TRANSLATE_API_KEY`
|
|
143
192
|
- `AI_TRANSLATE_BASE_URL`
|
|
144
193
|
|
|
145
|
-
|
|
194
|
+
提供方环境变量:
|
|
146
195
|
- `OPENAI_API_KEY` / `OPENAI_BASE_URL`
|
|
147
196
|
- `ANTHROPIC_API_KEY` / `ANTHROPIC_BASE_URL`
|
|
148
197
|
- `MISTRAL_API_KEY` / `MISTRAL_BASE_URL`
|
|
149
198
|
- `DEEPSEEK_API_KEY` / `DEEPSEEK_BASE_URL`
|
|
150
199
|
- `OLLAMA_BASE_URL`
|
|
200
|
+
- `OPENAI_API_KEY` / `OPENAI_BASE_URL` 也可用于 `openai-compatible`
|
|
151
201
|
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
- 未设置 apiKey 时,将由各 SDK 自行读取其默认环境变量
|
|
155
|
-
|
|
156
|
-
## 复用说明
|
|
157
|
-
本实现依赖 LangChain 的官方 SDK 与 `@commenthol/ai-translate` 的设计模式:
|
|
158
|
-
- 文本分块使用 `@langchain/textsplitters`
|
|
159
|
-
- 模型调用使用 `@langchain/*` 系列 ChatModel
|
|
160
|
-
- 配置管理使用 `@commenthol/app-config`
|
|
202
|
+
补充说明:
|
|
203
|
+
- `baseUrl` 若未包含 `/v1`,会自动补齐
|
|
161
204
|
|
|
162
205
|
## 注意事项
|
|
163
206
|
- i18n 场景请优先使用 `ai-translate i18n`,不要直接把 `en.json` 当纯文本翻译
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# ai-translate:可复用的 AI 翻译 CLI 与 i18n JSON 批量翻译
|
|
2
|
+
|
|
3
|
+
本仓库是 npm 包 `@thor123141245r/ai-translate` 的源码。
|
|
4
|
+
|
|
5
|
+
它提供两类能力:
|
|
6
|
+
- 通用文件翻译:把任意文本文件分块后交给大模型翻译(适合 Markdown、技术文档、代码注释等)
|
|
7
|
+
- i18n JSON 翻译:以 `en.json` 为标准,批量生成/补齐其他语言 JSON(严格保留 key 与结构,只翻译字符串 value)
|
|
8
|
+
|
|
9
|
+
核心设计原则是:结构在本地处理,模型只做翻译。避免把大体量结构化文件整段塞进模型上下文导致不稳定。
|
|
10
|
+
|
|
11
|
+
## 功能概览
|
|
12
|
+
- CLI:
|
|
13
|
+
- `ai-translate` 通用文件翻译
|
|
14
|
+
- `ai-translate i18n` i18n JSON 批量翻译
|
|
15
|
+
- 可复用模块:`AiTranslateTransform`、`TextSplitterStream`、`translateI18nDir`
|
|
16
|
+
- 配置:`.ai-translate.json`(支持环境变量覆盖)
|
|
17
|
+
- 兼容多模型提供方:ollama / openai / openai-compatible / anthropic / mistral / deepseek(通过 Vercel AI SDK)
|
|
18
|
+
- i18n 专用能力:
|
|
19
|
+
- 只翻译 value,不改 key 与结构
|
|
20
|
+
- 批处理调用,避免上下文混乱
|
|
21
|
+
- 占位符保护(例如 `{{name}}`、`{name}`、`%s`)
|
|
22
|
+
- 本地缓存,减少重复翻译
|
|
23
|
+
|
|
24
|
+
## CLI
|
|
25
|
+
|
|
26
|
+
### 通用翻译参数
|
|
27
|
+
| 参数 | 作用 | 备注 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `-h`, `--help` | 输出帮助信息 | |
|
|
30
|
+
| `-v`, `--version` | 输出版本号 | |
|
|
31
|
+
| `-c`, `--config DIR` | 指定配置目录或配置文件路径 | 读取 `.ai-translate.json` |
|
|
32
|
+
| `-f`, `--from LANG` | 源语言 | 可用英文名或 BCP47 代码 |
|
|
33
|
+
| `-t`, `--to LANG` | 目标语言 | 可用英文名或 BCP47 代码 |
|
|
34
|
+
| `-i`, `--input FILE` | 输入文件路径 | |
|
|
35
|
+
| `-o`, `--output FILE` | 输出文件路径 | |
|
|
36
|
+
| `--format FORMAT` | 指定输入格式 | cpp/go/java/js/php/proto/python/rst/ruby/rust/scala/swift/markdown/latex/html |
|
|
37
|
+
| `set KEY VALUE` | 写入配置项 | 见配置说明 |
|
|
38
|
+
| `i18n` | i18n JSON 批量翻译 | 只翻译 value |
|
|
39
|
+
|
|
40
|
+
### 配置项
|
|
41
|
+
| 参数 | 作用 | 默认值 |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| `provider` | 模型提供方 | `ollama` |
|
|
44
|
+
| `model` | 模型名称 | `qwen2.5:7b` |
|
|
45
|
+
| `apiKey` | 模型 API Key | 空 |
|
|
46
|
+
| `baseUrl` | 模型 Base URL | 空 |
|
|
47
|
+
| `temperature` | 模型温度 | `0.1` |
|
|
48
|
+
| `maxRetries` | 最大重试次数 | `10` |
|
|
49
|
+
| `chunkSize` | 文本分块大小 | `1000` |
|
|
50
|
+
|
|
51
|
+
## 快速开始
|
|
52
|
+
|
|
53
|
+
### npx / pnpx 运行
|
|
54
|
+
```bash
|
|
55
|
+
npx @thor123141245r/ai-translate --help
|
|
56
|
+
pnpx @thor123141245r/ai-translate --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 选择模型提供方(要真正翻译必须配置)
|
|
60
|
+
本工具需要能访问某个大模型提供方;如果未配置 provider 或未提供 key,翻译调用会失败。
|
|
61
|
+
|
|
62
|
+
下面任选一种方式:
|
|
63
|
+
|
|
64
|
+
#### 方式 A:OpenAI(云)
|
|
65
|
+
先配置环境变量:
|
|
66
|
+
```bash
|
|
67
|
+
export OPENAI_API_KEY="你的key"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
再设置 provider(会写入 `.ai-translate.json`):
|
|
71
|
+
```bash
|
|
72
|
+
npx @thor123141245r/ai-translate set provider openai
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 方式 B:Anthropic(云)
|
|
76
|
+
```bash
|
|
77
|
+
export ANTHROPIC_API_KEY="你的key"
|
|
78
|
+
npx @thor123141245r/ai-translate set provider anthropic
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### 方式 C:Mistral(云)
|
|
82
|
+
```bash
|
|
83
|
+
export MISTRAL_API_KEY="你的key"
|
|
84
|
+
npx @thor123141245r/ai-translate set provider mistral
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### 方式 D:DeepSeek(云)
|
|
88
|
+
```bash
|
|
89
|
+
export DEEPSEEK_API_KEY="你的key"
|
|
90
|
+
npx @thor123141245r/ai-translate set provider deepseek
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### 方式 E:Ollama(本地)
|
|
94
|
+
启动 Ollama,并确保 `OLLAMA_BASE_URL` 可访问(默认 `http://127.0.0.1:11434`,内部会自动补齐 `/v1`)。
|
|
95
|
+
```bash
|
|
96
|
+
export OLLAMA_BASE_URL="http://127.0.0.1:11434"
|
|
97
|
+
npx @thor123141245r/ai-translate set provider ollama
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### 方式 F:OpenAI Compatible(市面大多数模型)
|
|
101
|
+
只要模型提供方支持 OpenAI Compatible API,就可以直接接入:
|
|
102
|
+
```bash
|
|
103
|
+
export AI_TRANSLATE_API_KEY="你的key"
|
|
104
|
+
export AI_TRANSLATE_BASE_URL="https://your-compatible-endpoint"
|
|
105
|
+
npx @thor123141245r/ai-translate set provider openai-compatible
|
|
106
|
+
npx @thor123141245r/ai-translate set model your-model-name
|
|
107
|
+
```
|
|
108
|
+
说明:
|
|
109
|
+
- `AI_TRANSLATE_BASE_URL` 若未包含 `/v1`,会自动补齐
|
|
110
|
+
- 也可改用 `OPENAI_API_KEY` / `OPENAI_BASE_URL`(同样会被识别)
|
|
111
|
+
- `openai-compatible` 必须提供 `baseUrl`
|
|
112
|
+
|
|
113
|
+
补充说明:
|
|
114
|
+
- `AI_TRANSLATE_API_KEY` 会覆盖各 provider 的 `*_API_KEY`
|
|
115
|
+
- `AI_TRANSLATE_BASE_URL` 会覆盖各 provider 的 `*_BASE_URL` 或 `OLLAMA_BASE_URL`
|
|
116
|
+
- `baseUrl` 若未包含 `/v1`,会自动补齐
|
|
117
|
+
|
|
118
|
+
### 本地开发
|
|
119
|
+
```bash
|
|
120
|
+
npm install
|
|
121
|
+
npm run build
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 用法
|
|
125
|
+
|
|
126
|
+
### 通用文件翻译
|
|
127
|
+
```bash
|
|
128
|
+
# 翻译文件
|
|
129
|
+
node dist/bin/ai-translate.js -f Spanish -t English -i input.md -o output.md
|
|
130
|
+
|
|
131
|
+
# 从 stdin 读取,并使用当前目录的配置文件
|
|
132
|
+
echo "translate" | node dist/bin/ai-translate.js -f en -t en -c .
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
工作方式:
|
|
136
|
+
1. 通过 `--format` 或文件扩展名推断格式
|
|
137
|
+
2. 将输入按 chunkSize 分块(默认 1000)
|
|
138
|
+
3. 对每个分块使用统一 Prompt 调用模型翻译
|
|
139
|
+
4. 尽量保留原始空白与结构
|
|
140
|
+
|
|
141
|
+
### i18n JSON 翻译(以 en.json 为标准)
|
|
142
|
+
不要把 `en.json` 当纯文本翻译,这很容易破坏 JSON 语法或把 key 翻译掉。
|
|
143
|
+
请使用 `i18n` 子命令:只翻译叶子字符串 value。
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# 用 npx 直接运行
|
|
147
|
+
npx @thor123141245r/ai-translate i18n --base ./src/i18n/pages/sora-watermask-remover --source en --targets ru
|
|
148
|
+
|
|
149
|
+
# 默认 mode=fill:保留已有翻译,只补齐缺失项
|
|
150
|
+
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en
|
|
151
|
+
|
|
152
|
+
# 指定目标语言(即使目标文件不存在也会生成)
|
|
153
|
+
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en --targets ru,de
|
|
154
|
+
|
|
155
|
+
# 覆盖重翻(慎用)
|
|
156
|
+
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en --targets ru --mode overwrite
|
|
157
|
+
|
|
158
|
+
# 仅预览统计(不写文件)
|
|
159
|
+
node dist/bin/ai-translate.js i18n --base ./src/i18n/pages/sora-watermask-remover --source en --dry
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
工作方式:
|
|
163
|
+
- 从 `--base` 目录读取源文件(默认 `{source}.json`,例如 `en.json`)
|
|
164
|
+
- 目标文件默认 `{lang}.json`(例如 `ru.json`)
|
|
165
|
+
- 本地解析 JSON,提取所有“叶子字符串 value”作为待翻译单元
|
|
166
|
+
- 通过批处理调用模型(模型不会拿到整份 JSON)
|
|
167
|
+
- 按原 key 路径写回翻译结果,严格不改 key
|
|
168
|
+
- 默认在目录下写入缓存 `.ai-translate.cache.json`,减少重复翻译
|
|
169
|
+
|
|
170
|
+
i18n 常用参数:
|
|
171
|
+
- `--mode fill`:只补齐缺失项(推荐默认)
|
|
172
|
+
- `--mode overwrite`:重翻全部字符串 value
|
|
173
|
+
- `--mode prune`:对齐结构并清理多余 key
|
|
174
|
+
- `--batchMaxItems` / `--batchMaxChars`:控制批处理大小
|
|
175
|
+
- `--cache`:自定义缓存文件名(相对于 `--base`)
|
|
176
|
+
|
|
177
|
+
## 配置说明
|
|
178
|
+
配置文件名为 `.ai-translate.json`,可通过命令行写入:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
node dist/bin/ai-translate.js set provider ollama
|
|
182
|
+
node dist/bin/ai-translate.js set apiKey YOUR_API_KEY
|
|
183
|
+
node dist/bin/ai-translate.js set model qwen2.5:7b
|
|
184
|
+
node dist/bin/ai-translate.js set chunkSize 1000
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## 环境变量优先级
|
|
188
|
+
优先级:环境变量 > 配置文件 > 默认值。
|
|
189
|
+
|
|
190
|
+
通用环境变量:
|
|
191
|
+
- `AI_TRANSLATE_API_KEY`
|
|
192
|
+
- `AI_TRANSLATE_BASE_URL`
|
|
193
|
+
|
|
194
|
+
提供方环境变量:
|
|
195
|
+
- `OPENAI_API_KEY` / `OPENAI_BASE_URL`
|
|
196
|
+
- `ANTHROPIC_API_KEY` / `ANTHROPIC_BASE_URL`
|
|
197
|
+
- `MISTRAL_API_KEY` / `MISTRAL_BASE_URL`
|
|
198
|
+
- `DEEPSEEK_API_KEY` / `DEEPSEEK_BASE_URL`
|
|
199
|
+
- `OLLAMA_BASE_URL`
|
|
200
|
+
- `OPENAI_API_KEY` / `OPENAI_BASE_URL` 也可用于 `openai-compatible`
|
|
201
|
+
|
|
202
|
+
补充说明:
|
|
203
|
+
- `baseUrl` 若未包含 `/v1`,会自动补齐
|
|
204
|
+
|
|
205
|
+
## 注意事项
|
|
206
|
+
- i18n 场景请优先使用 `ai-translate i18n`,不要直接把 `en.json` 当纯文本翻译
|
|
207
|
+
- 生产环境注意避免输出冗长日志与敏感信息
|
|
208
|
+
|
|
209
|
+
## 最小自测
|
|
210
|
+
```bash
|
|
211
|
+
npm run validate
|
|
212
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ModelMessage, type LanguageModel } from 'ai';
|
|
2
|
+
export type Usage = {
|
|
3
|
+
inputTokens: number;
|
|
4
|
+
outputTokens: number;
|
|
5
|
+
};
|
|
6
|
+
export type GenerateTextArgs = {
|
|
7
|
+
messages: ModelMessage[];
|
|
8
|
+
temperature?: number;
|
|
9
|
+
maxRetries?: number;
|
|
10
|
+
};
|
|
11
|
+
export type GenerateTextResult = {
|
|
12
|
+
text: string;
|
|
13
|
+
usage?: Usage;
|
|
14
|
+
};
|
|
15
|
+
export type ModelClient = {
|
|
16
|
+
generateText: (args: GenerateTextArgs) => Promise<GenerateTextResult>;
|
|
17
|
+
};
|
|
18
|
+
export declare const createModelClient: (opts: {
|
|
19
|
+
model: LanguageModel;
|
|
20
|
+
defaults?: {
|
|
21
|
+
temperature?: number;
|
|
22
|
+
maxRetries?: number;
|
|
23
|
+
};
|
|
24
|
+
}) => ModelClient;
|
|
25
|
+
//# sourceMappingURL=model-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-client.d.ts","sourceRoot":"","sources":["../../src/ai/model-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAA;AAExE,MAAM,MAAM,KAAK,GAAG;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACtE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,KAAK,EAAE,aAAa,CAAA;IACpB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD,KAAG,WAmBH,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { generateText } from 'ai';
|
|
2
|
+
export const createModelClient = (opts) => {
|
|
3
|
+
const { model, defaults } = opts;
|
|
4
|
+
return {
|
|
5
|
+
async generateText(args) {
|
|
6
|
+
const result = await generateText({
|
|
7
|
+
model,
|
|
8
|
+
messages: args.messages,
|
|
9
|
+
temperature: args.temperature ?? defaults?.temperature,
|
|
10
|
+
maxRetries: args.maxRetries ?? defaults?.maxRetries
|
|
11
|
+
});
|
|
12
|
+
const usage = result.usage
|
|
13
|
+
? {
|
|
14
|
+
inputTokens: result.usage.inputTokens ?? 0,
|
|
15
|
+
outputTokens: result.usage.outputTokens ?? 0
|
|
16
|
+
}
|
|
17
|
+
: undefined;
|
|
18
|
+
return { text: result.text, usage };
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=model-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-client.js","sourceRoot":"","sources":["../../src/ai/model-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyC,MAAM,IAAI,CAAA;AAsBxE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAGjC,EAAe,EAAE;IAChB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;IAChC,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAI;YACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW;gBACtD,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,UAAU;aACpD,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;gBACxB,CAAC,CAAC;oBACE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;oBAC1C,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;iBAC7C;gBACH,CAAC,CAAC,SAAS,CAAA;YACb,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;QACrC,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2LA,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE;;;CAoBxC,CAAA;AAWD,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,OAAO,SAEjD,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2LA,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE;;;CAoBxC,CAAA;AAWD,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,OAAO,SAEjD,CAAA;AAyFD,eAAO,MAAM,GAAG,GAAU,OAAO,MAAM,EAAE,kBA2ExC,CAAA"}
|
package/dist/cli.js
CHANGED
|
@@ -55,7 +55,7 @@ Flags:
|
|
|
55
55
|
-c, --config DIR Use config file .ai-translate.json in DIR
|
|
56
56
|
|
|
57
57
|
Available KEYs:
|
|
58
|
-
provider set provider (ollama, mistral, anthropic, openai, deepseek);
|
|
58
|
+
provider set provider (ollama, mistral, anthropic, openai, deepseek, openai-compatible);
|
|
59
59
|
default="ollama"
|
|
60
60
|
model set model from provider; default="qwen2.5:7b"
|
|
61
61
|
apiKey set api key
|
|
@@ -238,14 +238,16 @@ const PROVIDER_API_KEY_ENV = {
|
|
|
238
238
|
openai: 'OPENAI_API_KEY',
|
|
239
239
|
anthropic: 'ANTHROPIC_API_KEY',
|
|
240
240
|
mistral: 'MISTRAL_API_KEY',
|
|
241
|
-
deepseek: 'DEEPSEEK_API_KEY'
|
|
241
|
+
deepseek: 'DEEPSEEK_API_KEY',
|
|
242
|
+
'openai-compatible': 'OPENAI_API_KEY'
|
|
242
243
|
};
|
|
243
244
|
const PROVIDER_BASE_URL_ENV = {
|
|
244
245
|
openai: 'OPENAI_BASE_URL',
|
|
245
246
|
anthropic: 'ANTHROPIC_BASE_URL',
|
|
246
247
|
mistral: 'MISTRAL_BASE_URL',
|
|
247
248
|
deepseek: 'DEEPSEEK_BASE_URL',
|
|
248
|
-
ollama: 'OLLAMA_BASE_URL'
|
|
249
|
+
ollama: 'OLLAMA_BASE_URL',
|
|
250
|
+
'openai-compatible': 'OPENAI_BASE_URL'
|
|
249
251
|
};
|
|
250
252
|
const readEnv = (key) => {
|
|
251
253
|
if (!key)
|
|
@@ -311,9 +313,7 @@ export const cli = async (args) => {
|
|
|
311
313
|
const writer = opts.output ? fs.createWriteStream(String(opts.output)) : process.stdout;
|
|
312
314
|
const runtimeConfig = resolveRuntimeConfig(appConf.config);
|
|
313
315
|
const model = modelFactory(runtimeConfig);
|
|
314
|
-
const
|
|
315
|
-
const lcKwargs = model.lc_kwargs || {};
|
|
316
|
-
const { apiKey: _apiKey, ...modelParams } = { ...lcNamespace, ...lcKwargs };
|
|
316
|
+
const { apiKey: _apiKey, ...modelParams } = runtimeConfig;
|
|
317
317
|
log.debug(modelParams);
|
|
318
318
|
const format = opts.format ||
|
|
319
319
|
getFormatByExtension(path.extname(String(opts.input || '_.md')));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/command.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModelClient } from '../ai/model-client.js';
|
|
2
2
|
export declare const runI18nCommand: (opts: {
|
|
3
3
|
console: Pick<typeof console, "log" | "error">;
|
|
4
|
-
model:
|
|
4
|
+
model: ModelClient;
|
|
5
5
|
argvOpts: Record<string, unknown>;
|
|
6
6
|
}) => Promise<void>;
|
|
7
7
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/i18n/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/i18n/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AA4BxD,eAAO,MAAM,cAAc,GAAU,MAAM;IACzC,OAAO,EAAE,IAAI,CAAC,OAAO,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAA;IAC9C,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,kBA2DA,CAAA"}
|
package/dist/i18n/prompt.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModelMessage } from 'ai';
|
|
2
2
|
export declare const i18nBatchPromptInvoke: (opts: {
|
|
3
3
|
sourceLanguage: string;
|
|
4
4
|
targetLanguage: string;
|
|
5
5
|
itemsJson: string;
|
|
6
|
-
}) =>
|
|
6
|
+
}) => ModelMessage[];
|
|
7
7
|
export declare const i18nRepairPromptInvoke: (opts: {
|
|
8
8
|
sourceLanguage: string;
|
|
9
9
|
targetLanguage: string;
|
|
10
10
|
expectedIds: string[];
|
|
11
11
|
badOutput: string;
|
|
12
|
-
}) =>
|
|
12
|
+
}) => ModelMessage[];
|
|
13
13
|
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/i18n/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/i18n/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAmBtC,eAAO,MAAM,qBAAqB,GAAI,MAAM;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG,YAAY,EASf,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAC3C,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG,YAAY,EAmBf,CAAA"}
|
package/dist/i18n/prompt.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ChatPromptTemplate } from '@langchain/core/prompts';
|
|
2
1
|
const systemPrompt = 'You are a professional localization translator.\n' +
|
|
3
2
|
'You will receive a JSON array. Each element has fields: "id" and "text".\n' +
|
|
4
3
|
'Your task is to translate ONLY the value of "text" from "{sourceLanguage}" to "{targetLanguage}".\n' +
|
|
@@ -8,30 +7,34 @@ const systemPrompt = 'You are a professional localization translator.\n' +
|
|
|
8
7
|
'- Keep placeholder tokens like __AI_TRANSLATE_PH_0__ unchanged.\n' +
|
|
9
8
|
'- Do not add, remove, or reorder array items.\n' +
|
|
10
9
|
'- Keep punctuation and formatting as close as possible.\n';
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
10
|
+
const fillTemplate = (template, vars) => Object.keys(vars).reduce((acc, key) => acc.replaceAll(`{${key}}`, vars[key]), template);
|
|
11
|
+
export const i18nBatchPromptInvoke = (opts) => {
|
|
12
|
+
const system = fillTemplate(systemPrompt, {
|
|
13
|
+
sourceLanguage: opts.sourceLanguage,
|
|
14
|
+
targetLanguage: opts.targetLanguage
|
|
15
|
+
});
|
|
16
|
+
return [
|
|
17
|
+
{ role: 'system', content: system },
|
|
18
|
+
{ role: 'user', content: opts.itemsJson }
|
|
19
|
+
];
|
|
20
|
+
};
|
|
20
21
|
export const i18nRepairPromptInvoke = (opts) => {
|
|
21
22
|
const repairSystem = 'You fix model outputs into valid JSON.\n' +
|
|
22
23
|
'Return ONLY valid JSON array of objects with fields: "id" and "text".\n' +
|
|
23
24
|
'Preserve the provided IDs exactly, and include all IDs, no extras.\n' +
|
|
24
25
|
'Keep placeholder tokens like __AI_TRANSLATE_PH_0__ unchanged.\n';
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
const user = [
|
|
27
|
+
'Expected ids:',
|
|
28
|
+
JSON.stringify(opts.expectedIds),
|
|
29
|
+
'',
|
|
30
|
+
'Bad output:',
|
|
31
|
+
opts.badOutput,
|
|
32
|
+
'',
|
|
33
|
+
'Return fixed JSON array only.'
|
|
34
|
+
].join('\n');
|
|
35
|
+
return [
|
|
36
|
+
{ role: 'system', content: repairSystem },
|
|
37
|
+
{ role: 'user', content: user }
|
|
38
|
+
];
|
|
36
39
|
};
|
|
37
40
|
//# sourceMappingURL=prompt.js.map
|
package/dist/i18n/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/i18n/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/i18n/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAChB,mDAAmD;IACnD,4EAA4E;IAC5E,qGAAqG;IACrG,UAAU;IACV,4BAA4B;IAC5B,4EAA4E;IAC5E,mEAAmE;IACnE,iDAAiD;IACjD,2DAA2D,CAAA;AAE7D,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAA4B,EAAE,EAAE,CACtE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EACnD,QAAQ,CACT,CAAA;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAIrC,EAAkB,EAAE;IACnB,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE;QACxC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAA;IACF,OAAO;QACL,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;KAC1C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAKtC,EAAkB,EAAE;IACnB,MAAM,YAAY,GAChB,0CAA0C;QAC1C,yEAAyE;QACzE,sEAAsE;QACtE,iEAAiE,CAAA;IACnE,MAAM,IAAI,GAAG;QACX,eAAe;QACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;QAChC,EAAE;QACF,aAAa;QACb,IAAI,CAAC,SAAS;QACd,EAAE;QACF,+BAA+B;KAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,OAAO;QACL,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;KAChC,CAAA;AACH,CAAC,CAAA"}
|
package/dist/i18n/translate.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModelClient } from '../ai/model-client.js';
|
|
2
2
|
import type { AlignMode } from './align.js';
|
|
3
3
|
export type I18nTranslateOptions = {
|
|
4
4
|
baseDir: string;
|
|
@@ -23,7 +23,7 @@ export type I18nTargetStats = {
|
|
|
23
23
|
usedCache: number;
|
|
24
24
|
};
|
|
25
25
|
export declare const translateI18nDir: (opts: {
|
|
26
|
-
model:
|
|
26
|
+
model: ModelClient;
|
|
27
27
|
options: I18nTranslateOptions;
|
|
28
28
|
}) => Promise<I18nTargetStats[]>;
|
|
29
29
|
//# sourceMappingURL=translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/i18n/translate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/i18n/translate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAY3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAqFD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,oBAAoB,CAAA;CAC9B,KAAG,OAAO,CAAC,eAAe,EAAE,CA6J5B,CAAA"}
|
package/dist/i18n/translate.js
CHANGED
|
@@ -49,9 +49,9 @@ const translateBatch = async (opts) => {
|
|
|
49
49
|
targetLanguage: opts.targetLanguage,
|
|
50
50
|
itemsJson
|
|
51
51
|
});
|
|
52
|
-
const result = await opts.model.
|
|
52
|
+
const result = await opts.model.generateText({ messages });
|
|
53
53
|
try {
|
|
54
|
-
return parseJsonArray(String(result.
|
|
54
|
+
return parseJsonArray(String(result.text ?? ''));
|
|
55
55
|
}
|
|
56
56
|
catch (err) {
|
|
57
57
|
// One repair attempt: ask the model to output valid JSON only.
|
|
@@ -60,10 +60,10 @@ const translateBatch = async (opts) => {
|
|
|
60
60
|
sourceLanguage: opts.sourceLanguage,
|
|
61
61
|
targetLanguage: opts.targetLanguage,
|
|
62
62
|
expectedIds,
|
|
63
|
-
badOutput: String(result.
|
|
63
|
+
badOutput: String(result.text ?? '')
|
|
64
64
|
});
|
|
65
|
-
const repaired = await opts.model.
|
|
66
|
-
return parseJsonArray(String(repaired.
|
|
65
|
+
const repaired = await opts.model.generateText({ messages: repair });
|
|
66
|
+
return parseJsonArray(String(repaired.text ?? ''));
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
69
|
export const translateI18nDir = async (opts) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/i18n/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/i18n/translate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export { promptInvoke, languages } from './prompt.js';
|
|
|
3
3
|
export { TextSplitterStream, recursiveChunkTextSplitter, getFormatByExtension } from './split.js';
|
|
4
4
|
export { translateI18nDir } from './i18n/translate.js';
|
|
5
5
|
export type { Metadata, ModelFactoryOptions } from './model.js';
|
|
6
|
+
export type { ModelClient, Usage } from './ai/model-client.js';
|
|
6
7
|
export type { TextSplitterParams, Separator } from './split.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC/D,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/model.d.ts
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
2
1
|
import { AsyncTransform } from './asyncTransform.js';
|
|
2
|
+
import { type ModelClient } from './ai/model-client.js';
|
|
3
3
|
export type Metadata = {
|
|
4
4
|
inputTokens: number;
|
|
5
5
|
outputTokens: number;
|
|
6
6
|
};
|
|
7
7
|
export type ModelFactoryOptions = {
|
|
8
|
-
provider?: 'ollama' | 'mistral' | 'anthropic' | 'openai' | 'deepseek';
|
|
8
|
+
provider?: 'ollama' | 'mistral' | 'anthropic' | 'openai' | 'deepseek' | 'openai-compatible';
|
|
9
|
+
model?: string;
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
temperature?: number;
|
|
13
|
+
maxRetries?: number;
|
|
9
14
|
[key: string]: unknown;
|
|
10
15
|
};
|
|
11
|
-
export declare const modelFactory: (modelOpts?: ModelFactoryOptions) =>
|
|
16
|
+
export declare const modelFactory: (modelOpts?: ModelFactoryOptions) => ModelClient;
|
|
12
17
|
export declare class AiTranslateTransform extends AsyncTransform {
|
|
13
18
|
private readonly _model;
|
|
14
19
|
private readonly _promptOpts;
|
|
15
20
|
private _metadata;
|
|
16
21
|
constructor(options: {
|
|
17
|
-
model:
|
|
22
|
+
model: ModelClient;
|
|
18
23
|
format?: string;
|
|
19
24
|
sourceLanguage: string;
|
|
20
25
|
targetLanguage: string;
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIpD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAU1E,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,mBAAmB,CAAA;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,YAAY,GAAI,YAAY,mBAAmB,KAAG,WA0F9D,CAAA;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAI3B;IACD,OAAO,CAAC,SAAS,CAAgD;gBAErD,OAAO,EAAE;QACnB,KAAK,EAAE,WAAW,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB;IAOD,WAAW;qBAxIE,MAAM;sBACL,MAAM;;cA2IJ,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,cAAc,GAAG,QAAQ;CAsBtC"}
|
package/dist/model.js
CHANGED
|
@@ -1,69 +1,111 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ChatDeepSeek } from '@langchain/deepseek';
|
|
1
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
2
|
+
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
3
|
+
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
4
|
+
import { createMistral } from '@ai-sdk/mistral';
|
|
6
5
|
import { AsyncTransform } from './asyncTransform.js';
|
|
7
6
|
import { promptInvoke, replaceMarkerSymbol } from './prompt.js';
|
|
8
7
|
import { logger } from './logger.js';
|
|
9
8
|
import { isWhiteSpace, preserveWhiteSpace } from './utils.js';
|
|
9
|
+
import { createModelClient } from './ai/model-client.js';
|
|
10
10
|
const log = logger('model');
|
|
11
11
|
const DEFAULT = {
|
|
12
12
|
temperature: 0.1,
|
|
13
13
|
maxRetries: 10,
|
|
14
14
|
maxConcurrency: 1
|
|
15
15
|
};
|
|
16
|
+
const normalizeBaseUrl = (baseUrl) => {
|
|
17
|
+
if (!baseUrl)
|
|
18
|
+
return;
|
|
19
|
+
const trimmed = baseUrl.trim();
|
|
20
|
+
if (!trimmed)
|
|
21
|
+
return;
|
|
22
|
+
if (/\/v1\/?$/.test(trimmed))
|
|
23
|
+
return trimmed;
|
|
24
|
+
return `${trimmed.replace(/\/+$/, '')}/v1`;
|
|
25
|
+
};
|
|
16
26
|
export const modelFactory = (modelOpts) => {
|
|
17
27
|
const { provider = 'ollama', ...other } = modelOpts || {};
|
|
18
28
|
const apiKeyValue = typeof other.apiKey === 'string' ? other.apiKey.trim() : '';
|
|
19
29
|
const baseUrlValue = typeof other.baseUrl === 'string' ? other.baseUrl.trim() : '';
|
|
20
30
|
const apiKey = apiKeyValue ? apiKeyValue : undefined;
|
|
21
|
-
const baseUrl = baseUrlValue ? baseUrlValue : undefined;
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
const baseUrl = baseUrlValue ? normalizeBaseUrl(baseUrlValue) : undefined;
|
|
32
|
+
const modelName = typeof other.model === 'string' && other.model.trim().length > 0
|
|
33
|
+
? other.model.trim()
|
|
34
|
+
: undefined;
|
|
35
|
+
const temperature = typeof other.temperature === 'number' ? other.temperature : DEFAULT.temperature;
|
|
36
|
+
const maxRetries = typeof other.maxRetries === 'number' ? other.maxRetries : DEFAULT.maxRetries;
|
|
37
|
+
const requireBaseUrl = (name) => {
|
|
38
|
+
if (baseUrl)
|
|
39
|
+
return baseUrl;
|
|
40
|
+
if (name === 'ollama') {
|
|
41
|
+
return normalizeBaseUrl('http://127.0.0.1:11434');
|
|
42
|
+
}
|
|
43
|
+
if (name === 'deepseek') {
|
|
44
|
+
return normalizeBaseUrl('https://api.deepseek.com');
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`baseUrl is required for provider=${name}`);
|
|
47
|
+
};
|
|
29
48
|
switch (provider) {
|
|
30
49
|
case 'ollama':
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
50
|
+
{
|
|
51
|
+
const resolvedBaseUrl = requireBaseUrl('ollama');
|
|
52
|
+
return createModelClient({
|
|
53
|
+
model: createOpenAICompatible({
|
|
54
|
+
name: 'ollama',
|
|
55
|
+
baseURL: resolvedBaseUrl,
|
|
56
|
+
...(apiKey ? { apiKey } : {})
|
|
57
|
+
})(modelName || 'qwen2.5:7b'),
|
|
58
|
+
defaults: { temperature, maxRetries }
|
|
59
|
+
});
|
|
60
|
+
}
|
|
37
61
|
case 'mistral':
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
62
|
+
return createModelClient({
|
|
63
|
+
model: createMistral({
|
|
64
|
+
...(apiKey ? { apiKey } : {}),
|
|
65
|
+
...(baseUrl ? { baseURL: baseUrl } : {})
|
|
66
|
+
})(modelName || 'ministral-8b'),
|
|
67
|
+
defaults: { temperature, maxRetries }
|
|
43
68
|
});
|
|
44
69
|
case 'anthropic':
|
|
45
|
-
return
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
return createModelClient({
|
|
71
|
+
model: createAnthropic({
|
|
72
|
+
...(apiKey ? { apiKey } : {}),
|
|
73
|
+
...(baseUrl ? { baseURL: baseUrl } : {})
|
|
74
|
+
})(modelName || 'claude-3-5-haiku-20241022'),
|
|
75
|
+
defaults: { temperature, maxRetries }
|
|
50
76
|
});
|
|
51
77
|
case 'openai':
|
|
52
|
-
return
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
78
|
+
return createModelClient({
|
|
79
|
+
model: createOpenAI({
|
|
80
|
+
...(apiKey ? { apiKey } : {}),
|
|
81
|
+
...(baseUrl ? { baseURL: baseUrl } : {})
|
|
82
|
+
})(modelName || 'gpt-4o-mini'),
|
|
83
|
+
defaults: { temperature, maxRetries }
|
|
58
84
|
});
|
|
85
|
+
case 'openai-compatible':
|
|
86
|
+
{
|
|
87
|
+
const resolvedBaseUrl = requireBaseUrl('openai-compatible');
|
|
88
|
+
return createModelClient({
|
|
89
|
+
model: createOpenAICompatible({
|
|
90
|
+
name: 'openai-compatible',
|
|
91
|
+
baseURL: resolvedBaseUrl,
|
|
92
|
+
...(apiKey ? { apiKey } : {})
|
|
93
|
+
})(modelName || 'gpt-4o-mini'),
|
|
94
|
+
defaults: { temperature, maxRetries }
|
|
95
|
+
});
|
|
96
|
+
}
|
|
59
97
|
case 'deepseek':
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
98
|
+
{
|
|
99
|
+
const resolvedBaseUrl = requireBaseUrl('deepseek');
|
|
100
|
+
return createModelClient({
|
|
101
|
+
model: createOpenAICompatible({
|
|
102
|
+
name: 'deepseek',
|
|
103
|
+
baseURL: resolvedBaseUrl,
|
|
104
|
+
...(apiKey ? { apiKey } : {})
|
|
105
|
+
})(modelName || 'deepseek-reasoner'),
|
|
106
|
+
defaults: { temperature, maxRetries }
|
|
107
|
+
});
|
|
108
|
+
}
|
|
67
109
|
default:
|
|
68
110
|
throw new Error(`unsupported provider=${provider}`);
|
|
69
111
|
}
|
|
@@ -88,16 +130,14 @@ export class AiTranslateTransform extends AsyncTransform {
|
|
|
88
130
|
}
|
|
89
131
|
log.debug('inp=%j', text);
|
|
90
132
|
const messages = await promptInvoke({ ...this._promptOpts, text });
|
|
91
|
-
const result = await this._model.
|
|
92
|
-
log.debug('out=%j', result.
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
const inputTokens = usage?.input_tokens ?? 0;
|
|
96
|
-
const outputTokens = usage?.output_tokens ?? 0;
|
|
133
|
+
const result = await this._model.generateText({ messages });
|
|
134
|
+
log.debug('out=%j', result.text);
|
|
135
|
+
const inputTokens = result.usage?.inputTokens ?? 0;
|
|
136
|
+
const outputTokens = result.usage?.outputTokens ?? 0;
|
|
97
137
|
this.emit('metadata', { inputTokens, outputTokens });
|
|
98
138
|
this._metadata.inputTokens += inputTokens;
|
|
99
139
|
this._metadata.outputTokens += outputTokens;
|
|
100
|
-
return !this.push(preserveWhiteSpace(text, replaceMarkerSymbol(result.
|
|
140
|
+
return !this.push(preserveWhiteSpace(text, replaceMarkerSymbol(result.text)));
|
|
101
141
|
}
|
|
102
142
|
}
|
|
103
143
|
//# sourceMappingURL=model.js.map
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { MessageContent } from '@langchain/core/messages';
|
|
1
|
+
import type { ModelMessage } from 'ai';
|
|
3
2
|
export declare const languages: Record<string, string>;
|
|
4
3
|
export declare const getLanguageName: (lang: string) => string;
|
|
5
4
|
export declare const promptInvoke: ({ format, sourceLanguage, targetLanguage, text }: {
|
|
@@ -7,6 +6,6 @@ export declare const promptInvoke: ({ format, sourceLanguage, targetLanguage, te
|
|
|
7
6
|
sourceLanguage: string;
|
|
8
7
|
targetLanguage: string;
|
|
9
8
|
text: string;
|
|
10
|
-
}) =>
|
|
11
|
-
export declare const replaceMarkerSymbol: (text:
|
|
9
|
+
}) => ModelMessage[];
|
|
10
|
+
export declare const replaceMarkerSymbol: (text: string) => string;
|
|
12
11
|
//# sourceMappingURL=prompt.d.ts.map
|
package/dist/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAKtC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAY5C,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,WAA4B,CAAA;AA0BxE,eAAO,MAAM,YAAY,GAAI,kDAK1B;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,YAAY,EAUf,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,WAM/C,CAAA"}
|
package/dist/prompt.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ChatPromptTemplate } from '@langchain/core/prompts';
|
|
2
1
|
import { logger } from './logger.js';
|
|
3
2
|
const log = logger('prompt');
|
|
4
3
|
export const languages = {
|
|
@@ -15,7 +14,7 @@ export const languages = {
|
|
|
15
14
|
'zh-TW': 'Chinese-traditional'
|
|
16
15
|
};
|
|
17
16
|
export const getLanguageName = (lang) => languages[lang] || lang;
|
|
18
|
-
const
|
|
17
|
+
const systemPromptTemplate = 'You are an AI-driven advanced translation system, specifically designed to ' +
|
|
19
18
|
'translate structured and technical documents. ' +
|
|
20
19
|
'You will receive a text snippet from a file formatted as "{format}"\n\n' +
|
|
21
20
|
'Your task is to **accurately translate** the text enclosed between the 🔤 ' +
|
|
@@ -31,16 +30,18 @@ const systemPrompt = 'You are an AI-driven advanced translation system, specific
|
|
|
31
30
|
'adding summaries or changing the content in any way. ' +
|
|
32
31
|
'Do not skip or modify any part of the text. Ensure that the output is a ' +
|
|
33
32
|
'direct translation, and that the original structure and meaning are preserved.';
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
33
|
+
const fillTemplate = (template, vars) => Object.keys(vars).reduce((acc, key) => acc.replaceAll(`{${key}}`, vars[key]), template);
|
|
34
|
+
export const promptInvoke = ({ format = 'markdown', sourceLanguage, targetLanguage, text = '' }) => {
|
|
35
|
+
const systemPrompt = fillTemplate(systemPromptTemplate, {
|
|
36
|
+
format,
|
|
37
|
+
sourceLanguage: getLanguageName(sourceLanguage),
|
|
38
|
+
targetLanguage: getLanguageName(targetLanguage)
|
|
39
|
+
});
|
|
40
|
+
return [
|
|
41
|
+
{ role: 'system', content: systemPrompt },
|
|
42
|
+
{ role: 'user', content: `🔤${text}🔤` }
|
|
43
|
+
];
|
|
44
|
+
};
|
|
44
45
|
export const replaceMarkerSymbol = (text) => {
|
|
45
46
|
if (typeof text === 'string') {
|
|
46
47
|
return text.replace(/^\s*🔤/, '').replace(/🔤\s*$/, '');
|
package/dist/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAE5B,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,YAAY;IAChB,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,qBAAqB;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AAExE,MAAM,oBAAoB,GACxB,6EAA6E;IAC7E,gDAAgD;IAChD,yEAAyE;IACzE,4EAA4E;IAC5E,yDAAyD;IACzD,yEAAyE;IACzE,8EAA8E;IAC9E,iFAAiF;IACjF,+EAA+E;IAC/E,kBAAkB;IAClB,sEAAsE;IACtE,2FAA2F;IAC3F,4EAA4E;IAC5E,uDAAuD;IACvD,0EAA0E;IAC1E,gFAAgF,CAAA;AAElF,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAA4B,EAAE,EAAE,CACtE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EACnD,QAAQ,CACT,CAAA;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,MAAM,GAAG,UAAU,EACnB,cAAc,EACd,cAAc,EACd,IAAI,GAAG,EAAE,EAMV,EAAkB,EAAE;IACnB,MAAM,YAAY,GAAG,YAAY,CAAC,oBAAoB,EAAE;QACtD,MAAM;QACN,cAAc,EAAE,eAAe,CAAC,cAAc,CAAC;QAC/C,cAAc,EAAE,eAAe,CAAC,cAAc,CAAC;KAChD,CAAC,CAAA;IACF,OAAO;QACL,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;KACzC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACf,OAAO,EAAE,CAAA;AACX,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thor123141245r/ai-translate",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
-
"README.md"
|
|
22
|
+
"README.md",
|
|
23
|
+
"README.zh-CN.md"
|
|
23
24
|
],
|
|
24
25
|
"scripts": {
|
|
25
26
|
"build": "tsc -p tsconfig.json",
|
|
@@ -29,13 +30,12 @@
|
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"@commenthol/app-config": "^0.1.1",
|
|
32
|
-
"@langchain/anthropic": "^0.3.15",
|
|
33
|
-
"@langchain/core": "^0.3.42",
|
|
34
|
-
"@langchain/deepseek": "^0.0.1",
|
|
35
|
-
"@langchain/mistralai": "^0.2.0",
|
|
36
|
-
"@langchain/ollama": "^0.2.0",
|
|
37
|
-
"@langchain/openai": "^0.4.4",
|
|
38
33
|
"@langchain/textsplitters": "^0.1.0",
|
|
34
|
+
"@ai-sdk/anthropic": "^3.0.23",
|
|
35
|
+
"@ai-sdk/mistral": "^3.0.12",
|
|
36
|
+
"@ai-sdk/openai": "^3.0.18",
|
|
37
|
+
"@ai-sdk/openai-compatible": "^2.0.18",
|
|
38
|
+
"ai": "^6.0.49",
|
|
39
39
|
"debug-level": "^4.1.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|