@nahisaho/katashiro-llm 2.0.0
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/LICENSE +21 -0
- package/dist/LLMClient.d.ts +64 -0
- package/dist/LLMClient.d.ts.map +1 -0
- package/dist/LLMClient.js +139 -0
- package/dist/LLMClient.js.map +1 -0
- package/dist/PromptManager.d.ts +66 -0
- package/dist/PromptManager.d.ts.map +1 -0
- package/dist/PromptManager.js +121 -0
- package/dist/PromptManager.js.map +1 -0
- package/dist/TokenCounter.d.ts +43 -0
- package/dist/TokenCounter.d.ts.map +1 -0
- package/dist/TokenCounter.js +100 -0
- package/dist/TokenCounter.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/AzureOpenAILLMProvider.d.ts +82 -0
- package/dist/providers/AzureOpenAILLMProvider.d.ts.map +1 -0
- package/dist/providers/AzureOpenAILLMProvider.js +339 -0
- package/dist/providers/AzureOpenAILLMProvider.js.map +1 -0
- package/dist/providers/BaseLLMProvider.d.ts +51 -0
- package/dist/providers/BaseLLMProvider.d.ts.map +1 -0
- package/dist/providers/BaseLLMProvider.js +72 -0
- package/dist/providers/BaseLLMProvider.js.map +1 -0
- package/dist/providers/LLMFactory.d.ts +75 -0
- package/dist/providers/LLMFactory.d.ts.map +1 -0
- package/dist/providers/LLMFactory.js +149 -0
- package/dist/providers/LLMFactory.js.map +1 -0
- package/dist/providers/MockLLMProvider.d.ts +57 -0
- package/dist/providers/MockLLMProvider.d.ts.map +1 -0
- package/dist/providers/MockLLMProvider.js +120 -0
- package/dist/providers/MockLLMProvider.js.map +1 -0
- package/dist/providers/OllamaLLMProvider.d.ts +73 -0
- package/dist/providers/OllamaLLMProvider.d.ts.map +1 -0
- package/dist/providers/OllamaLLMProvider.js +242 -0
- package/dist/providers/OllamaLLMProvider.js.map +1 -0
- package/dist/providers/OpenAILLMProvider.d.ts +87 -0
- package/dist/providers/OpenAILLMProvider.d.ts.map +1 -0
- package/dist/providers/OpenAILLMProvider.js +349 -0
- package/dist/providers/OpenAILLMProvider.js.map +1 -0
- package/dist/providers/index.d.ts +17 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/types.d.ts +251 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
- package/src/LLMClient.ts +171 -0
- package/src/PromptManager.ts +156 -0
- package/src/TokenCounter.ts +114 -0
- package/src/index.ts +35 -0
- package/src/providers/AzureOpenAILLMProvider.ts +494 -0
- package/src/providers/BaseLLMProvider.ts +110 -0
- package/src/providers/LLMFactory.ts +216 -0
- package/src/providers/MockLLMProvider.ts +173 -0
- package/src/providers/OllamaLLMProvider.ts +322 -0
- package/src/providers/OpenAILLMProvider.ts +500 -0
- package/src/providers/index.ts +35 -0
- package/src/types.ts +268 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Package Types
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-LLM-001, REQ-LLM-005, REQ-LLM-006
|
|
5
|
+
* @design DES-KATASHIRO-003-LLM §3.1
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ZodType, z } from 'zod';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* メッセージロール
|
|
12
|
+
*/
|
|
13
|
+
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* コンテンツパート(マルチモーダル対応)
|
|
17
|
+
*/
|
|
18
|
+
export type ContentPart =
|
|
19
|
+
| { type: 'text'; text: string }
|
|
20
|
+
| { type: 'image_url'; image_url: { url: string; detail?: 'auto' | 'low' | 'high' } };
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* ツール呼び出し
|
|
24
|
+
*/
|
|
25
|
+
export interface ToolCall {
|
|
26
|
+
id: string;
|
|
27
|
+
type: 'function';
|
|
28
|
+
function: {
|
|
29
|
+
name: string;
|
|
30
|
+
arguments: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* ツール定義
|
|
36
|
+
*/
|
|
37
|
+
export interface ToolDefinition {
|
|
38
|
+
type: 'function';
|
|
39
|
+
function: {
|
|
40
|
+
name: string;
|
|
41
|
+
description: string;
|
|
42
|
+
parameters: Record<string, unknown>;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* メッセージ
|
|
48
|
+
*/
|
|
49
|
+
export interface Message {
|
|
50
|
+
role: MessageRole;
|
|
51
|
+
content: string | ContentPart[];
|
|
52
|
+
name?: string;
|
|
53
|
+
toolCallId?: string;
|
|
54
|
+
toolCalls?: ToolCall[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* ツール選択オプション
|
|
59
|
+
*/
|
|
60
|
+
export type ToolChoice =
|
|
61
|
+
| 'auto'
|
|
62
|
+
| 'none'
|
|
63
|
+
| 'required'
|
|
64
|
+
| { type: 'function'; function: { name: string } };
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* レスポンスフォーマット
|
|
68
|
+
*/
|
|
69
|
+
export interface ResponseFormat {
|
|
70
|
+
type: 'text' | 'json_object';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 生成リクエスト
|
|
75
|
+
*/
|
|
76
|
+
export interface GenerateRequest {
|
|
77
|
+
/** モデル名 */
|
|
78
|
+
model?: string;
|
|
79
|
+
/** メッセージ履歴 */
|
|
80
|
+
messages: Message[];
|
|
81
|
+
/** 温度パラメータ (0-2) */
|
|
82
|
+
temperature?: number;
|
|
83
|
+
/** 最大トークン数 */
|
|
84
|
+
maxTokens?: number;
|
|
85
|
+
/** Top-P サンプリング */
|
|
86
|
+
topP?: number;
|
|
87
|
+
/** 停止シーケンス */
|
|
88
|
+
stopSequences?: string[];
|
|
89
|
+
/** ツール定義 */
|
|
90
|
+
tools?: ToolDefinition[];
|
|
91
|
+
/** ツール選択 */
|
|
92
|
+
toolChoice?: ToolChoice;
|
|
93
|
+
/** レスポンスフォーマット */
|
|
94
|
+
responseFormat?: ResponseFormat;
|
|
95
|
+
/** ユーザーID(監査用) */
|
|
96
|
+
user?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* トークン使用量
|
|
101
|
+
*/
|
|
102
|
+
export interface TokenUsage {
|
|
103
|
+
promptTokens: number;
|
|
104
|
+
completionTokens: number;
|
|
105
|
+
totalTokens: number;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 終了理由
|
|
110
|
+
*/
|
|
111
|
+
export type FinishReason = 'stop' | 'length' | 'tool_calls' | 'content_filter';
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 生成レスポンス
|
|
115
|
+
*/
|
|
116
|
+
export interface GenerateResponse {
|
|
117
|
+
/** レスポンスID */
|
|
118
|
+
id: string;
|
|
119
|
+
/** 使用モデル */
|
|
120
|
+
model: string;
|
|
121
|
+
/** 生成テキスト */
|
|
122
|
+
content: string;
|
|
123
|
+
/** ツール呼び出し */
|
|
124
|
+
toolCalls?: ToolCall[];
|
|
125
|
+
/** トークン使用量 */
|
|
126
|
+
usage: TokenUsage;
|
|
127
|
+
/** 終了理由 */
|
|
128
|
+
finishReason: FinishReason;
|
|
129
|
+
/** メタデータ */
|
|
130
|
+
metadata?: Record<string, unknown>;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* ストリームチャンク
|
|
135
|
+
*/
|
|
136
|
+
export interface StreamChunk {
|
|
137
|
+
type: 'content' | 'tool_call' | 'usage' | 'done';
|
|
138
|
+
content?: string;
|
|
139
|
+
toolCall?: Partial<ToolCall>;
|
|
140
|
+
usage?: TokenUsage;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* LLMプロバイダーインターフェース
|
|
145
|
+
*/
|
|
146
|
+
export interface LLMProvider {
|
|
147
|
+
/** プロバイダー名 */
|
|
148
|
+
readonly name: string;
|
|
149
|
+
/** サポートモデル */
|
|
150
|
+
readonly supportedModels: string[];
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* テキスト生成
|
|
154
|
+
*/
|
|
155
|
+
generate(request: GenerateRequest): Promise<GenerateResponse>;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* ストリーミング生成
|
|
159
|
+
*/
|
|
160
|
+
generateStream(request: GenerateRequest): AsyncGenerator<StreamChunk>;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 構造化出力生成
|
|
164
|
+
*/
|
|
165
|
+
generateStructured<T extends ZodType>(
|
|
166
|
+
request: GenerateRequest,
|
|
167
|
+
schema: T
|
|
168
|
+
): Promise<z.infer<T>>;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* トークン数カウント
|
|
172
|
+
*/
|
|
173
|
+
countTokens(text: string, model?: string): Promise<number>;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* プロバイダー設定
|
|
178
|
+
*/
|
|
179
|
+
export interface ProviderConfig {
|
|
180
|
+
/** APIキー */
|
|
181
|
+
apiKey?: string;
|
|
182
|
+
/** ベースURL */
|
|
183
|
+
baseURL?: string;
|
|
184
|
+
/** デフォルトモデル */
|
|
185
|
+
defaultModel?: string;
|
|
186
|
+
/** タイムアウト(ミリ秒) */
|
|
187
|
+
timeout?: number;
|
|
188
|
+
/** 最大リトライ回数 */
|
|
189
|
+
maxRetries?: number;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* LLMクライアント設定
|
|
194
|
+
*/
|
|
195
|
+
export interface LLMClientConfig {
|
|
196
|
+
/** プライマリプロバイダー */
|
|
197
|
+
provider: LLMProvider;
|
|
198
|
+
/** フォールバックプロバイダー */
|
|
199
|
+
fallbackProviders?: LLMProvider[];
|
|
200
|
+
/** セマンティックキャッシュ有効化 */
|
|
201
|
+
enableCache?: boolean;
|
|
202
|
+
/** キャッシュTTL(ミリ秒) */
|
|
203
|
+
cacheTTL?: number;
|
|
204
|
+
/** 自動リトライ有効化 */
|
|
205
|
+
enableRetry?: boolean;
|
|
206
|
+
/** リトライ回数 */
|
|
207
|
+
retryCount?: number;
|
|
208
|
+
/** リトライ遅延(ミリ秒) */
|
|
209
|
+
retryDelay?: number;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* プロンプトテンプレート
|
|
214
|
+
*/
|
|
215
|
+
export interface PromptTemplate {
|
|
216
|
+
/** テンプレートID */
|
|
217
|
+
id: string;
|
|
218
|
+
/** テンプレート名 */
|
|
219
|
+
name: string;
|
|
220
|
+
/** テンプレート内容 */
|
|
221
|
+
template: string;
|
|
222
|
+
/** 変数定義 */
|
|
223
|
+
variables: Array<{
|
|
224
|
+
name: string;
|
|
225
|
+
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
|
|
226
|
+
required?: boolean;
|
|
227
|
+
default?: unknown;
|
|
228
|
+
description?: string;
|
|
229
|
+
}>;
|
|
230
|
+
/** 説明 */
|
|
231
|
+
description?: string;
|
|
232
|
+
/** メタデータ */
|
|
233
|
+
metadata?: Record<string, unknown>;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* キャッシュエントリ
|
|
238
|
+
*/
|
|
239
|
+
export interface CacheEntry<T = GenerateResponse> {
|
|
240
|
+
/** キー(ハッシュ) */
|
|
241
|
+
key: string;
|
|
242
|
+
/** 値 */
|
|
243
|
+
value: T;
|
|
244
|
+
/** 作成日時 */
|
|
245
|
+
createdAt: Date;
|
|
246
|
+
/** 有効期限 */
|
|
247
|
+
expiresAt: Date;
|
|
248
|
+
/** ヒット数 */
|
|
249
|
+
hits: number;
|
|
250
|
+
/** 類似度スコア(セマンティックキャッシュ用) */
|
|
251
|
+
similarity?: number;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* フォールバック結果
|
|
256
|
+
*/
|
|
257
|
+
export interface FallbackResult {
|
|
258
|
+
/** 成功プロバイダー */
|
|
259
|
+
provider: string;
|
|
260
|
+
/** 試行プロバイダー */
|
|
261
|
+
attemptedProviders: string[];
|
|
262
|
+
/** エラー履歴 */
|
|
263
|
+
errors: Array<{
|
|
264
|
+
provider: string;
|
|
265
|
+
error: Error;
|
|
266
|
+
timestamp: Date;
|
|
267
|
+
}>;
|
|
268
|
+
}
|