@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.
- package/.dockerignore +51 -0
- package/.env.example +33 -0
- package/.github/workflows/docs-pages.yml +57 -0
- package/.github/workflows/release.yml +49 -0
- package/.translaterc.json +44 -0
- package/CLAUDE.md +243 -0
- package/Dockerfile +55 -0
- package/README.md +371 -0
- package/RFC.md +1595 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +4494 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +1152 -0
- package/dist/index.js +3841 -0
- package/dist/index.js.map +1 -0
- package/docker-compose.yml +56 -0
- package/docs/.vitepress/config.ts +161 -0
- package/docs/api/agent.md +262 -0
- package/docs/api/engine.md +274 -0
- package/docs/api/index.md +171 -0
- package/docs/api/providers.md +304 -0
- package/docs/changelog.md +64 -0
- package/docs/cli/dir.md +243 -0
- package/docs/cli/file.md +213 -0
- package/docs/cli/glossary.md +273 -0
- package/docs/cli/index.md +129 -0
- package/docs/cli/init.md +158 -0
- package/docs/cli/serve.md +211 -0
- package/docs/glossary.json +235 -0
- package/docs/guide/chunking.md +272 -0
- package/docs/guide/configuration.md +139 -0
- package/docs/guide/cost-optimization.md +237 -0
- package/docs/guide/docker.md +371 -0
- package/docs/guide/getting-started.md +150 -0
- package/docs/guide/glossary.md +241 -0
- package/docs/guide/index.md +86 -0
- package/docs/guide/ollama.md +515 -0
- package/docs/guide/prompt-caching.md +221 -0
- package/docs/guide/providers.md +232 -0
- package/docs/guide/quality-control.md +206 -0
- package/docs/guide/vitepress-integration.md +265 -0
- package/docs/index.md +63 -0
- package/docs/ja/api/agent.md +262 -0
- package/docs/ja/api/engine.md +274 -0
- package/docs/ja/api/index.md +171 -0
- package/docs/ja/api/providers.md +304 -0
- package/docs/ja/changelog.md +64 -0
- package/docs/ja/cli/dir.md +243 -0
- package/docs/ja/cli/file.md +213 -0
- package/docs/ja/cli/glossary.md +273 -0
- package/docs/ja/cli/index.md +111 -0
- package/docs/ja/cli/init.md +158 -0
- package/docs/ja/guide/chunking.md +271 -0
- package/docs/ja/guide/configuration.md +139 -0
- package/docs/ja/guide/cost-optimization.md +30 -0
- package/docs/ja/guide/getting-started.md +150 -0
- package/docs/ja/guide/glossary.md +214 -0
- package/docs/ja/guide/index.md +32 -0
- package/docs/ja/guide/ollama.md +410 -0
- package/docs/ja/guide/prompt-caching.md +221 -0
- package/docs/ja/guide/providers.md +232 -0
- package/docs/ja/guide/quality-control.md +137 -0
- package/docs/ja/guide/vitepress-integration.md +265 -0
- package/docs/ja/index.md +58 -0
- package/docs/ko/api/agent.md +262 -0
- package/docs/ko/api/engine.md +274 -0
- package/docs/ko/api/index.md +171 -0
- package/docs/ko/api/providers.md +304 -0
- package/docs/ko/changelog.md +64 -0
- package/docs/ko/cli/dir.md +243 -0
- package/docs/ko/cli/file.md +213 -0
- package/docs/ko/cli/glossary.md +273 -0
- package/docs/ko/cli/index.md +111 -0
- package/docs/ko/cli/init.md +158 -0
- package/docs/ko/guide/chunking.md +271 -0
- package/docs/ko/guide/configuration.md +139 -0
- package/docs/ko/guide/cost-optimization.md +30 -0
- package/docs/ko/guide/getting-started.md +150 -0
- package/docs/ko/guide/glossary.md +214 -0
- package/docs/ko/guide/index.md +32 -0
- package/docs/ko/guide/ollama.md +410 -0
- package/docs/ko/guide/prompt-caching.md +221 -0
- package/docs/ko/guide/providers.md +232 -0
- package/docs/ko/guide/quality-control.md +137 -0
- package/docs/ko/guide/vitepress-integration.md +265 -0
- package/docs/ko/index.md +58 -0
- package/docs/zh/api/agent.md +262 -0
- package/docs/zh/api/engine.md +274 -0
- package/docs/zh/api/index.md +171 -0
- package/docs/zh/api/providers.md +304 -0
- package/docs/zh/changelog.md +64 -0
- package/docs/zh/cli/dir.md +243 -0
- package/docs/zh/cli/file.md +213 -0
- package/docs/zh/cli/glossary.md +273 -0
- package/docs/zh/cli/index.md +111 -0
- package/docs/zh/cli/init.md +158 -0
- package/docs/zh/guide/chunking.md +271 -0
- package/docs/zh/guide/configuration.md +139 -0
- package/docs/zh/guide/cost-optimization.md +30 -0
- package/docs/zh/guide/getting-started.md +150 -0
- package/docs/zh/guide/glossary.md +214 -0
- package/docs/zh/guide/index.md +32 -0
- package/docs/zh/guide/ollama.md +410 -0
- package/docs/zh/guide/prompt-caching.md +221 -0
- package/docs/zh/guide/providers.md +232 -0
- package/docs/zh/guide/quality-control.md +137 -0
- package/docs/zh/guide/vitepress-integration.md +265 -0
- package/docs/zh/index.md +58 -0
- package/package.json +91 -0
- package/release.config.mjs +15 -0
- package/schemas/glossary.schema.json +110 -0
- package/src/cli/commands/dir.ts +469 -0
- package/src/cli/commands/file.ts +291 -0
- package/src/cli/commands/glossary.ts +221 -0
- package/src/cli/commands/init.ts +68 -0
- package/src/cli/commands/serve.ts +60 -0
- package/src/cli/index.ts +64 -0
- package/src/cli/options.ts +59 -0
- package/src/core/agent.ts +1119 -0
- package/src/core/chunker.ts +391 -0
- package/src/core/engine.ts +634 -0
- package/src/errors.ts +188 -0
- package/src/index.ts +147 -0
- package/src/integrations/vitepress.ts +549 -0
- package/src/parsers/markdown.ts +383 -0
- package/src/providers/claude.ts +259 -0
- package/src/providers/interface.ts +109 -0
- package/src/providers/ollama.ts +379 -0
- package/src/providers/openai.ts +308 -0
- package/src/providers/registry.ts +153 -0
- package/src/server/index.ts +152 -0
- package/src/server/middleware/auth.ts +93 -0
- package/src/server/middleware/logger.ts +90 -0
- package/src/server/routes/health.ts +84 -0
- package/src/server/routes/translate.ts +210 -0
- package/src/server/types.ts +138 -0
- package/src/services/cache.ts +899 -0
- package/src/services/config.ts +217 -0
- package/src/services/glossary.ts +247 -0
- package/src/types/analysis.ts +164 -0
- package/src/types/index.ts +265 -0
- package/src/types/modes.ts +121 -0
- package/src/types/mqm.ts +157 -0
- package/src/utils/logger.ts +141 -0
- package/src/utils/tokens.ts +116 -0
- package/tests/fixtures/glossaries/ml-glossary.json +53 -0
- package/tests/fixtures/input/lynq-installation.ko.md +350 -0
- package/tests/fixtures/input/lynq-installation.md +350 -0
- package/tests/fixtures/input/simple.ko.md +27 -0
- package/tests/fixtures/input/simple.md +27 -0
- package/tests/unit/chunker.test.ts +229 -0
- package/tests/unit/glossary.test.ts +146 -0
- package/tests/unit/markdown.test.ts +205 -0
- package/tests/unit/tokens.test.ts +81 -0
- package/tsconfig.json +28 -0
- package/tsup.config.ts +34 -0
- 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分以内のウィンドウで処理
|