@agenticc/core 1.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/README.md +370 -0
- package/README.zh-CN.md +372 -0
- package/dist/audit/index.d.ts +9 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +9 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/logger.d.ts +211 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +268 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/query.d.ts +164 -0
- package/dist/audit/query.d.ts.map +1 -0
- package/dist/audit/query.js +250 -0
- package/dist/audit/query.js.map +1 -0
- package/dist/conversation/context-builder.d.ts +119 -0
- package/dist/conversation/context-builder.d.ts.map +1 -0
- package/dist/conversation/context-builder.js +252 -0
- package/dist/conversation/context-builder.js.map +1 -0
- package/dist/conversation/index.d.ts +10 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +10 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/message-store.d.ts +231 -0
- package/dist/conversation/message-store.d.ts.map +1 -0
- package/dist/conversation/message-store.js +404 -0
- package/dist/conversation/message-store.js.map +1 -0
- package/dist/conversation/session.d.ts +201 -0
- package/dist/conversation/session.d.ts.map +1 -0
- package/dist/conversation/session.js +285 -0
- package/dist/conversation/session.js.map +1 -0
- package/dist/core/agent.d.ts +277 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +674 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentic-loop.d.ts +98 -0
- package/dist/core/agentic-loop.d.ts.map +1 -0
- package/dist/core/agentic-loop.js +496 -0
- package/dist/core/agentic-loop.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/intent-parser.d.ts +101 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/intent-parser.js +221 -0
- package/dist/core/intent-parser.js.map +1 -0
- package/dist/core/plan-generator.d.ts +133 -0
- package/dist/core/plan-generator.d.ts.map +1 -0
- package/dist/core/plan-generator.js +294 -0
- package/dist/core/plan-generator.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +120 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +369 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/response-handler.d.ts +141 -0
- package/dist/core/response-handler.d.ts.map +1 -0
- package/dist/core/response-handler.js +384 -0
- package/dist/core/response-handler.js.map +1 -0
- package/dist/core/tool-executor.d.ts +143 -0
- package/dist/core/tool-executor.d.ts.map +1 -0
- package/dist/core/tool-executor.js +354 -0
- package/dist/core/tool-executor.js.map +1 -0
- package/dist/core/tool-registry.d.ts +133 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +252 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/chunker.d.ts +78 -0
- package/dist/knowledge/chunker.d.ts.map +1 -0
- package/dist/knowledge/chunker.js +233 -0
- package/dist/knowledge/chunker.js.map +1 -0
- package/dist/knowledge/embedder.d.ts +93 -0
- package/dist/knowledge/embedder.d.ts.map +1 -0
- package/dist/knowledge/embedder.js +205 -0
- package/dist/knowledge/embedder.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +11 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/loaders/index.d.ts +10 -0
- package/dist/knowledge/loaders/index.d.ts.map +1 -0
- package/dist/knowledge/loaders/index.js +10 -0
- package/dist/knowledge/loaders/index.js.map +1 -0
- package/dist/knowledge/loaders/markdown.d.ts +88 -0
- package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
- package/dist/knowledge/loaders/markdown.js +205 -0
- package/dist/knowledge/loaders/markdown.js.map +1 -0
- package/dist/knowledge/loaders/yaml.d.ts +112 -0
- package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
- package/dist/knowledge/loaders/yaml.js +368 -0
- package/dist/knowledge/loaders/yaml.js.map +1 -0
- package/dist/knowledge/retriever.d.ts +144 -0
- package/dist/knowledge/retriever.d.ts.map +1 -0
- package/dist/knowledge/retriever.js +399 -0
- package/dist/knowledge/retriever.js.map +1 -0
- package/dist/knowledge/store.d.ts +146 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +420 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/llm/adapter.d.ts +194 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +42 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/adapters/anyrouter.d.ts +84 -0
- package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
- package/dist/llm/adapters/anyrouter.js +372 -0
- package/dist/llm/adapters/anyrouter.js.map +1 -0
- package/dist/llm/adapters/claude.d.ts +66 -0
- package/dist/llm/adapters/claude.d.ts.map +1 -0
- package/dist/llm/adapters/claude.js +323 -0
- package/dist/llm/adapters/claude.js.map +1 -0
- package/dist/llm/adapters/index.d.ts +12 -0
- package/dist/llm/adapters/index.d.ts.map +1 -0
- package/dist/llm/adapters/index.js +12 -0
- package/dist/llm/adapters/index.js.map +1 -0
- package/dist/llm/adapters/mimo.d.ts +85 -0
- package/dist/llm/adapters/mimo.d.ts.map +1 -0
- package/dist/llm/adapters/mimo.js +316 -0
- package/dist/llm/adapters/mimo.js.map +1 -0
- package/dist/llm/adapters/openai.d.ts +53 -0
- package/dist/llm/adapters/openai.d.ts.map +1 -0
- package/dist/llm/adapters/openai.js +293 -0
- package/dist/llm/adapters/openai.js.map +1 -0
- package/dist/llm/adapters/qwen.d.ts +53 -0
- package/dist/llm/adapters/qwen.d.ts.map +1 -0
- package/dist/llm/adapters/qwen.js +299 -0
- package/dist/llm/adapters/qwen.js.map +1 -0
- package/dist/llm/adapters/siliconflow.d.ts +69 -0
- package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
- package/dist/llm/adapters/siliconflow.js +331 -0
- package/dist/llm/adapters/siliconflow.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +12 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/manager.d.ts +97 -0
- package/dist/llm/manager.d.ts.map +1 -0
- package/dist/llm/manager.js +337 -0
- package/dist/llm/manager.js.map +1 -0
- package/dist/test-utils/arbitraries.d.ts +230 -0
- package/dist/test-utils/arbitraries.d.ts.map +1 -0
- package/dist/test-utils/arbitraries.js +280 -0
- package/dist/test-utils/arbitraries.js.map +1 -0
- package/dist/test-utils/cleanup.d.ts +184 -0
- package/dist/test-utils/cleanup.d.ts.map +1 -0
- package/dist/test-utils/cleanup.js +282 -0
- package/dist/test-utils/cleanup.js.map +1 -0
- package/dist/test-utils/config.d.ts +80 -0
- package/dist/test-utils/config.d.ts.map +1 -0
- package/dist/test-utils/config.js +94 -0
- package/dist/test-utils/config.js.map +1 -0
- package/dist/test-utils/index.d.ts +10 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +36 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/mocks.d.ts +170 -0
- package/dist/test-utils/mocks.d.ts.map +1 -0
- package/dist/test-utils/mocks.js +281 -0
- package/dist/test-utils/mocks.js.map +1 -0
- package/dist/types/config.d.ts +170 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +120 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/knowledge.d.ts +95 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +7 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/loop.d.ts +148 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/loop.js +16 -0
- package/dist/types/loop.js.map +1 -0
- package/dist/types/plugin.d.ts +137 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +15 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/response.d.ts +186 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +99 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/streaming.d.ts +478 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +483 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tool.d.ts +118 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +42 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/error.d.ts +22 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +36 -0
- package/dist/utils/error.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SiliconFlow LLM Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements the LLMAdapter interface for SiliconFlow's API.
|
|
5
|
+
* SiliconFlow provides access to multiple models (DeepSeek, Qwen, GLM, etc.)
|
|
6
|
+
* through an OpenAI-compatible interface.
|
|
7
|
+
*/
|
|
8
|
+
import OpenAI from 'openai';
|
|
9
|
+
import { LLMError, promptToMessages } from '../adapter.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default SiliconFlow API base URL
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_SILICONFLOW_BASE_URL = 'https://api.siliconflow.cn/v1';
|
|
14
|
+
/**
|
|
15
|
+
* Popular models available on SiliconFlow
|
|
16
|
+
*/
|
|
17
|
+
export const SILICONFLOW_MODELS = {
|
|
18
|
+
// DeepSeek models
|
|
19
|
+
DEEPSEEK_CHAT: 'deepseek-ai/DeepSeek-V2.5',
|
|
20
|
+
DEEPSEEK_CODER: 'deepseek-ai/DeepSeek-Coder-V2-Instruct',
|
|
21
|
+
// Qwen models
|
|
22
|
+
QWEN_72B: 'Qwen/Qwen2.5-72B-Instruct',
|
|
23
|
+
QWEN_32B: 'Qwen/Qwen2.5-32B-Instruct',
|
|
24
|
+
QWEN_7B: 'Qwen/Qwen2.5-7B-Instruct',
|
|
25
|
+
QWEN_CODER_32B: 'Qwen/Qwen2.5-Coder-32B-Instruct',
|
|
26
|
+
// GLM models
|
|
27
|
+
GLM_9B: 'THUDM/glm-4-9b-chat',
|
|
28
|
+
// Embedding models
|
|
29
|
+
BGE_LARGE: 'BAAI/bge-large-zh-v1.5',
|
|
30
|
+
BGE_M3: 'BAAI/bge-m3',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* SiliconFlow LLM Adapter implementation
|
|
34
|
+
*
|
|
35
|
+
* Provides access to multiple open-source models through SiliconFlow's
|
|
36
|
+
* OpenAI-compatible API.
|
|
37
|
+
*/
|
|
38
|
+
export class SiliconFlowAdapter {
|
|
39
|
+
provider = 'siliconflow';
|
|
40
|
+
model;
|
|
41
|
+
client;
|
|
42
|
+
embeddingModel;
|
|
43
|
+
defaultTemperature;
|
|
44
|
+
defaultMaxTokens;
|
|
45
|
+
constructor(config) {
|
|
46
|
+
this.model = config.model;
|
|
47
|
+
// Use BGE-M3 by default as it supports 8192 tokens (vs 512 for BGE-large)
|
|
48
|
+
this.embeddingModel = config.embeddingModel ?? SILICONFLOW_MODELS.BGE_M3;
|
|
49
|
+
this.defaultTemperature = config.temperature ?? 0.7;
|
|
50
|
+
this.defaultMaxTokens = config.maxTokens ?? 2048;
|
|
51
|
+
this.client = new OpenAI({
|
|
52
|
+
apiKey: config.apiKey,
|
|
53
|
+
baseURL: config.baseUrl ?? DEFAULT_SILICONFLOW_BASE_URL,
|
|
54
|
+
timeout: config.timeoutMs ?? 30000,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async generate(prompt, options) {
|
|
58
|
+
const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
|
|
59
|
+
try {
|
|
60
|
+
const response = await this.client.chat.completions.create({
|
|
61
|
+
model: this.model,
|
|
62
|
+
messages: this.convertMessages(messages),
|
|
63
|
+
temperature: options?.temperature ?? this.defaultTemperature,
|
|
64
|
+
max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
|
|
65
|
+
stop: options?.stopSequences,
|
|
66
|
+
}, { signal: options?.abortSignal });
|
|
67
|
+
return response.choices[0]?.message?.content ?? '';
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw this.handleError(error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async generateWithTools(prompt, tools, options) {
|
|
74
|
+
const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
|
|
75
|
+
try {
|
|
76
|
+
const response = await this.client.chat.completions.create({
|
|
77
|
+
model: this.model,
|
|
78
|
+
messages: this.convertMessages(messages),
|
|
79
|
+
tools: tools.map((t) => ({
|
|
80
|
+
type: 'function',
|
|
81
|
+
function: t.function,
|
|
82
|
+
})),
|
|
83
|
+
temperature: options?.temperature ?? this.defaultTemperature,
|
|
84
|
+
max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
|
|
85
|
+
stop: options?.stopSequences,
|
|
86
|
+
}, { signal: options?.abortSignal });
|
|
87
|
+
const choice = response.choices[0];
|
|
88
|
+
const message = choice?.message;
|
|
89
|
+
const toolCalls = message?.tool_calls?.map((tc) => ({
|
|
90
|
+
id: tc.id,
|
|
91
|
+
name: tc.function.name,
|
|
92
|
+
arguments: JSON.parse(tc.function.arguments),
|
|
93
|
+
}));
|
|
94
|
+
return {
|
|
95
|
+
content: message?.content ?? '',
|
|
96
|
+
toolCalls,
|
|
97
|
+
finishReason: this.mapFinishReason(choice?.finish_reason),
|
|
98
|
+
usage: response.usage
|
|
99
|
+
? {
|
|
100
|
+
promptTokens: response.usage.prompt_tokens,
|
|
101
|
+
completionTokens: response.usage.completion_tokens,
|
|
102
|
+
totalTokens: response.usage.total_tokens,
|
|
103
|
+
}
|
|
104
|
+
: undefined,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw this.handleError(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async embed(text) {
|
|
112
|
+
try {
|
|
113
|
+
const response = await this.client.embeddings.create({
|
|
114
|
+
model: this.embeddingModel,
|
|
115
|
+
input: text,
|
|
116
|
+
});
|
|
117
|
+
const embeddingData = response.data[0];
|
|
118
|
+
if (!embeddingData) {
|
|
119
|
+
throw new LLMError('No embedding data returned', 'INVALID_REQUEST', this.provider);
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
embedding: embeddingData.embedding,
|
|
123
|
+
tokenCount: response.usage?.total_tokens,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
throw this.handleError(error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
supportsEmbeddings() {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
supportsToolCalling() {
|
|
134
|
+
// Most models on SiliconFlow support function calling
|
|
135
|
+
// Some smaller models may not support it
|
|
136
|
+
const modelLower = this.model.toLowerCase();
|
|
137
|
+
// DeepSeek and Qwen models support tool calling
|
|
138
|
+
if (modelLower.includes('deepseek') || modelLower.includes('qwen')) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
// GLM models support tool calling
|
|
142
|
+
if (modelLower.includes('glm')) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
// Default to true for unknown models
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
supportsStreaming() {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
async generateWithToolsStream(prompt, tools, onChunk, options) {
|
|
152
|
+
const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
|
|
153
|
+
try {
|
|
154
|
+
const stream = await this.client.chat.completions.create({
|
|
155
|
+
model: this.model,
|
|
156
|
+
messages: this.convertMessages(messages),
|
|
157
|
+
tools: tools.map((t) => ({
|
|
158
|
+
type: 'function',
|
|
159
|
+
function: t.function,
|
|
160
|
+
})),
|
|
161
|
+
temperature: options?.temperature ?? this.defaultTemperature,
|
|
162
|
+
max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
|
|
163
|
+
stop: options?.stopSequences,
|
|
164
|
+
stream: true,
|
|
165
|
+
}, { signal: options?.abortSignal });
|
|
166
|
+
// Accumulate the response
|
|
167
|
+
let accumulatedContent = '';
|
|
168
|
+
const toolCallsMap = new Map();
|
|
169
|
+
let finishReason = 'stop';
|
|
170
|
+
for await (const chunk of stream) {
|
|
171
|
+
const delta = chunk.choices[0]?.delta;
|
|
172
|
+
const chunkFinishReason = chunk.choices[0]?.finish_reason;
|
|
173
|
+
// Handle content chunks
|
|
174
|
+
if (delta?.content) {
|
|
175
|
+
accumulatedContent += delta.content;
|
|
176
|
+
const streamChunk = {
|
|
177
|
+
type: 'content',
|
|
178
|
+
content: delta.content,
|
|
179
|
+
};
|
|
180
|
+
onChunk(streamChunk);
|
|
181
|
+
}
|
|
182
|
+
// Handle tool call chunks
|
|
183
|
+
if (delta?.tool_calls) {
|
|
184
|
+
for (const tc of delta.tool_calls) {
|
|
185
|
+
const index = tc.index;
|
|
186
|
+
// Get or create tool call entry
|
|
187
|
+
let toolCallEntry = toolCallsMap.get(index);
|
|
188
|
+
if (!toolCallEntry) {
|
|
189
|
+
toolCallEntry = { id: '', name: '', arguments: '' };
|
|
190
|
+
toolCallsMap.set(index, toolCallEntry);
|
|
191
|
+
}
|
|
192
|
+
// Accumulate tool call data
|
|
193
|
+
if (tc.id)
|
|
194
|
+
toolCallEntry.id = tc.id;
|
|
195
|
+
if (tc.function?.name)
|
|
196
|
+
toolCallEntry.name = tc.function.name;
|
|
197
|
+
if (tc.function?.arguments)
|
|
198
|
+
toolCallEntry.arguments += tc.function.arguments;
|
|
199
|
+
// Send tool call chunk
|
|
200
|
+
const streamChunk = {
|
|
201
|
+
type: 'tool_call',
|
|
202
|
+
toolCall: {
|
|
203
|
+
index,
|
|
204
|
+
id: tc.id,
|
|
205
|
+
name: tc.function?.name,
|
|
206
|
+
arguments: tc.function?.arguments,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
onChunk(streamChunk);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Update finish reason
|
|
213
|
+
if (chunkFinishReason) {
|
|
214
|
+
finishReason = this.mapFinishReason(chunkFinishReason);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Build final tool calls array
|
|
218
|
+
const toolCalls = toolCallsMap.size > 0
|
|
219
|
+
? Array.from(toolCallsMap.entries())
|
|
220
|
+
.sort(([a], [b]) => a - b)
|
|
221
|
+
.map(([, tc]) => ({
|
|
222
|
+
id: tc.id,
|
|
223
|
+
name: tc.name,
|
|
224
|
+
arguments: JSON.parse(tc.arguments || '{}'),
|
|
225
|
+
}))
|
|
226
|
+
: undefined;
|
|
227
|
+
// Build final response
|
|
228
|
+
const response = {
|
|
229
|
+
content: accumulatedContent,
|
|
230
|
+
toolCalls,
|
|
231
|
+
finishReason,
|
|
232
|
+
};
|
|
233
|
+
// Send done chunk
|
|
234
|
+
onChunk({ type: 'done', response });
|
|
235
|
+
return response;
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
throw this.handleError(error);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Convert internal message format to OpenAI format
|
|
243
|
+
*/
|
|
244
|
+
convertMessages(messages) {
|
|
245
|
+
return messages.map((msg) => {
|
|
246
|
+
if (msg.role === 'tool') {
|
|
247
|
+
return {
|
|
248
|
+
role: 'tool',
|
|
249
|
+
content: msg.content,
|
|
250
|
+
tool_call_id: msg.toolCallId ?? '',
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
if (msg.role === 'assistant' && msg.toolCalls && msg.toolCalls.length > 0) {
|
|
254
|
+
// Assistant message with tool calls
|
|
255
|
+
return {
|
|
256
|
+
role: 'assistant',
|
|
257
|
+
content: msg.content || null,
|
|
258
|
+
tool_calls: msg.toolCalls.map((tc) => ({
|
|
259
|
+
id: tc.id,
|
|
260
|
+
type: 'function',
|
|
261
|
+
function: {
|
|
262
|
+
name: tc.name,
|
|
263
|
+
arguments: JSON.stringify(tc.arguments),
|
|
264
|
+
},
|
|
265
|
+
})),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
role: msg.role,
|
|
270
|
+
content: msg.content,
|
|
271
|
+
};
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Map finish reason to internal format
|
|
276
|
+
*/
|
|
277
|
+
mapFinishReason(reason) {
|
|
278
|
+
switch (reason) {
|
|
279
|
+
case 'stop':
|
|
280
|
+
return 'stop';
|
|
281
|
+
case 'tool_calls':
|
|
282
|
+
return 'tool_calls';
|
|
283
|
+
case 'length':
|
|
284
|
+
return 'length';
|
|
285
|
+
case 'content_filter':
|
|
286
|
+
return 'content_filter';
|
|
287
|
+
default:
|
|
288
|
+
return 'stop';
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Handle API errors
|
|
293
|
+
*/
|
|
294
|
+
handleError(error) {
|
|
295
|
+
// Check for abort error first
|
|
296
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
297
|
+
return new LLMError('Operation cancelled', 'CANCELLED', this.provider, error);
|
|
298
|
+
}
|
|
299
|
+
// Preserve existing LLMError instances
|
|
300
|
+
if (error instanceof LLMError) {
|
|
301
|
+
return error;
|
|
302
|
+
}
|
|
303
|
+
if (error instanceof OpenAI.APIError) {
|
|
304
|
+
const code = this.mapErrorCode(error.status, error.code);
|
|
305
|
+
return new LLMError(error.message, code, this.provider, error);
|
|
306
|
+
}
|
|
307
|
+
if (error instanceof Error) {
|
|
308
|
+
return new LLMError(error.message, 'UNKNOWN_ERROR', this.provider, error);
|
|
309
|
+
}
|
|
310
|
+
return new LLMError('Unknown error occurred', 'UNKNOWN_ERROR', this.provider);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Map error codes to internal error codes
|
|
314
|
+
*/
|
|
315
|
+
mapErrorCode(status, code) {
|
|
316
|
+
if (status === 401)
|
|
317
|
+
return 'AUTHENTICATION_ERROR';
|
|
318
|
+
if (status === 429)
|
|
319
|
+
return 'RATE_LIMIT_ERROR';
|
|
320
|
+
if (status === 400)
|
|
321
|
+
return 'INVALID_REQUEST';
|
|
322
|
+
if (status === 404)
|
|
323
|
+
return 'MODEL_NOT_FOUND';
|
|
324
|
+
if (code === 'context_length_exceeded')
|
|
325
|
+
return 'CONTEXT_LENGTH_EXCEEDED';
|
|
326
|
+
if (code === 'content_filter')
|
|
327
|
+
return 'CONTENT_FILTER';
|
|
328
|
+
return 'UNKNOWN_ERROR';
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=siliconflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siliconflow.js","sourceRoot":"","sources":["../../../src/llm/adapters/siliconflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Module Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all LLM-related types, adapters, and the manager.
|
|
5
|
+
*/
|
|
6
|
+
export { type LLMAdapter, type LLMAdapterConfig, type GenerateOptions, type ChatMessage, type LLMResponse, type ToolCall, type EmbeddingResult, type LLMErrorCode, LLMError, promptToMessages, messagesToPrompt, } from './adapter.js';
|
|
7
|
+
export { LLMManager, createSimpleLLMManager } from './manager.js';
|
|
8
|
+
export { OpenAIAdapter, type OpenAIAdapterConfig, ClaudeAdapter, type ClaudeAdapterConfig, QwenAdapter, type QwenAdapterConfig, SiliconFlowAdapter, type SiliconFlowAdapterConfig, SILICONFLOW_MODELS, MiMoAdapter, type MiMoAdapterConfig, type MiMoGenerateOptions, type MiMoLLMResponse, type ThinkingMode, MIMO_MODELS, } from './adapters/index.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,aAAa,EACb,KAAK,mBAAmB,EACxB,WAAW,EACX,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Module Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all LLM-related types, adapters, and the manager.
|
|
5
|
+
*/
|
|
6
|
+
// Core adapter interface and types
|
|
7
|
+
export { LLMError, promptToMessages, messagesToPrompt, } from './adapter.js';
|
|
8
|
+
// LLM Manager
|
|
9
|
+
export { LLMManager, createSimpleLLMManager } from './manager.js';
|
|
10
|
+
// Adapters
|
|
11
|
+
export { OpenAIAdapter, ClaudeAdapter, QwenAdapter, SiliconFlowAdapter, SILICONFLOW_MODELS, MiMoAdapter, MIMO_MODELS, } from './adapters/index.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mCAAmC;AACnC,OAAO,EASL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAElE,WAAW;AACX,OAAO,EACL,aAAa,EAEb,aAAa,EAEb,WAAW,EAEX,kBAAkB,EAElB,kBAAkB,EAClB,WAAW,EAKX,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages multiple LLM adapters and routes tasks to the appropriate LLM.
|
|
5
|
+
* Supports single LLM mode (all tasks use one LLM) and multi-LLM mode
|
|
6
|
+
* (different LLMs for different task types).
|
|
7
|
+
*/
|
|
8
|
+
import type { LLMAdapter, GenerateOptions, ChatMessage, LLMResponse, EmbeddingResult, StreamCallback } from './adapter.js';
|
|
9
|
+
import type { LLMConfig, LLMProviderConfig, LLMTask } from '../types/config.js';
|
|
10
|
+
import type { ToolDefinition } from '../types/tool.js';
|
|
11
|
+
/**
|
|
12
|
+
* LLM Manager
|
|
13
|
+
*
|
|
14
|
+
* Provides a unified interface for working with multiple LLM providers.
|
|
15
|
+
*/
|
|
16
|
+
export declare class LLMManager {
|
|
17
|
+
private config;
|
|
18
|
+
private adapters;
|
|
19
|
+
private retryConfig;
|
|
20
|
+
constructor(config: LLMConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Get the LLM adapter for a specific task
|
|
23
|
+
*/
|
|
24
|
+
getLLMForTask(task: LLMTask): LLMAdapter;
|
|
25
|
+
/**
|
|
26
|
+
* Generate text for a specific task
|
|
27
|
+
*/
|
|
28
|
+
generate(task: LLMTask, prompt: string | ChatMessage[], options?: GenerateOptions): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Generate text with tool calling for a specific task
|
|
31
|
+
*/
|
|
32
|
+
generateWithTools(task: LLMTask, prompt: string | ChatMessage[], tools: ToolDefinition[], options?: GenerateOptions): Promise<LLMResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Generate text with tool calling for a specific task (streaming)
|
|
35
|
+
*
|
|
36
|
+
* Note: Streaming does not support automatic retry since we can't replay the stream.
|
|
37
|
+
* If you need retry behavior, use the non-streaming version.
|
|
38
|
+
*/
|
|
39
|
+
generateWithToolsStream(task: LLMTask, prompt: string | ChatMessage[], tools: ToolDefinition[], onChunk: StreamCallback, options?: GenerateOptions): Promise<LLMResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Check if the adapter for a task supports streaming
|
|
42
|
+
*/
|
|
43
|
+
supportsStreaming(task: LLMTask): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Generate embedding using the knowledge retrieval LLM
|
|
46
|
+
*/
|
|
47
|
+
embed(text: string): Promise<EmbeddingResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if any configured adapter supports embeddings
|
|
50
|
+
*/
|
|
51
|
+
supportsEmbeddings(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Check if the adapter for a task supports tool calling
|
|
54
|
+
*/
|
|
55
|
+
supportsToolCalling(task: LLMTask): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Get all initialized adapters
|
|
58
|
+
*/
|
|
59
|
+
getAdapters(): Map<string, LLMAdapter>;
|
|
60
|
+
/**
|
|
61
|
+
* Get the current configuration
|
|
62
|
+
*/
|
|
63
|
+
getConfig(): LLMConfig;
|
|
64
|
+
/**
|
|
65
|
+
* Initialize adapters for all configured LLMs
|
|
66
|
+
*/
|
|
67
|
+
private initializeAdapters;
|
|
68
|
+
/**
|
|
69
|
+
* Get or create an adapter for a provider configuration
|
|
70
|
+
*/
|
|
71
|
+
private getOrCreateAdapter;
|
|
72
|
+
/**
|
|
73
|
+
* Create a unique key for an adapter configuration
|
|
74
|
+
*/
|
|
75
|
+
private getAdapterKey;
|
|
76
|
+
/**
|
|
77
|
+
* Create an adapter based on provider configuration
|
|
78
|
+
*/
|
|
79
|
+
private createAdapter;
|
|
80
|
+
/**
|
|
81
|
+
* Execute an LLM operation with retry and fallback
|
|
82
|
+
*/
|
|
83
|
+
private executeWithRetry;
|
|
84
|
+
/**
|
|
85
|
+
* Determine if an error should trigger a retry
|
|
86
|
+
*/
|
|
87
|
+
private shouldRetry;
|
|
88
|
+
/**
|
|
89
|
+
* Sleep for a specified duration
|
|
90
|
+
*/
|
|
91
|
+
private sleep;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create an LLMManager with a simple single-LLM configuration
|
|
95
|
+
*/
|
|
96
|
+
export declare function createSimpleLLMManager(provider: LLMProviderConfig['provider'], apiKey: string, model: string, options?: Partial<LLMProviderConfig>): LLMManager;
|
|
97
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/llm/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuBvD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE,SAAS;IAQ7B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU;IAKxC;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC;IAQlB;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAQvB;;;;;OAKG;IACG,uBAAuB,CAC3B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAuBvB;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAKzC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBnD;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAS7B;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAK3C;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAItC;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA2ErB;;OAEG;YACW,gBAAgB;IAoE9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,UAAU,CAUZ"}
|