@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,111 @@
1
+ # CLIリファレンス
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ llm-translateは、ドキュメントを翻訳するためのコマンドラインインターフェースを提供します。
8
+
9
+ ## インストール
10
+
11
+ ```bash
12
+ npm install -g @llm-translate/cli
13
+ ```
14
+
15
+ ## グローバルオプション
16
+
17
+ これらのオプションはすべてのコマンドで使用できます:
18
+
19
+ | オプション | 説明 |
20
+ |--------|-------------|
21
+ |`--help `,`-h`| ヘルプを表示 |
22
+ |`--version `,`-V`| バージョンを表示 |
23
+ |`--verbose `,`-v`| 詳細出力を有効化 |
24
+ |`--quiet `,`-q`| 非必須出力を抑制 |
25
+ |`--config`| 設定ファイルへのパス |
26
+
27
+ ## コマンド
28
+
29
+ ### [file](./file)
30
+
31
+ 単一ファイルを翻訳します。
32
+
33
+ ```bash
34
+ llm-translate file <input> [output] [options]
35
+ ```
36
+
37
+ ### [dir](./dir)
38
+
39
+ ディレクトリ内のすべてのファイルを翻訳します。
40
+
41
+ ```bash
42
+ llm-translate dir <input> <output> [options]
43
+ ```
44
+
45
+ ### [init](./init)
46
+
47
+ 設定ファイルを初期化します。
48
+
49
+ ```bash
50
+ llm-translate init [options]
51
+ ```
52
+
53
+ ### [glossary](./glossary)
54
+
55
+ 用語集ファイルを管理します。
56
+
57
+ ```bash
58
+ llm-translate glossary <subcommand> [options]
59
+ ```
60
+
61
+ ## クイック例
62
+
63
+ ```bash
64
+ # Translate a file to Korean
65
+ llm-translate file README.md -o README.ko.md -s en -t ko
66
+
67
+ # Translate with glossary
68
+ llm-translate file docs/guide.md -o docs/guide.ja.md \
69
+ -s en -t ja --glossary glossary.json
70
+
71
+ # Batch translate a directory
72
+ llm-translate dir ./docs ./docs-ko -s en -t ko
73
+
74
+ # Initialize config
75
+ llm-translate init --provider claude
76
+
77
+ # Validate glossary
78
+ llm-translate glossary validate glossary.json
79
+ ```
80
+
81
+ ## 終了コード
82
+
83
+ | コード | 説明 |
84
+ |------|-------------|
85
+ | 0 | 成功 |
86
+ | 1 | 一般的なエラー |
87
+ | 2 | 無効な引数 |
88
+ | 3 | ファイルが見つかりません |
89
+ | 4 | 品質しきい値を満たしていません(厳密モード) |
90
+ | 5 | プロバイダー/APIエラー |
91
+ | 6 | 用語集の検証に失敗 |
92
+
93
+ ## 環境変数
94
+
95
+ ```bash
96
+ # API Keys
97
+ ANTHROPIC_API_KEY=sk-ant-xxxxx
98
+ OPENAI_API_KEY=sk-xxxxx
99
+ OLLAMA_BASE_URL=http://localhost:11434
100
+ ```
101
+
102
+ ## 設定の優先順位
103
+
104
+ 設定は以下の順序で適用されます(後のものが前のものを上書きします):
105
+
106
+ 1. 組み込みデフォルト
107
+ 2. 設定ファイル(`.translaterc.json`)
108
+ 3. 環境変数
109
+ 4. CLI引数
110
+
111
+ 詳細については[設定](../guide/configuration)をご覧ください。
@@ -0,0 +1,158 @@
1
+ # llm-translate init
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ プロジェクト用の設定ファイルを初期化します。
8
+
9
+ ## 概要
10
+
11
+ ```bash
12
+ llm-translate init [options]
13
+ ```
14
+
15
+ ## オプション
16
+
17
+ | オプション | デフォルト | 説明 |
18
+ |--------|---------|-------------|
19
+ |`--provider `,`-p`| claude | デフォルトプロバイダー |
20
+ |`--model `,`-m`| 可変 | デフォルトモデル |
21
+ |`--quality`| 85 | デフォルト品質しきい値 |
22
+ |`--glossary`| なし | 用語集テンプレートを作成 |
23
+ |`--force `,`-f`| false | 既存の設定を上書き |
24
+
25
+ ## 例
26
+
27
+ ### 基本的な初期化
28
+
29
+ ```bash
30
+ llm-translate init
31
+ ```
32
+
33
+ `.translaterc.json` を作成します:
34
+
35
+ ```json
36
+ {
37
+ "provider": {
38
+ "name": "claude",
39
+ "model": "claude-haiku-4-5-20251001"
40
+ },
41
+ "translation": {
42
+ "qualityThreshold": 85,
43
+ "maxIterations": 4
44
+ },
45
+ "paths": {}
46
+ }
47
+ ```
48
+
49
+ ### プロバイダーを指定
50
+
51
+ ```bash
52
+ llm-translate init --provider openai --model gpt-4o
53
+ ```
54
+
55
+ ### 用語集テンプレートと一緒に
56
+
57
+ ```bash
58
+ llm-translate init --glossary
59
+ ```
60
+
61
+ `glossary.json` も作成します:
62
+
63
+ ```json
64
+ {
65
+ "sourceLanguage": "en",
66
+ "version": "1.0.0",
67
+ "terms": [
68
+ {
69
+ "source": "example",
70
+ "targets": {
71
+ "ko": "예시"
72
+ },
73
+ "context": "Replace with your terms"
74
+ }
75
+ ]
76
+ }
77
+ ```
78
+
79
+ ### カスタム品質設定
80
+
81
+ ```bash
82
+ llm-translate init --quality 95
83
+ ```
84
+
85
+ ## インタラクティブモード
86
+
87
+ オプションなしで実行すると、initはインタラクティブに動作します:
88
+
89
+ ```
90
+ $ llm-translate init
91
+
92
+ llm-translate Configuration Setup
93
+
94
+ ? Select provider: (Use arrow keys)
95
+ ❯ claude
96
+ openai
97
+ ollama
98
+
99
+ ? Select model: (Use arrow keys)
100
+ ❯ claude-haiku-4-5-20251001 (fast, cost-effective)
101
+ claude-sonnet-4-5-20250929 (balanced)
102
+ claude-opus-4-5-20251101 (highest quality)
103
+
104
+ ? Quality threshold: (85)
105
+ ? Create glossary template? (y/N)
106
+
107
+ ✓ Created .translaterc.json
108
+ ```
109
+
110
+ ## 出力ファイル
111
+
112
+ ### .translaterc.json
113
+
114
+ ```json
115
+ {
116
+ "$schema": "https://llm-translate.dev/schema.json",
117
+ "provider": {
118
+ "name": "claude",
119
+ "model": "claude-haiku-4-5-20251001"
120
+ },
121
+ "translation": {
122
+ "qualityThreshold": 85,
123
+ "maxIterations": 4,
124
+ "preserveFormatting": true
125
+ },
126
+ "chunking": {
127
+ "maxTokens": 1024,
128
+ "overlapTokens": 150
129
+ },
130
+ "paths": {
131
+ "glossary": "./glossary.json",
132
+ "cache": "./.translate-cache"
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### glossary.json (--glossaryオプション使用時)
138
+
139
+ ```json
140
+ {
141
+ "$schema": "https://llm-translate.dev/glossary-schema.json",
142
+ "sourceLanguage": "en",
143
+ "version": "1.0.0",
144
+ "description": "Project glossary",
145
+ "terms": []
146
+ }
147
+ ```
148
+
149
+ ## 既存設定の上書き
150
+
151
+ ```bash
152
+ # Will fail if config exists
153
+ llm-translate init
154
+ # Error: .translaterc.json already exists. Use --force to overwrite.
155
+
156
+ # Force overwrite
157
+ llm-translate init --force
158
+ ```
@@ -0,0 +1,271 @@
1
+ # Chunking戦略
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ 大きなドキュメントは翻訳のためにチャンクに分割されます。Chunkingを理解することで、品質とコストを最適化できます。
8
+
9
+ ## なぜChunkingが必要なのか?
10
+
11
+ LLMにはコンテキスト制限があり、集中したコンテンツでより良いパフォーマンスを発揮します:
12
+
13
+ | 理由 | 説明 |
14
+ |--------|-------------|
15
+ | **コンテキスト制限** | モデルには最大入力サイズがあります |
16
+ | **品質** | 小さなチャンクはより集中した注意を得られます |
17
+ | **コスト** | 繰り返しコンテンツのキャッシングが可能になります |
18
+ | **進捗** | 進捗追跡と再開が可能になります |
19
+
20
+ ## デフォルト設定
21
+
22
+ ```json
23
+ {
24
+ "chunking": {
25
+ "maxTokens": 1024,
26
+ "overlapTokens": 150
27
+ }
28
+ }
29
+ ```
30
+
31
+ ## チャンクサイズオプション
32
+
33
+ ### maxTokens
34
+
35
+ チャンクあたりの最大トークン数(プロンプトオーバーヘッドを除く)。
36
+
37
+ | サイズ | 最適な用途 | トレードオフ |
38
+ |------|----------|-----------|
39
+ | 512 | 高品質要件 | より多くのAPI呼び出し |
40
+ | **1024** | 一般的な使用(デフォルト) | バランス型 |
41
+ | 2048 | コスト最適化 | 品質が低下する可能性 |
42
+
43
+ ### overlapTokens
44
+
45
+ 前のチャンクからのコンテキストにより、境界を越えた継続性を確保します。
46
+
47
+ ```
48
+ Chunk 1: [Content A ]
49
+ Chunk 2: [overlap][Content B ]
50
+ Chunk 3: [overlap][Content C ]
51
+ ```
52
+
53
+ ::: tip 推奨オーバーラップ
54
+ `maxTokens` 値の10-15%を使用してください。1024トークンの場合、100-150のオーバーラップトークンが適切です。
55
+ :::
56
+
57
+ ## Markdown対応Chunking
58
+
59
+ llm-translateは、ドキュメント構造を尊重するAST基盤のChunkingを使用します。
60
+
61
+ ### 保持される境界
62
+
63
+ チャンカーは以下の要素を分割しません:
64
+
65
+ | 要素 | 動作 |
66
+ |---------|----------|
67
+ | ヘッダー | セクション境界が保持されます |
68
+ | コードブロック | 常に完全に保持されます |
69
+ | リスト | 可能な場合はアイテムがグループ化されます |
70
+ | テーブル | チャンク間で分割されません |
71
+ | 段落 | 自然な境界で分割されます |
72
+
73
+ ### 例
74
+
75
+ ::: details Chunkingの例を見るにはクリック
76
+
77
+ **入力ドキュメント:**
78
+
79
+ ```markdown
80
+ # Introduction
81
+
82
+ This is the introduction paragraph that explains
83
+ the purpose of the document.
84
+
85
+ ## Getting Started
86
+
87
+ ### Prerequisites
88
+
89
+ - Node.js 20+
90
+ - npm or yarn
91
+
92
+ ### Installation
93
+
94
+ npm install @llm-translate/cli
95
+ ```
96
+
97
+ **結果:**
98
+
99
+ ```
100
+ Chunk 1: # Introduction + paragraph
101
+ Chunk 2: ## Getting Started + ### Prerequisites + list
102
+ Chunk 3: ### Installation + code block
103
+ ```
104
+
105
+ :::
106
+
107
+ ## 設定
108
+
109
+ ::: code-group
110
+
111
+ ```bash [CLI]
112
+ llm-translate file doc.md --target ko --chunk-size 2048
113
+ ```
114
+
115
+ ```json [.translaterc.json]
116
+ {
117
+ "chunking": {
118
+ "maxTokens": 2048,
119
+ "overlapTokens": 200,
120
+ "preservePatterns": [
121
+ "```[\\s\\S]*?```",
122
+ "\\|[^\\n]+\\|"
123
+ ]
124
+ }
125
+ }
126
+ ```
127
+
128
+ ```typescript [Programmatic]
129
+ import { chunkContent } from '@llm-translate/cli';
130
+
131
+ const chunks = chunkContent(content, {
132
+ maxTokens: 1024,
133
+ overlapTokens: 150,
134
+ });
135
+ ```
136
+
137
+ :::
138
+
139
+ ## 最適化プリセット
140
+
141
+ 優先度に基づいて選択してください:
142
+
143
+ ::: code-group
144
+
145
+ ```json [Quality Focus]
146
+ {
147
+ "chunking": {
148
+ "maxTokens": 512,
149
+ "overlapTokens": 100
150
+ }
151
+ }
152
+ ```
153
+
154
+ ```json [Cost Focus]
155
+ {
156
+ "chunking": {
157
+ "maxTokens": 2048,
158
+ "overlapTokens": 50
159
+ }
160
+ }
161
+ ```
162
+
163
+ ```json [Long Documents]
164
+ {
165
+ "chunking": {
166
+ "maxTokens": 1500,
167
+ "overlapTokens": 150
168
+ },
169
+ "translation": {
170
+ "maxIterations": 3
171
+ }
172
+ }
173
+ ```
174
+
175
+ :::
176
+
177
+ ::: info 各プリセットを使用するタイミング
178
+ - **品質重視**: 技術文書、法的コンテンツ
179
+ - **コスト重視**: ブログ投稿、一般的なコンテンツ
180
+ - **長文書**: 書籍、包括的なガイド
181
+ :::
182
+
183
+ ## コンテンツ保護
184
+
185
+ ### 保護される内容
186
+
187
+ llm-translateは特定のコンテンツを翻訳から自動的に保護します:
188
+
189
+ | コンテンツタイプ | 例 | 動作 |
190
+ |--------------|---------|----------|
191
+ | コードブロック |` __INLINE_CODE_16__ `| 翻訳されません |
192
+ | インラインコード |`` ` variable ` ``| 保持されます |
193
+ | URL |`https://...`| 保持されます |
194
+ | ファイルパス |`./path/to/file`| 保持されます |
195
+
196
+ ### リンクの処理
197
+
198
+ リンクURLは保持されますが、リンクテキストは翻訳されます:
199
+
200
+ ```markdown
201
+ [Getting Started](./getting-started.md)
202
+
203
+ [시작하기](./getting-started.md)
204
+ ```
205
+
206
+ ## デバッグ
207
+
208
+ ### チャンクのプレビュー
209
+
210
+ `--dry-run` を使用して、ドキュメントがどのようにチャンク化されるかを確認できます:
211
+
212
+ ```bash
213
+ llm-translate file doc.md --target ko --dry-run --verbose
214
+ ```
215
+
216
+ 出力:
217
+ ```
218
+ Document Analysis:
219
+ Total tokens: ~5,200
220
+ Chunks: 6
221
+ Average chunk size: ~867 tokens
222
+
223
+ Chunk breakdown:
224
+ [1] Lines 1-45 (Introduction) - 823 tokens
225
+ [2] Lines 46-89 (Getting Started) - 912 tokens
226
+ [3] Lines 90-134 (Configuration) - 878 tokens
227
+ ...
228
+ ```
229
+
230
+ ### プログラムによる検査
231
+
232
+ ```typescript
233
+ import { chunkContent, getChunkStats } from '@llm-translate/cli';
234
+
235
+ const chunks = chunkContent(content, { maxTokens: 1024 });
236
+ const stats = getChunkStats(chunks);
237
+
238
+ console.log(`Total chunks: ${stats.count}`);
239
+ console.log(`Average size: ${stats.avgTokens} tokens`);
240
+ ```
241
+
242
+ ## トラブルシューティング
243
+
244
+ ::: warning チャンクが小さすぎる
245
+ **症状**: 多くの小さなチャンク、過度なAPI呼び出し
246
+
247
+ **解決策**:`maxTokens` を増やしてください
248
+ ```json
249
+ { "chunking": { "maxTokens": 2048 } }
250
+ ```
251
+ :::
252
+
253
+ ::: warning チャンク間でコンテキストが失われる
254
+ **症状**: セクション間で用語が一貫しない
255
+
256
+ **解決策**: オーバーラップを増やすか用語集を使用してください
257
+ ```json
258
+ { "chunking": { "overlapTokens": 300 } }
259
+ ```
260
+ :::
261
+
262
+ ::: danger コードブロックが分割される
263
+ **症状**: 出力に構文エラー
264
+
265
+ **原因**: これは決して起こるべきではありません。もし発生した場合は、[問題を報告](https://github.com/selenehyun/llm-translate/issues)してください。
266
+ :::
267
+
268
+ ::: warning テーブルが破損する
269
+ **症状**: テーブルフォーマットが壊れる
270
+
271
+ **解決策**: テーブルは自動的に完全に保持されるはずです。非常に大きなテーブル(100行以上)の場合は、手動で分割することを検討してください。
@@ -0,0 +1,139 @@
1
+ # 設定
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ llm-translateは階層化された設定システムを使用します。設定は以下の順序で適用されます(後の設定が前の設定を上書きします):
8
+
9
+ 1. 組み込みデフォルト
10
+ 2. 設定ファイル(`.translaterc.json`)
11
+ 3. 環境変数
12
+ 4. CLIの引数
13
+
14
+ ## 設定ファイル
15
+
16
+ プロジェクトルートに `.translaterc.json` を作成してください:
17
+
18
+ ```json
19
+ {
20
+ "provider": {
21
+ "name": "claude",
22
+ "model": "claude-haiku-4-5-20251001",
23
+ "apiKey": null
24
+ },
25
+ "translation": {
26
+ "qualityThreshold": 85,
27
+ "maxIterations": 4,
28
+ "preserveFormatting": true
29
+ },
30
+ "chunking": {
31
+ "maxTokens": 1024,
32
+ "overlapTokens": 150
33
+ },
34
+ "paths": {
35
+ "glossary": "./glossary.json",
36
+ "cache": "./.translate-cache"
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### プロバイダー設定
42
+
43
+ | オプション | 型 | デフォルト | 説明 |
44
+ |--------|------|---------|-------------|
45
+ |`name `| string |`"claude"`| プロバイダー名:` claude `、` openai `、` ollama`|
46
+ |`model`| string | 可変 | モデル識別子 |
47
+ |`apiKey`| string | null | APIキー(環境変数を推奨) |
48
+ |`baseUrl`| string | null | カスタムAPIエンドポイント |
49
+
50
+ ### 翻訳設定
51
+
52
+ | オプション | 型 | デフォルト | 説明 |
53
+ |--------|------|---------|-------------|
54
+ |`qualityThreshold `| number |` 85`| 最小品質しきい値(0-100) |
55
+ |`maxIterations `| number |` 4`| 最大改良イテレーション数 |
56
+ |`preserveFormatting `| boolean |` true`| Markdown/HTML構造を保持 |
57
+
58
+ ### Chunking設定
59
+
60
+ | オプション | 型 | デフォルト | 説明 |
61
+ |--------|------|---------|-------------|
62
+ |`maxTokens `| number |` 1024`| チャンクあたりの最大トークン数 |
63
+ |`overlapTokens `| number |` 150`| チャンク間のコンテキストオーバーラップ |
64
+
65
+ ### パス設定
66
+
67
+ | オプション | 型 | デフォルト | 説明 |
68
+ |--------|------|---------|-------------|
69
+ |`glossary`| string | null | 用語集ファイルのパス |
70
+ |`cache`| string | null | 翻訳キャッシュのパス |
71
+
72
+ ## 環境変数
73
+
74
+ ```bash
75
+ # API Keys
76
+ ANTHROPIC_API_KEY=sk-ant-xxxxx
77
+ OPENAI_API_KEY=sk-xxxxx
78
+ OLLAMA_BASE_URL=http://localhost:11434
79
+
80
+ # Default Settings
81
+ LLM_TRANSLATE_PROVIDER=claude
82
+ LLM_TRANSLATE_MODEL=claude-haiku-4-5-20251001
83
+ LLM_TRANSLATE_QUALITY_THRESHOLD=85
84
+ ```
85
+
86
+ ## CLI上書きの例
87
+
88
+ ```bash
89
+ # Override provider
90
+ llm-translate file doc.md -o doc.ko.md --target ko --provider openai
91
+
92
+ # Override model
93
+ llm-translate file doc.md -o doc.ko.md --target ko --model claude-sonnet-4-5-20250929
94
+
95
+ # Override quality threshold
96
+ llm-translate file doc.md -o doc.ko.md --target ko --quality 90
97
+
98
+ # Override max iterations
99
+ llm-translate file doc.md -o doc.ko.md --target ko --max-iterations 6
100
+ ```
101
+
102
+ ## プロジェクト別設定
103
+
104
+ モノレポやマルチプロジェクト設定の場合、各プロジェクトディレクトリに `.translaterc.json` を配置してください:
105
+
106
+ ```
107
+ my-monorepo/
108
+ ├── packages/
109
+ │ ├── frontend/
110
+ │ │ ├── .translaterc.json # Frontend-specific terms
111
+ │ │ └── docs/
112
+ │ └── backend/
113
+ │ ├── .translaterc.json # Backend-specific terms
114
+ │ └── docs/
115
+ └── .translaterc.json # Shared defaults
116
+ ```
117
+
118
+ llm-translateは現在のディレクトリから上位に向かって設定ファイルを検索します。
119
+
120
+ ## モデル選択ガイド
121
+
122
+ | モデル | 速度 | 品質 | コスト | 最適な用途 |
123
+ |-------|-------|---------|------|----------|
124
+ |`claude-haiku-4-5-20251001`| 高速 | 良好 | 低 | 一般的なドキュメント、大量処理 |
125
+ |`claude-sonnet-4-5-20250929`| 中程度 | 優秀 | 中程度 | 技術文書、品質重視 |
126
+ |`claude-opus-4-5-20251101`| 低速 | 最高 | 高 | 複雑なコンテンツ、ニュアンスのあるテキスト |
127
+ |`gpt-4o-mini`| 高速 | 良好 | 低 | Haikuの代替 |
128
+ |`gpt-4o`| 中程度 | 優秀 | 中程度 | Sonnetの代替 |
129
+
130
+ ## 品質しきい値ガイドライン
131
+
132
+ | しきい値 | 使用ケース |
133
+ |-----------|----------|
134
+ | 70-75 | 下書き翻訳、内部文書 |
135
+ | 80-85 | 標準的なドキュメント(デフォルト) |
136
+ | 90-95 | 公開用、マーケティングコンテンツ |
137
+ | 95+ | 法的、医療、規制対象コンテンツ |
138
+
139
+ 高いしきい値はより多くのイテレーションが必要で、コストも高くなります。
@@ -0,0 +1,30 @@
1
+ # コスト最適化
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4.5を使用して自動翻訳されています。
5
+ :::
6
+
7
+ このガイドでは、翻訳品質を維持しながらAPIコストを最小化する戦略について説明します。
8
+
9
+ ## コスト構造
10
+
11
+ ### トークン価格(2025年時点)
12
+
13
+ | モデル | 入力(1K) | 出力(1K) | キャッシュ読み取り | キャッシュ書き込み |
14
+ |-------|-----------|-------------|------------|-------------|
15
+ | Claude Haiku 4.5 | $0.001 | $0.005 | $0.0001 | $0.00125 |
16
+ | Claude Sonnet 4.5 | $0.003 | $0.015 | $0.0003 | $0.00375 |
17
+ | Claude Opus 4.5 | $0.015 | $0.075 | $0.0015 | $0.01875 |
18
+ | GPT-4o-mini | $0.00015 | $0.0006 | 自動 | 自動 |
19
+ | GPT-4o | $0.0025 | $0.01 | 自動 | 自動 |
20
+
21
+ ### コスト要因
22
+
23
+ - [ ] 標準的なドキュメントにはHaikuを使用する
24
+ - [ ] 品質しきい値を適切に設定する(必要以上に高く設定しない)
25
+ - [ ] プロンプトキャッシングを有効にして最大限活用する
26
+ - [ ] ファイルをバッチで処理する
27
+ - [ ] 用語集を簡潔に保つ
28
+ - [ ] 増分更新には翻訳キャッシュを使用する
29
+ - [ ] 詳細出力でコストを監視する
30
+ - [ ] 大規模なジョブの前に見積もりを行う