@llm-translate/cli 1.0.0-next.1

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.
Files changed (157) hide show
  1. package/.dockerignore +51 -0
  2. package/.env.example +33 -0
  3. package/.github/workflows/docs-pages.yml +57 -0
  4. package/.github/workflows/release.yml +49 -0
  5. package/.translaterc.json +44 -0
  6. package/CLAUDE.md +243 -0
  7. package/Dockerfile +55 -0
  8. package/README.md +371 -0
  9. package/RFC.md +1595 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.js +4494 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/index.d.ts +1152 -0
  14. package/dist/index.js +3841 -0
  15. package/dist/index.js.map +1 -0
  16. package/docker-compose.yml +56 -0
  17. package/docs/.vitepress/config.ts +161 -0
  18. package/docs/api/agent.md +262 -0
  19. package/docs/api/engine.md +274 -0
  20. package/docs/api/index.md +171 -0
  21. package/docs/api/providers.md +304 -0
  22. package/docs/changelog.md +64 -0
  23. package/docs/cli/dir.md +243 -0
  24. package/docs/cli/file.md +213 -0
  25. package/docs/cli/glossary.md +273 -0
  26. package/docs/cli/index.md +129 -0
  27. package/docs/cli/init.md +158 -0
  28. package/docs/cli/serve.md +211 -0
  29. package/docs/glossary.json +235 -0
  30. package/docs/guide/chunking.md +272 -0
  31. package/docs/guide/configuration.md +139 -0
  32. package/docs/guide/cost-optimization.md +237 -0
  33. package/docs/guide/docker.md +371 -0
  34. package/docs/guide/getting-started.md +150 -0
  35. package/docs/guide/glossary.md +241 -0
  36. package/docs/guide/index.md +86 -0
  37. package/docs/guide/ollama.md +515 -0
  38. package/docs/guide/prompt-caching.md +221 -0
  39. package/docs/guide/providers.md +232 -0
  40. package/docs/guide/quality-control.md +206 -0
  41. package/docs/guide/vitepress-integration.md +265 -0
  42. package/docs/index.md +63 -0
  43. package/docs/ja/api/agent.md +262 -0
  44. package/docs/ja/api/engine.md +274 -0
  45. package/docs/ja/api/index.md +171 -0
  46. package/docs/ja/api/providers.md +304 -0
  47. package/docs/ja/changelog.md +64 -0
  48. package/docs/ja/cli/dir.md +243 -0
  49. package/docs/ja/cli/file.md +213 -0
  50. package/docs/ja/cli/glossary.md +273 -0
  51. package/docs/ja/cli/index.md +111 -0
  52. package/docs/ja/cli/init.md +158 -0
  53. package/docs/ja/guide/chunking.md +271 -0
  54. package/docs/ja/guide/configuration.md +139 -0
  55. package/docs/ja/guide/cost-optimization.md +30 -0
  56. package/docs/ja/guide/getting-started.md +150 -0
  57. package/docs/ja/guide/glossary.md +214 -0
  58. package/docs/ja/guide/index.md +32 -0
  59. package/docs/ja/guide/ollama.md +410 -0
  60. package/docs/ja/guide/prompt-caching.md +221 -0
  61. package/docs/ja/guide/providers.md +232 -0
  62. package/docs/ja/guide/quality-control.md +137 -0
  63. package/docs/ja/guide/vitepress-integration.md +265 -0
  64. package/docs/ja/index.md +58 -0
  65. package/docs/ko/api/agent.md +262 -0
  66. package/docs/ko/api/engine.md +274 -0
  67. package/docs/ko/api/index.md +171 -0
  68. package/docs/ko/api/providers.md +304 -0
  69. package/docs/ko/changelog.md +64 -0
  70. package/docs/ko/cli/dir.md +243 -0
  71. package/docs/ko/cli/file.md +213 -0
  72. package/docs/ko/cli/glossary.md +273 -0
  73. package/docs/ko/cli/index.md +111 -0
  74. package/docs/ko/cli/init.md +158 -0
  75. package/docs/ko/guide/chunking.md +271 -0
  76. package/docs/ko/guide/configuration.md +139 -0
  77. package/docs/ko/guide/cost-optimization.md +30 -0
  78. package/docs/ko/guide/getting-started.md +150 -0
  79. package/docs/ko/guide/glossary.md +214 -0
  80. package/docs/ko/guide/index.md +32 -0
  81. package/docs/ko/guide/ollama.md +410 -0
  82. package/docs/ko/guide/prompt-caching.md +221 -0
  83. package/docs/ko/guide/providers.md +232 -0
  84. package/docs/ko/guide/quality-control.md +137 -0
  85. package/docs/ko/guide/vitepress-integration.md +265 -0
  86. package/docs/ko/index.md +58 -0
  87. package/docs/zh/api/agent.md +262 -0
  88. package/docs/zh/api/engine.md +274 -0
  89. package/docs/zh/api/index.md +171 -0
  90. package/docs/zh/api/providers.md +304 -0
  91. package/docs/zh/changelog.md +64 -0
  92. package/docs/zh/cli/dir.md +243 -0
  93. package/docs/zh/cli/file.md +213 -0
  94. package/docs/zh/cli/glossary.md +273 -0
  95. package/docs/zh/cli/index.md +111 -0
  96. package/docs/zh/cli/init.md +158 -0
  97. package/docs/zh/guide/chunking.md +271 -0
  98. package/docs/zh/guide/configuration.md +139 -0
  99. package/docs/zh/guide/cost-optimization.md +30 -0
  100. package/docs/zh/guide/getting-started.md +150 -0
  101. package/docs/zh/guide/glossary.md +214 -0
  102. package/docs/zh/guide/index.md +32 -0
  103. package/docs/zh/guide/ollama.md +410 -0
  104. package/docs/zh/guide/prompt-caching.md +221 -0
  105. package/docs/zh/guide/providers.md +232 -0
  106. package/docs/zh/guide/quality-control.md +137 -0
  107. package/docs/zh/guide/vitepress-integration.md +265 -0
  108. package/docs/zh/index.md +58 -0
  109. package/package.json +91 -0
  110. package/release.config.mjs +15 -0
  111. package/schemas/glossary.schema.json +110 -0
  112. package/src/cli/commands/dir.ts +469 -0
  113. package/src/cli/commands/file.ts +291 -0
  114. package/src/cli/commands/glossary.ts +221 -0
  115. package/src/cli/commands/init.ts +68 -0
  116. package/src/cli/commands/serve.ts +60 -0
  117. package/src/cli/index.ts +64 -0
  118. package/src/cli/options.ts +59 -0
  119. package/src/core/agent.ts +1119 -0
  120. package/src/core/chunker.ts +391 -0
  121. package/src/core/engine.ts +634 -0
  122. package/src/errors.ts +188 -0
  123. package/src/index.ts +147 -0
  124. package/src/integrations/vitepress.ts +549 -0
  125. package/src/parsers/markdown.ts +383 -0
  126. package/src/providers/claude.ts +259 -0
  127. package/src/providers/interface.ts +109 -0
  128. package/src/providers/ollama.ts +379 -0
  129. package/src/providers/openai.ts +308 -0
  130. package/src/providers/registry.ts +153 -0
  131. package/src/server/index.ts +152 -0
  132. package/src/server/middleware/auth.ts +93 -0
  133. package/src/server/middleware/logger.ts +90 -0
  134. package/src/server/routes/health.ts +84 -0
  135. package/src/server/routes/translate.ts +210 -0
  136. package/src/server/types.ts +138 -0
  137. package/src/services/cache.ts +899 -0
  138. package/src/services/config.ts +217 -0
  139. package/src/services/glossary.ts +247 -0
  140. package/src/types/analysis.ts +164 -0
  141. package/src/types/index.ts +265 -0
  142. package/src/types/modes.ts +121 -0
  143. package/src/types/mqm.ts +157 -0
  144. package/src/utils/logger.ts +141 -0
  145. package/src/utils/tokens.ts +116 -0
  146. package/tests/fixtures/glossaries/ml-glossary.json +53 -0
  147. package/tests/fixtures/input/lynq-installation.ko.md +350 -0
  148. package/tests/fixtures/input/lynq-installation.md +350 -0
  149. package/tests/fixtures/input/simple.ko.md +27 -0
  150. package/tests/fixtures/input/simple.md +27 -0
  151. package/tests/unit/chunker.test.ts +229 -0
  152. package/tests/unit/glossary.test.ts +146 -0
  153. package/tests/unit/markdown.test.ts +205 -0
  154. package/tests/unit/tokens.test.ts +81 -0
  155. package/tsconfig.json +28 -0
  156. package/tsup.config.ts +34 -0
  157. package/vitest.config.ts +16 -0
