@graphai/web_llm_agent 0.0.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/README.md +66 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +17 -0
- package/lib/web_llm_agent_generator.d.ts +14 -0
- package/lib/web_llm_agent_generator.js +256 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
|
|
2
|
+
## web llm
|
|
3
|
+
|
|
4
|
+
### Run preset llama
|
|
5
|
+
|
|
6
|
+
```typescript
|
|
7
|
+
import { webLlmAgentGenerator, CallbackReport } from "@graphai/web_llm_agent";
|
|
8
|
+
|
|
9
|
+
let ready = false;
|
|
10
|
+
const { webLlmAgent, loadEngine } = webLlmAgentGenerator({
|
|
11
|
+
modelId: "Llama-3.2-3B-Instruct-q4f32_1-MLC",
|
|
12
|
+
callback: (report: CallbackReport) => {
|
|
13
|
+
if (report.progress === 1) {
|
|
14
|
+
ready = true;
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
loadEngine();
|
|
20
|
+
|
|
21
|
+
// wait ready become true;
|
|
22
|
+
|
|
23
|
+
const graphai = new GraphAI(graphData, { ...vanilla, webLlmAgent });
|
|
24
|
+
await graphai.run();
|
|
25
|
+
|
|
26
|
+
````
|
|
27
|
+
|
|
28
|
+
### Run custom model
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import * as webllm from "@mlc-ai/web-llm";
|
|
32
|
+
import { webLlmAgentGenerator, CallbackReport, pushModelList } from "@graphai/web_llm_agent";
|
|
33
|
+
|
|
34
|
+
const model_list = [
|
|
35
|
+
{
|
|
36
|
+
model: "https://huggingface.co/SakanaAI/TinySwallow-1.5B-Instruct-q4f32_1-MLC",
|
|
37
|
+
model_id: "TinySwallow-1.5B",
|
|
38
|
+
model_lib: webllm.modelLibURLPrefix + webllm.modelVersion + "/Qwen2-1.5B-Instruct-q4f32_1-ctx4k_cs1k-webgpu.wasm",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
pushModelList(model_list);
|
|
42
|
+
|
|
43
|
+
let ready = false;
|
|
44
|
+
const { webLlmAgent, loadEngine } = webLlmAgentGenerator({
|
|
45
|
+
modelId: "TinySwallow-1.5B",
|
|
46
|
+
callback: (report: CallbackReport) => {
|
|
47
|
+
if (report.progress === 1) {
|
|
48
|
+
ready = true;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
loadEngine();
|
|
54
|
+
|
|
55
|
+
// wait ready become true;
|
|
56
|
+
|
|
57
|
+
const graphai = new GraphAI(graphData, { ...vanilla, webLlmAgent });
|
|
58
|
+
await graphai.run();
|
|
59
|
+
|
|
60
|
+
````
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Limitations of web llm
|
|
64
|
+
|
|
65
|
+
- Different models cannot be used at the same time.
|
|
66
|
+
- If the same model is used at the same time, it will only be processed sequentially.
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./web_llm_agent_generator";
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./web_llm_agent_generator"), exports);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AgentFunctionInfo } from "graphai";
|
|
2
|
+
import * as webllm from "@mlc-ai/web-llm";
|
|
3
|
+
export type CallbackReport = webllm.InitProgressReport;
|
|
4
|
+
interface WebLlmAgentOptions {
|
|
5
|
+
modelId: string;
|
|
6
|
+
callback?: (__report: CallbackReport) => void;
|
|
7
|
+
useIndexedDBCache?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const pushModelList: (__model_list?: any[]) => void;
|
|
10
|
+
export declare const webLlmAgentGenerator: ({ modelId, callback, useIndexedDBCache }: WebLlmAgentOptions) => {
|
|
11
|
+
webLlmAgent: AgentFunctionInfo;
|
|
12
|
+
loadEngine: (callback2?: (__report: CallbackReport) => void) => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
47
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
48
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
49
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
50
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
51
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
52
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
56
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
57
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
58
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
59
|
+
function step(op) {
|
|
60
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
61
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
62
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
63
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
64
|
+
switch (op[0]) {
|
|
65
|
+
case 0: case 1: t = op; break;
|
|
66
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
67
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
68
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
69
|
+
default:
|
|
70
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
71
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
72
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
73
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
74
|
+
if (t[2]) _.ops.pop();
|
|
75
|
+
_.trys.pop(); continue;
|
|
76
|
+
}
|
|
77
|
+
op = body.call(thisArg, _);
|
|
78
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
79
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
83
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
84
|
+
var m = o[Symbol.asyncIterator], i;
|
|
85
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
86
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
87
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
88
|
+
};
|
|
89
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
90
|
+
exports.webLlmAgentGenerator = exports.pushModelList = void 0;
|
|
91
|
+
var llm_utils_1 = require("@graphai/llm_utils");
|
|
92
|
+
var webllm = __importStar(require("@mlc-ai/web-llm"));
|
|
93
|
+
var model_list = webllm.prebuiltAppConfig.model_list;
|
|
94
|
+
var pushModelList = function (__model_list) {
|
|
95
|
+
__model_list.forEach(function (model) {
|
|
96
|
+
model_list.push(model);
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
exports.pushModelList = pushModelList;
|
|
100
|
+
var webLlmAgentGenerator = function (_a) {
|
|
101
|
+
var modelId = _a.modelId, callback = _a.callback, useIndexedDBCache = _a.useIndexedDBCache;
|
|
102
|
+
var engine = null;
|
|
103
|
+
var loadEngine = function (callback2) { return __awaiter(void 0, void 0, void 0, function () {
|
|
104
|
+
var reportCallback, updateEngineInitProgressCallback;
|
|
105
|
+
var _a;
|
|
106
|
+
return __generator(this, function (_b) {
|
|
107
|
+
switch (_b.label) {
|
|
108
|
+
case 0:
|
|
109
|
+
reportCallback = (_a = callback2 !== null && callback2 !== void 0 ? callback2 : callback) !== null && _a !== void 0 ? _a : (function (__report) {
|
|
110
|
+
console.log("not implement callback");
|
|
111
|
+
});
|
|
112
|
+
updateEngineInitProgressCallback = function (report) {
|
|
113
|
+
reportCallback(report);
|
|
114
|
+
};
|
|
115
|
+
if (!(engine === null)) return [3 /*break*/, 2];
|
|
116
|
+
return [4 /*yield*/, webllm.CreateMLCEngine(modelId, {
|
|
117
|
+
appConfig: {
|
|
118
|
+
model_list: model_list,
|
|
119
|
+
useIndexedDBCache: useIndexedDBCache,
|
|
120
|
+
},
|
|
121
|
+
initProgressCallback: updateEngineInitProgressCallback,
|
|
122
|
+
})];
|
|
123
|
+
case 1:
|
|
124
|
+
engine = _b.sent();
|
|
125
|
+
_b.label = 2;
|
|
126
|
+
case 2: return [2 /*return*/];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}); };
|
|
130
|
+
var _webLlmAgent = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
131
|
+
var _c, verbose, temperature, system, prompt, messages, message, top_p, stream_options, logit_bias, frequency_penalty, stream, userPrompt, systemPrompt, messagesCopy, llmParams, result, completion, tokens, _d, completion_1, completion_1_1, chunk, token, e_1_1, text, assistantMessage;
|
|
132
|
+
var _e, e_1, _f, _g;
|
|
133
|
+
var filterParams = _b.filterParams, params = _b.params, namedInputs = _b.namedInputs, config = _b.config;
|
|
134
|
+
return __generator(this, function (_h) {
|
|
135
|
+
switch (_h.label) {
|
|
136
|
+
case 0:
|
|
137
|
+
_c = __assign(__assign({}, params), namedInputs), verbose = _c.verbose, temperature = _c.temperature, system = _c.system, prompt = _c.prompt, messages = _c.messages, message = _c.message;
|
|
138
|
+
top_p = params.top_p, stream_options = params.stream_options, logit_bias = params.logit_bias, frequency_penalty = params.frequency_penalty;
|
|
139
|
+
stream = __assign(__assign({}, (config || {})), params).stream;
|
|
140
|
+
userPrompt = (0, llm_utils_1.getMergeValue)(namedInputs, params, "mergeablePrompts", prompt);
|
|
141
|
+
systemPrompt = (0, llm_utils_1.getMergeValue)(namedInputs, params, "mergeableSystem", system);
|
|
142
|
+
messagesCopy = (0, llm_utils_1.getMessages)(systemPrompt, messages);
|
|
143
|
+
if (message) {
|
|
144
|
+
messagesCopy.push(message);
|
|
145
|
+
}
|
|
146
|
+
else if (userPrompt) {
|
|
147
|
+
messagesCopy.push({
|
|
148
|
+
role: "user",
|
|
149
|
+
content: userPrompt,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (!(engine === null)) return [3 /*break*/, 2];
|
|
153
|
+
return [4 /*yield*/, loadEngine()];
|
|
154
|
+
case 1:
|
|
155
|
+
_h.sent();
|
|
156
|
+
_h.label = 2;
|
|
157
|
+
case 2:
|
|
158
|
+
if (verbose) {
|
|
159
|
+
console.log(messagesCopy);
|
|
160
|
+
}
|
|
161
|
+
llmParams = {
|
|
162
|
+
stream: stream,
|
|
163
|
+
messages: messagesCopy,
|
|
164
|
+
temperature: temperature !== null && temperature !== void 0 ? temperature : 0.7,
|
|
165
|
+
top_p: top_p !== null && top_p !== void 0 ? top_p : 0.95,
|
|
166
|
+
stream_options: stream_options !== null && stream_options !== void 0 ? stream_options : { include_usage: true },
|
|
167
|
+
logit_bias: logit_bias !== null && logit_bias !== void 0 ? logit_bias : { "14444": -100 },
|
|
168
|
+
frequency_penalty: frequency_penalty !== null && frequency_penalty !== void 0 ? frequency_penalty : 0.5,
|
|
169
|
+
};
|
|
170
|
+
if (!!stream) return [3 /*break*/, 4];
|
|
171
|
+
return [4 /*yield*/, engine.chat.completions.create(llmParams)];
|
|
172
|
+
case 3:
|
|
173
|
+
result = _h.sent();
|
|
174
|
+
return [2 /*return*/, result];
|
|
175
|
+
case 4: return [4 /*yield*/, engine.chat.completions.create(__assign(__assign({}, llmParams), { stream: true }))];
|
|
176
|
+
case 5:
|
|
177
|
+
completion = _h.sent();
|
|
178
|
+
tokens = [];
|
|
179
|
+
_h.label = 6;
|
|
180
|
+
case 6:
|
|
181
|
+
_h.trys.push([6, 11, 12, 17]);
|
|
182
|
+
_d = true, completion_1 = __asyncValues(completion);
|
|
183
|
+
_h.label = 7;
|
|
184
|
+
case 7: return [4 /*yield*/, completion_1.next()];
|
|
185
|
+
case 8:
|
|
186
|
+
if (!(completion_1_1 = _h.sent(), _e = completion_1_1.done, !_e)) return [3 /*break*/, 10];
|
|
187
|
+
_g = completion_1_1.value;
|
|
188
|
+
_d = false;
|
|
189
|
+
chunk = _g;
|
|
190
|
+
if (chunk.choices && chunk.choices[0]) {
|
|
191
|
+
token = chunk.choices[0].delta.content;
|
|
192
|
+
tokens.push(token);
|
|
193
|
+
if (stream && filterParams && filterParams.streamTokenCallback && token) {
|
|
194
|
+
filterParams.streamTokenCallback(token);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
_h.label = 9;
|
|
198
|
+
case 9:
|
|
199
|
+
_d = true;
|
|
200
|
+
return [3 /*break*/, 7];
|
|
201
|
+
case 10: return [3 /*break*/, 17];
|
|
202
|
+
case 11:
|
|
203
|
+
e_1_1 = _h.sent();
|
|
204
|
+
e_1 = { error: e_1_1 };
|
|
205
|
+
return [3 /*break*/, 17];
|
|
206
|
+
case 12:
|
|
207
|
+
_h.trys.push([12, , 15, 16]);
|
|
208
|
+
if (!(!_d && !_e && (_f = completion_1.return))) return [3 /*break*/, 14];
|
|
209
|
+
return [4 /*yield*/, _f.call(completion_1)];
|
|
210
|
+
case 13:
|
|
211
|
+
_h.sent();
|
|
212
|
+
_h.label = 14;
|
|
213
|
+
case 14: return [3 /*break*/, 16];
|
|
214
|
+
case 15:
|
|
215
|
+
if (e_1) throw e_1.error;
|
|
216
|
+
return [7 /*endfinally*/];
|
|
217
|
+
case 16: return [7 /*endfinally*/];
|
|
218
|
+
case 17:
|
|
219
|
+
text = tokens.join("");
|
|
220
|
+
assistantMessage = {
|
|
221
|
+
role: "assistant",
|
|
222
|
+
content: text,
|
|
223
|
+
};
|
|
224
|
+
messagesCopy.push(assistantMessage);
|
|
225
|
+
return [2 /*return*/, {
|
|
226
|
+
message: assistantMessage,
|
|
227
|
+
messages: messagesCopy,
|
|
228
|
+
text: text,
|
|
229
|
+
}];
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}); };
|
|
233
|
+
var webLlmAgent = {
|
|
234
|
+
name: "webLlmAgent",
|
|
235
|
+
agent: _webLlmAgent,
|
|
236
|
+
mock: _webLlmAgent,
|
|
237
|
+
inputs: {},
|
|
238
|
+
output: {},
|
|
239
|
+
params: {},
|
|
240
|
+
outputFormat: {},
|
|
241
|
+
samples: [],
|
|
242
|
+
description: "WebLlm Agent",
|
|
243
|
+
category: ["llm"],
|
|
244
|
+
author: "Receptron team",
|
|
245
|
+
repository: "https://github.com/receptron/graphai-agents",
|
|
246
|
+
license: "MIT",
|
|
247
|
+
stream: true,
|
|
248
|
+
npms: ["webLlm"],
|
|
249
|
+
environmentVariables: [],
|
|
250
|
+
};
|
|
251
|
+
return {
|
|
252
|
+
webLlmAgent: webLlmAgent,
|
|
253
|
+
loadEngine: loadEngine,
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
exports.webLlmAgentGenerator = webLlmAgentGenerator;
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@graphai/web_llm_agent",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"main": "lib/index.js",
|
|
5
|
+
"files": [
|
|
6
|
+
"./lib"
|
|
7
|
+
],
|
|
8
|
+
"scripts": {
|
|
9
|
+
"dev": "vite",
|
|
10
|
+
"build": "tsc --esModuleInterop --skipLibCheck --declaration --outDir lib/ src/agents/*.ts",
|
|
11
|
+
"preview": "vite preview",
|
|
12
|
+
"build-only": "vite build",
|
|
13
|
+
"type-check": "vue-tsc --build --force",
|
|
14
|
+
"test": "echo nothing",
|
|
15
|
+
"eslint": "eslint src",
|
|
16
|
+
"format": "prettier --write src/"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/receptron/graphai-agents"
|
|
21
|
+
},
|
|
22
|
+
"author": "Receptron team",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/receptron/graphai-agents/issues"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/receptron/graphai-agents/tree/main/llm/web-llm#readme",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@graphai/llm_utils": "^2.0.1",
|
|
30
|
+
"@mlc-ai/web-llm": "^0.2.79"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@tailwindcss/postcss": "^4.1.8",
|
|
34
|
+
"@types/cytoscape-klay": "^3.1.4",
|
|
35
|
+
"@vitejs/plugin-vue": "^5.2.4",
|
|
36
|
+
"@vue/tsconfig": "^0.7.0",
|
|
37
|
+
"autoprefixer": "^10.4.21",
|
|
38
|
+
"eslint-config-prettier": "^10.1.5",
|
|
39
|
+
"eslint-plugin-vue": "^10.2.0",
|
|
40
|
+
"postcss": "^8.5.4",
|
|
41
|
+
"tailwindcss": "^4.1.8",
|
|
42
|
+
"vite": "^6.3.5",
|
|
43
|
+
"vue": "^3.5.14",
|
|
44
|
+
"vue-eslint-parser": "^10.1.3",
|
|
45
|
+
"vue-tsc": "^2.2.10"
|
|
46
|
+
},
|
|
47
|
+
"types": "./lib/index.d.ts",
|
|
48
|
+
"directories": {
|
|
49
|
+
"lib": "lib"
|
|
50
|
+
}
|
|
51
|
+
}
|