@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,171 @@
1
+ # API リファレンス
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ llm-translateはNode.jsアプリケーションでプログラム的に使用できます。
8
+
9
+ ## インストール
10
+
11
+ ```bash
12
+ npm install @llm-translate/cli
13
+ ```
14
+
15
+ ## クイックスタート
16
+
17
+ ```typescript
18
+ import { TranslationEngine, createClaudeProvider } from '@llm-translate/cli';
19
+
20
+ // Create provider
21
+ const provider = createClaudeProvider({
22
+ apiKey: process.env.ANTHROPIC_API_KEY,
23
+ });
24
+
25
+ // Create engine
26
+ const engine = new TranslationEngine({
27
+ provider,
28
+ qualityThreshold: 85,
29
+ });
30
+
31
+ // Translate
32
+ const result = await engine.translateFile({
33
+ input: 'README.md',
34
+ output: 'README.ko.md',
35
+ sourceLang: 'en',
36
+ targetLang: 'ko',
37
+ });
38
+
39
+ console.log(result.metadata);
40
+ ```
41
+
42
+ ## コアクラス
43
+
44
+ ### [TranslationEngine](./engine)
45
+
46
+ 翻訳操作のメインエントリーポイントです。
47
+
48
+ ```typescript
49
+ const engine = new TranslationEngine(options);
50
+ await engine.translateFile({ input, output, targetLang });
51
+ await engine.translateContent(content, options);
52
+ ```
53
+
54
+ ### [TranslationAgent](./agent)
55
+
56
+ Self-Refineループを持つ低レベル翻訳エージェントです。
57
+
58
+ ```typescript
59
+ const agent = new TranslationAgent({ provider, qualityThreshold });
60
+ const result = await agent.translate(request);
61
+ ```
62
+
63
+ ### [Providers](./providers)
64
+
65
+ LLMプロバイダーの実装です。
66
+
67
+ ```typescript
68
+ import {
69
+ createClaudeProvider,
70
+ createOpenAIProvider,
71
+ createOllamaProvider,
72
+ } from '@llm-translate/cli';
73
+ ```
74
+
75
+ ## 型エクスポート
76
+
77
+ ```typescript
78
+ import type {
79
+ // Configuration
80
+ TranslationConfig,
81
+ ProviderConfig,
82
+
83
+ // Requests/Results
84
+ TranslationRequest,
85
+ TranslationResult,
86
+
87
+ // Glossary
88
+ Glossary,
89
+ GlossaryTerm,
90
+ ResolvedGlossary,
91
+
92
+ // Quality
93
+ QualityEvaluation,
94
+
95
+ // Provider
96
+ LLMProvider,
97
+ ChatMessage,
98
+ ChatResponse,
99
+ } from '@llm-translate/cli';
100
+ ```
101
+
102
+ ## ユーティリティ関数
103
+
104
+ ### Chunking
105
+
106
+ ```typescript
107
+ import { chunkContent, chunkMarkdown } from '@llm-translate/cli';
108
+
109
+ const chunks = chunkContent(text, { maxTokens: 1024 });
110
+ const mdChunks = chunkMarkdown(markdown, { maxTokens: 1024 });
111
+ ```
112
+
113
+ ### 用語集
114
+
115
+ ```typescript
116
+ import { loadGlossary, resolveGlossary, createGlossaryLookup } from '@llm-translate/cli';
117
+
118
+ const glossary = await loadGlossary('./glossary.json');
119
+ const resolved = resolveGlossary(glossary, 'ko');
120
+ const lookup = createGlossaryLookup(resolved);
121
+
122
+ const terms = lookup.findAll(sourceText);
123
+ ```
124
+
125
+ ### トークン推定
126
+
127
+ ```typescript
128
+ import { estimateTokens, calculateTokenBudget } from '@llm-translate/cli';
129
+
130
+ const tokens = estimateTokens(text);
131
+ const budget = calculateTokenBudget(text, { glossaryTokens: 500 });
132
+ ```
133
+
134
+ ## エラーハンドリング
135
+
136
+ ```typescript
137
+ import { TranslationError, ErrorCode } from '@llm-translate/cli';
138
+
139
+ try {
140
+ await engine.translateFile(options);
141
+ } catch (error) {
142
+ if (error instanceof TranslationError) {
143
+ switch (error.code) {
144
+ case ErrorCode.FILE_NOT_FOUND:
145
+ // Handle missing file
146
+ break;
147
+ case ErrorCode.QUALITY_THRESHOLD_NOT_MET:
148
+ // Handle quality issue
149
+ console.log('Score:', error.details.score);
150
+ break;
151
+ case ErrorCode.PROVIDER_RATE_LIMITED:
152
+ // Handle rate limit
153
+ break;
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## エラーコード
160
+
161
+ | コード | 説明 |
162
+ |------|-------------|
163
+ |`FILE_NOT_FOUND`| 入力ファイルが存在しません |
164
+ |`INVALID_CONFIG`| 設定の検証に失敗しました |
165
+ |`GLOSSARY_NOT_FOUND`| 用語集ファイルが見つかりません |
166
+ |`GLOSSARY_INVALID`| 用語集の検証に失敗しました |
167
+ |`PROVIDER_AUTH_FAILED`| APIキーが無効です |
168
+ |`PROVIDER_RATE_LIMITED`| レート制限を超過しました |
169
+ |`PROVIDER_ERROR`| 一般的なプロバイダーエラーです |
170
+ |`QUALITY_THRESHOLD_NOT_MET`| 翻訳品質が品質しきい値を下回りました |
171
+ |`PARSE_ERROR`| ドキュメントの解析に失敗しました |
@@ -0,0 +1,304 @@
1
+ # プロバイダー
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のドキュメントはすべてClaude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ 異なるAIサービス向けのLLMプロバイダー実装です。
8
+
9
+ ## 概要
10
+
11
+ すべてのプロバイダーは `LLMProvider` インターフェースを実装しています:
12
+
13
+ ```typescript
14
+ interface LLMProvider {
15
+ readonly name: ProviderName;
16
+ readonly defaultModel: string;
17
+
18
+ chat(request: ChatRequest): Promise<ChatResponse>;
19
+ stream(request: ChatRequest): AsyncIterable<string>;
20
+ countTokens(text: string): number;
21
+ getModelInfo(model?: string): ModelInfo;
22
+ }
23
+ ```
24
+
25
+ ## Claudeプロバイダー
26
+
27
+ 推奨プロバイダーで、プロンプトキャッシングを完全にサポートしています。
28
+
29
+ ### セットアップ
30
+
31
+ ```typescript
32
+ import { createClaudeProvider } from '@llm-translate/cli';
33
+
34
+ const provider = createClaudeProvider({
35
+ apiKey: process.env.ANTHROPIC_API_KEY,
36
+ defaultModel: 'claude-haiku-4-5-20251001',
37
+ });
38
+ ```
39
+
40
+ ### 設定
41
+
42
+ ```typescript
43
+ interface ClaudeProviderConfig {
44
+ apiKey?: string; // Defaults to ANTHROPIC_API_KEY env
45
+ baseUrl?: string; // Custom API endpoint
46
+ defaultModel?: string; // Default: claude-haiku-4-5-20251001
47
+ }
48
+ ```
49
+
50
+ ### 利用可能なモデル
51
+
52
+ | モデル | コンテキスト | 入力コスト | 出力コスト |
53
+ |-------|---------|------------|-------------|
54
+ |`claude-haiku-4-5-20251001`| 200K | $0.001/1K | $0.005/1K |
55
+ |`claude-sonnet-4-5-20250929`| 200K | $0.003/1K | $0.015/1K |
56
+ |`claude-opus-4-5-20251101`| 200K | $0.015/1K | $0.075/1K |
57
+
58
+ ### プロンプトキャッシング
59
+
60
+ Claudeプロバイダーはプロンプトキャッシングを自動的にサポートします:
61
+
62
+ ```typescript
63
+ const response = await provider.chat({
64
+ messages: [
65
+ {
66
+ role: 'user',
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: 'System instructions...',
71
+ cacheControl: { type: 'ephemeral' }, // Cache this
72
+ },
73
+ {
74
+ type: 'text',
75
+ text: 'User content...', // Don't cache
76
+ },
77
+ ],
78
+ },
79
+ ],
80
+ });
81
+
82
+ console.log(response.usage);
83
+ // {
84
+ // inputTokens: 100,
85
+ // outputTokens: 200,
86
+ // cacheReadTokens: 500, // Tokens read from cache
87
+ // cacheWriteTokens: 0, // Tokens written to cache
88
+ // }
89
+ ```
90
+
91
+ ## OpenAIプロバイダー
92
+
93
+ ### セットアップ
94
+
95
+ ```typescript
96
+ import { createOpenAIProvider } from '@llm-translate/cli';
97
+
98
+ const provider = createOpenAIProvider({
99
+ apiKey: process.env.OPENAI_API_KEY,
100
+ defaultModel: 'gpt-4o-mini',
101
+ });
102
+ ```
103
+
104
+ ### 設定
105
+
106
+ ```typescript
107
+ interface OpenAIProviderConfig {
108
+ apiKey?: string; // Defaults to OPENAI_API_KEY env
109
+ baseUrl?: string; // Custom API endpoint
110
+ defaultModel?: string; // Default: gpt-4o-mini
111
+ organization?: string; // OpenAI organization ID
112
+ }
113
+ ```
114
+
115
+ ### 利用可能なモデル
116
+
117
+ | モデル | コンテキスト | 入力コスト | 出力コスト |
118
+ |-------|---------|------------|-------------|
119
+ |`gpt-4o-mini`| 128K | $0.00015/1K | $0.0006/1K |
120
+ |`gpt-4o`| 128K | $0.0025/1K | $0.01/1K |
121
+ |`gpt-4-turbo`| 128K | $0.01/1K | $0.03/1K |
122
+
123
+ ### 自動キャッシング
124
+
125
+ OpenAIは1024トークンを超えるプロンプトに対して自動的にキャッシングを処理します。
126
+
127
+ ## Ollamaプロバイダー
128
+
129
+ ローカルでセルフホストされたモデル用です。
130
+
131
+ ### セットアップ
132
+
133
+ ```typescript
134
+ import { createOllamaProvider } from '@llm-translate/cli';
135
+
136
+ const provider = createOllamaProvider({
137
+ baseUrl: 'http://localhost:11434',
138
+ defaultModel: 'llama3.1',
139
+ });
140
+ ```
141
+
142
+ ### 設定
143
+
144
+ ```typescript
145
+ interface OllamaProviderConfig {
146
+ baseUrl?: string; // Default: http://localhost:11434
147
+ defaultModel?: string; // Default: llama3.1
148
+ }
149
+ ```
150
+
151
+ ### 利用可能なモデル
152
+
153
+ Ollamaインストールで利用可能な任意のモデル:
154
+
155
+ ```bash
156
+ # List available models
157
+ ollama list
158
+
159
+ # Pull a model
160
+ ollama pull llama3.1
161
+ ollama pull mistral
162
+ ollama pull codellama
163
+ ```
164
+
165
+ ### 制限事項
166
+
167
+ - プロンプトキャッシングサポートなし
168
+ - モデルによって品質が異なる
169
+ - 限定的なコンテキストウィンドウ(モデル依存)
170
+
171
+ ## プロバイダーインターフェース
172
+
173
+ ### ChatRequest
174
+
175
+ ```typescript
176
+ interface ChatRequest {
177
+ messages: ChatMessage[];
178
+ model?: string;
179
+ temperature?: number; // Default: 0.3
180
+ maxTokens?: number; // Default: 4096
181
+ }
182
+
183
+ interface ChatMessage {
184
+ role: 'system' | 'user' | 'assistant';
185
+ content: string | CacheableTextPart[];
186
+ }
187
+
188
+ interface CacheableTextPart {
189
+ type: 'text';
190
+ text: string;
191
+ cacheControl?: { type: 'ephemeral' };
192
+ }
193
+ ```
194
+
195
+ ### ChatResponse
196
+
197
+ ```typescript
198
+ interface ChatResponse {
199
+ content: string;
200
+ usage: {
201
+ inputTokens: number;
202
+ outputTokens: number;
203
+ cacheReadTokens?: number;
204
+ cacheWriteTokens?: number;
205
+ };
206
+ model: string;
207
+ finishReason: 'stop' | 'length' | 'error';
208
+ }
209
+ ```
210
+
211
+ ### ModelInfo
212
+
213
+ ```typescript
214
+ interface ModelInfo {
215
+ maxContextTokens: number;
216
+ supportsStreaming: boolean;
217
+ costPer1kInput?: number;
218
+ costPer1kOutput?: number;
219
+ }
220
+ ```
221
+
222
+ ## カスタムプロバイダー
223
+
224
+ 独自のプロバイダーを実装します:
225
+
226
+ ```typescript
227
+ import type { LLMProvider, ChatRequest, ChatResponse } from '@llm-translate/cli';
228
+
229
+ class CustomProvider implements LLMProvider {
230
+ readonly name = 'custom' as const;
231
+ readonly defaultModel = 'custom-model';
232
+
233
+ async chat(request: ChatRequest): Promise<ChatResponse> {
234
+ // Your implementation
235
+ const response = await callYourAPI(request);
236
+
237
+ return {
238
+ content: response.text,
239
+ usage: {
240
+ inputTokens: response.promptTokens,
241
+ outputTokens: response.completionTokens,
242
+ },
243
+ model: request.model ?? this.defaultModel,
244
+ finishReason: 'stop',
245
+ };
246
+ }
247
+
248
+ async *stream(request: ChatRequest): AsyncIterable<string> {
249
+ // Streaming implementation
250
+ for await (const chunk of streamYourAPI(request)) {
251
+ yield chunk.text;
252
+ }
253
+ }
254
+
255
+ countTokens(text: string): number {
256
+ // Token estimation
257
+ return Math.ceil(text.length / 4);
258
+ }
259
+
260
+ getModelInfo(model?: string): ModelInfo {
261
+ return {
262
+ maxContextTokens: 100000,
263
+ supportsStreaming: true,
264
+ };
265
+ }
266
+ }
267
+ ```
268
+
269
+ ## プロバイダー選択ガイド
270
+
271
+ | 用途 | 推奨プロバイダー | モデル |
272
+ |----------|---------------------|-------|
273
+ | コスト効率 | Claude | Haiku 4.5 |
274
+ | 高品質 | Claude | Sonnet 4.5 |
275
+ | OpenAIエコシステム | OpenAI | GPT-4o |
276
+ | 予算制約 | OpenAI | GPT-4o-mini |
277
+ | プライバシー/オフライン | Ollama | Llama 3.1 |
278
+ | エンタープライズ | Claude/OpenAI | 様々 |
279
+
280
+ ## エラーハンドリング
281
+
282
+ すべてのプロバイダーは `TranslationError` をスローします:
283
+
284
+ ```typescript
285
+ import { TranslationError, ErrorCode } from '@llm-translate/cli';
286
+
287
+ try {
288
+ await provider.chat(request);
289
+ } catch (error) {
290
+ if (error instanceof TranslationError) {
291
+ switch (error.code) {
292
+ case ErrorCode.PROVIDER_AUTH_FAILED:
293
+ console.error('Invalid API key');
294
+ break;
295
+ case ErrorCode.PROVIDER_RATE_LIMITED:
296
+ console.error('Rate limited, retry later');
297
+ break;
298
+ case ErrorCode.PROVIDER_ERROR:
299
+ console.error('Provider error:', error.message);
300
+ break;
301
+ }
302
+ }
303
+ }
304
+ ```
@@ -0,0 +1,64 @@
1
+ # 変更履歴
2
+
3
+ ::: info 翻訳について
4
+ 英語以外のすべてのドキュメントは、Claude Sonnet 4を使用して自動翻訳されています。
5
+ :::
6
+
7
+ llm-translateのすべての重要な変更は、このファイルに記録されます。
8
+
9
+ 形式は[Keep a Changelog](https://keepachangelog.com/en/1.0.0/)に基づいており、
10
+ このプロジェクトは[Semantic Versioning](https://semver.org/spec/v2.0.0.html)に準拠しています。
11
+
12
+ ## [未リリース]
13
+
14
+ ### 追加
15
+
16
+ - Claudeモデルのプロンプトキャッシングサポート(40-50%のコスト削減)
17
+ - 翻訳結果でのキャッシュトークン使用量追跡
18
+ - TranslationAgentの `enableCaching` オプション
19
+ - トークン使用量メタデータの `cacheRead` および `cacheWrite` フィールド
20
+ - MQM(多次元品質メトリクス)ベースの品質評価システム
21
+ - MAPSスタイルの翻訳前分析ステップ
22
+ - 翻訳モードサポート(`--mode fast|balanced|quality`)
23
+
24
+ ### 変更
25
+
26
+ -`ChatMessage.content` がキャッシュ可能なテキスト部分をサポート
27
+ -`ChatResponse.usage` にキャッシュトークンメトリクスを含む
28
+ - デフォルトモデルを `claude-haiku-4-5-20251001` に更新
29
+
30
+ ### ドキュメント
31
+
32
+ - Ollamaの品質警告を追加:信頼性の高い翻訳には14B+モデルが必要
33
+
34
+ ## [0.1.0] - 2025-12-12
35
+
36
+ ### 追加
37
+
38
+ - 初回リリース
39
+ - 単一ファイル翻訳(`llm-translate file`)
40
+ - ディレクトリ一括翻訳(`llm-translate dir`)
41
+ - 設定初期化(`llm-translate init`)
42
+ - 用語集管理(`llm-translate glossary`)
43
+ - Claude、OpenAI、Ollamaプロバイダーサポート
44
+ - Self-Refine品質制御ループ
45
+ - Markdown ASTベースのChunking
46
+ - 用語集の強制適用
47
+ - 品質しきい値設定
48
+ - 詳細出力モード
49
+
50
+ ### プロバイダー
51
+
52
+ - Claude(claude-haiku-4-5、claude-sonnet-4-5、claude-opus-4-5)
53
+ - OpenAI(gpt-4o-mini、gpt-4o、gpt-4-turbo)
54
+ - Ollama(任意のローカルモデル)
55
+
56
+ ### ドキュメント
57
+
58
+ - CLIリファレンスドキュメント
59
+ - APIリファレンスドキュメント
60
+ - 入門ガイド
61
+ - 設定ガイド
62
+ - 用語集ガイド
63
+ - 品質制御ガイド
64
+ - コスト最適化ガイド