@@ -0,0 +1,410 @@
1
+ # Ollamaを使用したローカル翻訳
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ Ollamaを使用してllm-translateを完全にオフラインで実行できます。APIキーは不要で、機密文書の完全なプライバシーを確保できます。
8
+
9
+ ::: warning モデルによって品質が異なります
10
+ Ollamaの翻訳品質は**モデル選択に大きく依存します**。信頼性の高い翻訳結果を得るには:
11
+
12
+ - **最小要件**: 14B以上のパラメータモデル(例:`qwen2.5:14b ` 、`llama3.1:8b`)
13
+ - **推奨**: 32B以上のモデル(例:`qwen2.5:32b ` 、`llama3.3:70b`)
14
+ - **非推奨**: 7B未満のモデルは一貫性がなく、しばしば使用できない翻訳を生成します
15
+
16
+ 小さなモデル(3B、7B)は簡単なコンテンツでは動作する場合がありますが、技術文書では頻繁に失敗し、不完全な出力を生成したり、フォーマット指示を無視したりします。
17
+ :::
18
+
19
+ ## なぜOllamaなのか?
20
+
21
+ - **プライバシー**: ドキュメントがマシンから外部に送信されません
22
+ - **APIコストなし**: 初期設定後は無制限の翻訳が可能
23
+ - **オフライン**: インターネット接続なしで動作
24
+ - **カスタマイズ可能**: ドメインに合わせてモデルを微調整可能
25
+
26
+ ## システム要件
27
+
28
+ ### 最小要件(14Bモデル)
29
+
30
+ - **RAM**: 16GB(qwen2.5:14bなどの14Bモデル用)
31
+ - **ストレージ**: 20GBの空き容量
32
+ - **CPU**: 最新のマルチコアプロセッサ
33
+
34
+ ### 推奨要件
35
+
36
+ - **RAM**: 32GB以上(qwen2.5:32bなどの大型モデル用)
37
+ - **GPU**: 16GB以上のVRAMを持つNVIDIAまたはApple Silicon(M2/M3/M4)
38
+ - **ストレージ**: 複数モデル用に100GB以上
39
+
40
+ ### GPUサポート
41
+
42
+ | プラットフォーム | GPU | サポート |
43
+ |----------|-----|---------|
44
+ | macOS | Apple Silicon(M1/M2/M3/M4) | 優秀 |
45
+ | Linux | NVIDIA(CUDA) | 優秀 |
46
+ | Linux | AMD(ROCm) | 良好 |
47
+ | Windows | NVIDIA(CUDA) | 良好 |
48
+ | Windows | AMD | 限定的 |
49
+
50
+ ## インストール
51
+
52
+ ### macOS
53
+
54
+ ```bash
55
+ # Using Homebrew (recommended)
56
+ brew install ollama
57
+
58
+ # Or download from https://ollama.ai
59
+ ```
60
+
61
+ ### Linux
62
+
63
+ ```bash
64
+ # One-line installer
65
+ curl -fsSL https://ollama.ai/install.sh | sh
66
+
67
+ # Or using package managers
68
+ # Ubuntu/Debian
69
+ curl -fsSL https://ollama.ai/install.sh | sh
70
+
71
+ # Arch Linux
72
+ yay -S ollama
73
+ ```
74
+
75
+ ### Windows
76
+
77
+ [ollama.ai](https://ollama.ai/download/windows)からインストーラーをダウンロードしてください。
78
+
79
+ ### Docker
80
+
81
+ ```bash
82
+ # CPU only
83
+ docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
84
+
85
+ # With NVIDIA GPU
86
+ docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
87
+ ```
88
+
89
+ ## クイックスタート
90
+
91
+ ### 1. Ollamaサーバーを開始
92
+
93
+ ```bash
94
+ # Start the server (runs in background)
95
+ ollama serve
96
+ ```
97
+
98
+ ::: tip
99
+ macOSとWindowsでは、インストール後にOllamaがバックグラウンドサービスとして自動的に開始されます。
100
+ :::
101
+
102
+ ### 2. モデルをダウンロード
103
+
104
+ ```bash
105
+ # Recommended: Qwen 2.5 14B (best multilingual support for local)
106
+ ollama pull qwen2.5:14b
107
+
108
+ # Alternative: Llama 3.2 (lighter, good for English-centric docs)
109
+ ollama pull llama3.2
110
+ ```
111
+
112
+ ### 3. 翻訳
113
+
114
+ ```bash
115
+ # Basic translation with qwen2.5:14b
116
+ llm-translate file README.md -o README.ko.md -s en -t ko --provider ollama --model qwen2.5:14b
117
+
118
+ # With specific model
119
+ llm-translate file doc.md -s en -t ja --provider ollama --model qwen2.5:14b
120
+ ```
121
+
122
+ ::: tip 翻訳用のQwen 2.5
123
+ Qwen 2.5は韓国語、日本語、中国語、および主要なヨーロッパ言語を含む29言語をサポートしています。14Bバージョンは16GBのRAMで動作しながら、翻訳タスクに優れた品質を提供します。
124
+ :::
125
+
126
+ ## 翻訳に推奨されるモデル
127
+
128
+ ### 最高品質(32B以上)
129
+
130
+ | モデル | サイズ | VRAM | 言語 | 品質 |
131
+ |-------|------|------|-----------|---------|
132
+ |`llama3.3`| 70B | 40GB以上 | 100以上 | 優秀 |
133
+ |`qwen2.5:32b`| 32B | 20GB以上 | 29 | 優秀 |
134
+ |`llama3.1:70b`| 70B | 40GB以上 | 8 | 非常に良好 |
135
+
136
+ ### 最高の言語サポートを持つ軽量版
137
+
138
+ リソースが限られたシステムでは、**Qwen2.5**が最高の多言語サポート(29言語)を提供します。
139
+
140
+ | モデル | パラメータ | RAM | 言語 | 品質 | 最適用途 |
141
+ |-------|-----------|-----|-----------|---------|----------|
142
+ |`qwen2.5:3b`| 3B | 3GB | 29 | 良好 | **バランス型(推奨)** |
143
+ |`qwen2.5:7b`| 7B | 6GB | 29 | 非常に良好 | 品質重視 |
144
+ |`gemma3:4b`| 4B | 4GB | 多数 | 良好 | 翻訳最適化 |
145
+ |`llama3.2`| 3B | 4GB | 8 | 良好 | 英語中心の文書 |
146
+
147
+ ### 超軽量(2GB RAM未満)
148
+
149
+ | モデル | パラメータ | RAM | 言語 | 品質 |
150
+ |-------|-----------|-----|-----------|---------|
151
+ |`qwen2.5:1.5b`| 1.5B | 2GB | 29 | 基本 |
152
+ |`qwen2.5:0.5b`| 0.5B | 1GB | 29 | 基本 |
153
+ |`gemma3:1b`| 1B | 1.5GB | 多数 | 基本 |
154
+ |`llama3.2:1b`| 1B | 2GB | 8 | 基本 |
155
+
156
+ ::: tip 多言語対応のQwen
157
+ Qwen2.5は韓国語、日本語、中国語、および主要なヨーロッパ言語を含む29言語をサポートしています。英語以外の翻訳作業では、Qwenが軽量な選択肢として最適な場合が多いです。
158
+ :::
159
+
160
+ ### モデルのダウンロード
161
+
162
+ ```bash
163
+ # List available models
164
+ ollama list
165
+
166
+ # Recommended for translation (14B+)
167
+ ollama pull qwen2.5:14b # Best multilingual (29 languages)
168
+ ollama pull qwen2.5:32b # Higher quality, needs 32GB RAM
169
+ ollama pull llama3.1:8b # Good quality, lighter
170
+
171
+ # Lightweight options (may have quality issues)
172
+ ollama pull qwen2.5:7b # Better quality than 3B
173
+ ollama pull llama3.2 # Good for English-centric docs
174
+
175
+ # Other options
176
+ ollama pull mistral-nemo
177
+ ```
178
+
179
+ ## 設定
180
+
181
+ ### 環境変数
182
+
183
+ ```bash
184
+ # Default server URL (optional, this is the default)
185
+ export OLLAMA_BASE_URL=http://localhost:11434
186
+
187
+ # Custom server location
188
+ export OLLAMA_BASE_URL=http://192.168.1.100:11434
189
+ ```
190
+
191
+ ### 設定ファイル
192
+
193
+ ```json
194
+ {
195
+ "provider": {
196
+ "name": "ollama",
197
+ "model": "qwen2.5:14b",
198
+ "baseUrl": "http://localhost:11434"
199
+ },
200
+ "translation": {
201
+ "qualityThreshold": 75,
202
+ "maxIterations": 3
203
+ }
204
+ }
205
+ ```
206
+
207
+ ::: tip
208
+ ローカルモデルの場合、過度な改良イテレーションを避けるため、より低い `qualityThreshold`(75)を推奨します。信頼性のある結果を得るには14B以上のモデルを使用してください。
209
+ :::
210
+
211
+ ### モデル固有の設定
212
+
213
+ 異なる文書タイプに対して:
214
+
215
+ ```bash
216
+ # Best quality - qwen2.5:14b (recommended for most use cases)
217
+ llm-translate file api-spec.md -s en -t ko \
218
+ --provider ollama \
219
+ --model qwen2.5:14b \
220
+ --quality 75
221
+
222
+ # Higher quality with 32B model (requires 32GB RAM)
223
+ llm-translate file legal-doc.md -s en -t ko \
224
+ --provider ollama \
225
+ --model qwen2.5:32b \
226
+ --quality 80
227
+
228
+ # README files - lighter model for simple content
229
+ llm-translate file README.md -s en -t ko \
230
+ --provider ollama \
231
+ --model llama3.2 \
232
+ --quality 70
233
+
234
+ # Large documentation sets - balance speed and quality
235
+ llm-translate dir ./docs ./docs-ko -s en -t ko \
236
+ --provider ollama \
237
+ --model qwen2.5:14b \
238
+ --parallel 2
239
+ ```
240
+
241
+ ## パフォーマンス最適化
242
+
243
+ ### GPU アクセラレーション
244
+
245
+ #### NVIDIA(Linux/Windows)
246
+
247
+ ```bash
248
+ # Check CUDA availability
249
+ nvidia-smi
250
+
251
+ # Ollama automatically uses CUDA if available
252
+ ollama serve
253
+ ```
254
+
255
+ #### Apple Silicon(macOS)
256
+
257
+ Metalアクセラレーションは、M1/M2/M3/M4 Macで自動的に有効になります。
258
+
259
+ ```bash
260
+ # Check GPU usage
261
+ sudo powermetrics --samplers gpu_power
262
+ ```
263
+
264
+ ### メモリ管理
265
+
266
+ ```bash
267
+ # Set GPU memory limit (Linux with NVIDIA)
268
+ CUDA_VISIBLE_DEVICES=0 ollama serve
269
+
270
+ # Limit CPU threads
271
+ OLLAMA_NUM_PARALLEL=2 ollama serve
272
+ ```
273
+
274
+ ### 大きな文書の最適化
275
+
276
+ ```bash
277
+ # Reduce chunk size for memory-constrained systems
278
+ llm-translate file large-doc.md --target ko \
279
+ --provider ollama \
280
+ --chunk-size 512
281
+
282
+ # Disable caching to reduce memory usage
283
+ llm-translate file doc.md --target ko \
284
+ --provider ollama \
285
+ --no-cache
286
+
287
+ # Single-threaded processing for stability
288
+ llm-translate dir ./docs ./docs-ko --target ko \
289
+ --provider ollama \
290
+ --parallel 1
291
+ ```
292
+
293
+ ## リモートOllamaサーバー
294
+
295
+ ### サーバーセットアップ
296
+
297
+ サーバーマシンで:
298
+
299
+ ```bash
300
+ # Allow external connections
301
+ OLLAMA_HOST=0.0.0.0 ollama serve
302
+ ```
303
+
304
+ ::: warning セキュリティ
305
+ Ollamaは信頼できるネットワークでのみ公開してください。リモートアクセスにはVPNまたはSSHトンネルの使用を検討してください。
306
+ :::
307
+
308
+ ### SSHトンネル(推奨)
309
+
310
+ ```bash
311
+ # Create secure tunnel to remote server
312
+ ssh -L 11434:localhost:11434 user@remote-server
313
+
314
+ # Then use as normal
315
+ llm-translate file doc.md --target ko --provider ollama
316
+ ```
317
+
318
+ ### 直接接続
319
+
320
+ ```bash
321
+ # Set remote server URL
322
+ export OLLAMA_BASE_URL=http://remote-server:11434
323
+
324
+ llm-translate file doc.md --target ko --provider ollama
325
+ ```
326
+
327
+ ### チームサーバー用Docker Compose
328
+
329
+ ```yaml
330
+ # docker-compose.yml
331
+ version: '3.8'
332
+ services:
333
+ ollama:
334
+ image: ollama/ollama
335
+ ports:
336
+ - "11434:11434"
337
+ volumes:
338
+ - ollama_data:/root/.ollama
339
+ deploy:
340
+ resources:
341
+ reservations:
342
+ devices:
343
+ - driver: nvidia
344
+ count: 1
345
+ capabilities: [gpu]
346
+ restart: unless-stopped
347
+
348
+ volumes:
349
+ ollama_data:
350
+ ```
351
+
352
+ ## トラブルシューティング
353
+
354
+ ### 接続エラー
355
+
356
+ ```
357
+ Error: Cannot connect to Ollama server at http://localhost:11434
358
+ ```
359
+
360
+ **解決策:**
361
+
362
+ ```bash
363
+ # Check if Ollama is running
364
+ curl http://localhost:11434/api/tags
365
+
366
+ # Start the server
367
+ ollama serve
368
+
369
+ # Check for port conflicts
370
+ lsof -i :11434
371
+ ```
372
+
373
+ ### モデルが見つからない
374
+
375
+ ```
376
+ Error: Model "llama3.2" not found. Pull it with: ollama pull llama3.2
377
+ ```
378
+
379
+ **解決策:**
380
+
381
+ ```bash
382
+ # Download the model
383
+ ollama pull llama3.2
384
+
385
+ # Verify installation
386
+ ollama list
387
+ ```
388
+
389
+ ### メモリ不足
390
+
391
+ ```
392
+ Error: Out of memory. Try a smaller model or reduce chunk size.
393
+ ```
394
+
395
+ **解決策:**
396
+
397
+ ```bash
398
+ # Use a smaller model
399
+ ollama pull llama3.2:1b
400
+ llm-translate file doc.md --target ko --provider ollama --model llama3.2:1b
401
+
402
+ # Reduce chunk size
403
+ llm-translate file doc.md --target ko --provider ollama --chunk-size 256
404
+
405
+ # Close other applications to free RAM
406
+ ```
407
+
408
+ ### パフォーマンスの低下
409
+
410
+ **解決策:**
@@ -0,0 +1,221 @@
1
+ # プロンプトキャッシング
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ プロンプトキャッシングは、繰り返しコンテンツのAPIコストを最大90%削減するコスト最適化機能です。
8
+
9
+ ## 仕組み
10
+
11
+ ドキュメントを翻訳する際、プロンプトの特定の部分は一定のままです:
12
+
13
+ - **システム指示**: 翻訳ルールとガイドライン
14
+ - **用語集**: ドメイン固有の専門用語
15
+
16
+ これらはキャッシュされ、複数のチャンクで再利用されることで、大幅なコスト削減を実現します。
17
+
18
+ ```
19
+ Request 1 (First Chunk):
20
+ ┌─────────────────────────────────┐
21
+ │ System Instructions (CACHED) │ ◀─ Written to cache
22
+ ├─────────────────────────────────┤
23
+ │ Glossary (CACHED) │ ◀─ Written to cache
24
+ ├─────────────────────────────────┤
25
+ │ Source Text (NOT cached) │
26
+ └─────────────────────────────────┘
27
+
28
+ Request 2+ (Subsequent Chunks):
29
+ ┌─────────────────────────────────┐
30
+ │ System Instructions (CACHED) │ ◀─ Read from cache (90% off)
31
+ ├─────────────────────────────────┤
32
+ │ Glossary (CACHED) │ ◀─ Read from cache (90% off)
33
+ ├─────────────────────────────────┤
34
+ │ Source Text (NOT cached) │
35
+ └─────────────────────────────────┘
36
+ ```
37
+
38
+ ## コストへの影響
39
+
40
+ ### 料金(Claude)
41
+
42
+ | トークンタイプ | コスト倍率 |
43
+ |------------|-----------------|
44
+ | 通常の入力 | 1.0x |
45
+ | キャッシュ書き込み | 1.25x(初回使用) |
46
+ | キャッシュ読み込み | 0.1x(2回目以降) |
47
+ | 出力 | 1.0x |
48
+
49
+ ### 計算例
50
+
51
+ 500トークンの用語集を持つ10チャンクのドキュメントの場合:
52
+
53
+ **キャッシングなし:**
54
+ ```
55
+ 10 chunks × 500 glossary tokens = 5,000 tokens
56
+ ```
57
+
58
+ **キャッシングあり:**
59
+ ```
60
+ First chunk: 500 × 1.25 = 625 tokens (cache write)
61
+ 9 chunks: 500 × 0.1 × 9 = 450 tokens (cache read)
62
+ Total: 1,075 tokens (78% savings)
63
+ ```
64
+
65
+ ## 要件
66
+
67
+ ### 最小トークンしきい値
68
+
69
+ プロンプトキャッシングには最小コンテンツ長が必要です:
70
+
71
+ | モデル | 最小トークン数 |
72
+ |-------|---------------|
73
+ | Claude Haiku 4.5 | 4,096 |
74
+ | Claude Haiku 3.5 | 2,048 |
75
+ | Claude Sonnet | 1,024 |
76
+ | Claude Opus | 1,024 |
77
+
78
+ これらのしきい値を下回るコンテンツはキャッシュされません。
79
+
80
+ ### プロバイダーサポート
81
+
82
+ | プロバイダー | キャッシングサポート |
83
+ |----------|-----------------|
84
+ | Claude | ✅ 完全サポート |
85
+ | OpenAI | ✅ 自動 |
86
+ | Ollama | ❌ 利用不可 |
87
+
88
+ ## 設定
89
+
90
+ Claudeではキャッシングがデフォルトで有効です。無効にするには:
91
+
92
+ ```bash
93
+ llm-translate file doc.md -o doc.ko.md --target ko --no-cache
94
+ ```
95
+
96
+ または設定ファイルで:
97
+
98
+ ```json
99
+ {
100
+ "provider": {
101
+ "name": "claude",
102
+ "caching": false
103
+ }
104
+ }
105
+ ```
106
+
107
+ ## キャッシュパフォーマンスの監視
108
+
109
+ ### CLI出力
110
+
111
+ ```
112
+ ✓ Translation complete
113
+ Cache: 890 read / 234 written (78% hit rate)
114
+ ```
115
+
116
+ ### 詳細モード
117
+
118
+ ```bash
119
+ llm-translate file doc.md -o doc.ko.md --target ko --verbose
120
+ ```
121
+
122
+ チャンクごとのキャッシュ統計を表示します:
123
+
124
+ ```
125
+ [Chunk 1/10] Cache: 0 read / 890 written
126
+ [Chunk 2/10] Cache: 890 read / 0 written
127
+ [Chunk 3/10] Cache: 890 read / 0 written
128
+ ...
129
+ ```
130
+
131
+ ### プログラマティックアクセス
132
+
133
+ ```typescript
134
+ const result = await engine.translateFile({
135
+ input: 'doc.md',
136
+ output: 'doc.ko.md',
137
+ targetLang: 'ko',
138
+ });
139
+
140
+ console.log(result.metadata.tokensUsed);
141
+ // {
142
+ // input: 5000,
143
+ // output: 6000,
144
+ // cacheRead: 8000,
145
+ // cacheWrite: 1000
146
+ // }
147
+ ```
148
+
149
+ ## キャッシュ効率の最大化
150
+
151
+ ### 1. 一貫した用語集の使用
152
+
153
+ 同じ用語集コンテンツ = 同じキャッシュキー
154
+
155
+ ```bash
156
+ # Good: Same glossary for all files
157
+ llm-translate dir ./docs ./docs-ko --target ko --glossary glossary.json
158
+
159
+ # Less efficient: Different glossary per file
160
+ llm-translate file a.md --glossary a-glossary.json
161
+ llm-translate file b.md --glossary b-glossary.json
162
+ ```
163
+
164
+ ### 2. 関連ファイルのバッチ処理
165
+
166
+ キャッシュは約5分間持続します。ファイルをまとめて処理してください:
167
+
168
+ ```bash
169
+ # Efficient: Sequential processing shares cache
170
+ llm-translate dir ./docs ./docs-ko --target ko
171
+ ```
172
+
173
+ ### 3. ファイルをサイズ順に並べる
174
+
175
+ 大きなファイルから始めてキャッシュをウォームアップします:
176
+
177
+ ```bash
178
+ # Cache is populated by first file, reused by rest
179
+ llm-translate file large-doc.md ...
180
+ llm-translate file small-doc.md ...
181
+ ```
182
+
183
+ ### 4. 大きな用語集の戦略的使用
184
+
185
+ 大きな用語集ほどキャッシングの恩恵を受けます:
186
+
187
+ | 用語集サイズ | キャッシュ節約率 |
188
+ |---------------|---------------|
189
+ | 100トークン | ~70% |
190
+ | 500トークン | ~78% |
191
+ | 1000+トークン | ~80%+ |
192
+
193
+ ## トラブルシューティング
194
+
195
+ ### キャッシュが機能しない
196
+
197
+ **症状:**`cacheRead` トークンが報告されない
198
+
199
+ **原因:**
200
+ 1. コンテンツが最小しきい値を下回っている
201
+ 2. リクエスト間でコンテンツが変更された
202
+ 3. キャッシュTTLが期限切れ(5分)
203
+
204
+ **解決策:**
205
+ - 用語集 + システムプロンプトが最小トークン数を超えることを確認
206
+ - ファイルを連続して処理
207
+ - デバッグには詳細モードを使用
208
+
209
+ ### 高いキャッシュ書き込みコスト
210
+
211
+ **症状:** 予想以上に多くの `cacheWrite`
212
+
213
+ **原因:**
214
+ 1. 多数の固有用語集
215
+ 2. ファイル処理の間隔が長すぎる
216
+ 3. 実行間でのキャッシュ無効化
217
+
218
+ **解決策:**
219
+ - 用語集を統合
220
+ - バッチ処理を使用
221
+ - 5分以内のウィンドウで処理