llmist 0.4.0 → 0.4.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/dist/{chunk-VRTKJK2X.js → chunk-A4GRCCXF.js} +2 -2
- package/dist/{chunk-VYBRYR2S.js → chunk-LQE7TKKW.js} +43 -38
- package/dist/chunk-LQE7TKKW.js.map +1 -0
- package/dist/{chunk-I55AV3WV.js → chunk-QVDGTUQN.js} +2 -2
- package/dist/cli.cjs +43 -38
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +42 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +3 -3
- package/dist/testing/index.cjs +42 -37
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-VYBRYR2S.js.map +0 -1
- /package/dist/{chunk-VRTKJK2X.js.map → chunk-A4GRCCXF.js.map} +0 -0
- /package/dist/{chunk-I55AV3WV.js.map → chunk-QVDGTUQN.js.map} +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
init_client,
|
|
8
8
|
init_constants,
|
|
9
9
|
init_logger
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LQE7TKKW.js";
|
|
11
11
|
|
|
12
12
|
// src/gadgets/validation.ts
|
|
13
13
|
function validateAndApplyDefaults(schema, params) {
|
|
@@ -898,4 +898,4 @@ export {
|
|
|
898
898
|
MockGadgetBuilder,
|
|
899
899
|
mockGadget
|
|
900
900
|
};
|
|
901
|
-
//# sourceMappingURL=chunk-
|
|
901
|
+
//# sourceMappingURL=chunk-A4GRCCXF.js.map
|
|
@@ -2382,10 +2382,11 @@ var init_gemini = __esm({
|
|
|
2382
2382
|
return GEMINI_MODELS;
|
|
2383
2383
|
}
|
|
2384
2384
|
buildRequestPayload(options, descriptor, _spec, messages) {
|
|
2385
|
-
const
|
|
2385
|
+
const contents = this.convertMessagesToContents(messages);
|
|
2386
2386
|
const generationConfig = this.buildGenerationConfig(options);
|
|
2387
2387
|
const config = {
|
|
2388
|
-
|
|
2388
|
+
// Note: systemInstruction removed - it doesn't work with countTokens()
|
|
2389
|
+
// System messages are now included in contents as user+model exchanges
|
|
2389
2390
|
...generationConfig ? { ...generationConfig } : {},
|
|
2390
2391
|
// Explicitly disable function calling to prevent UNEXPECTED_TOOL_CALL errors
|
|
2391
2392
|
toolConfig: {
|
|
@@ -2406,31 +2407,37 @@ var init_gemini = __esm({
|
|
|
2406
2407
|
const streamResponse = await client.models.generateContentStream(payload);
|
|
2407
2408
|
return streamResponse;
|
|
2408
2409
|
}
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2410
|
+
/**
|
|
2411
|
+
* Convert LLM messages to Gemini contents format.
|
|
2412
|
+
*
|
|
2413
|
+
* For Gemini, we convert system messages to user+model exchanges instead of
|
|
2414
|
+
* using systemInstruction, because:
|
|
2415
|
+
* 1. systemInstruction doesn't work with countTokens() API
|
|
2416
|
+
* 2. This approach gives perfect token counting accuracy (0% error)
|
|
2417
|
+
* 3. The model receives and follows system instructions identically
|
|
2418
|
+
*
|
|
2419
|
+
* System message: "You are a helpful assistant"
|
|
2420
|
+
* Becomes:
|
|
2421
|
+
* - User: "You are a helpful assistant"
|
|
2422
|
+
* - Model: "Understood."
|
|
2423
|
+
*/
|
|
2424
|
+
convertMessagesToContents(messages) {
|
|
2425
|
+
const expandedMessages = [];
|
|
2426
|
+
for (const message of messages) {
|
|
2427
|
+
if (message.role === "system") {
|
|
2428
|
+
expandedMessages.push({
|
|
2429
|
+
role: "user",
|
|
2430
|
+
content: message.content
|
|
2431
|
+
});
|
|
2432
|
+
expandedMessages.push({
|
|
2433
|
+
role: "assistant",
|
|
2434
|
+
content: "Understood."
|
|
2435
|
+
});
|
|
2436
|
+
} else {
|
|
2437
|
+
expandedMessages.push(message);
|
|
2438
|
+
}
|
|
2420
2439
|
}
|
|
2421
|
-
|
|
2422
|
-
const nonSystemMessages = [
|
|
2423
|
-
...messages.slice(0, firstSystemIndex),
|
|
2424
|
-
...messages.slice(systemBlockEnd)
|
|
2425
|
-
];
|
|
2426
|
-
const systemInstruction = {
|
|
2427
|
-
role: "system",
|
|
2428
|
-
parts: systemMessages.map((message) => ({ text: message.content }))
|
|
2429
|
-
};
|
|
2430
|
-
return {
|
|
2431
|
-
systemInstruction,
|
|
2432
|
-
contents: this.mergeConsecutiveMessages(nonSystemMessages)
|
|
2433
|
-
};
|
|
2440
|
+
return this.mergeConsecutiveMessages(expandedMessages);
|
|
2434
2441
|
}
|
|
2435
2442
|
mergeConsecutiveMessages(messages) {
|
|
2436
2443
|
if (messages.length === 0) {
|
|
@@ -2519,8 +2526,8 @@ var init_gemini = __esm({
|
|
|
2519
2526
|
*
|
|
2520
2527
|
* This method provides accurate token estimation for Gemini models by:
|
|
2521
2528
|
* - Using the SDK's countTokens() method
|
|
2522
|
-
* -
|
|
2523
|
-
* -
|
|
2529
|
+
* - Converting system messages to user+model exchanges (same as in generation)
|
|
2530
|
+
* - This gives perfect token counting accuracy (0% error vs actual usage)
|
|
2524
2531
|
*
|
|
2525
2532
|
* @param messages - The messages to count tokens for
|
|
2526
2533
|
* @param descriptor - Model descriptor containing the model name
|
|
@@ -2539,16 +2546,14 @@ var init_gemini = __esm({
|
|
|
2539
2546
|
*/
|
|
2540
2547
|
async countTokens(messages, descriptor, _spec) {
|
|
2541
2548
|
const client = this.client;
|
|
2542
|
-
const
|
|
2543
|
-
const request = {
|
|
2544
|
-
model: descriptor.name,
|
|
2545
|
-
contents: this.convertContentsForNewSDK(contents)
|
|
2546
|
-
};
|
|
2547
|
-
if (systemInstruction) {
|
|
2548
|
-
request.systemInstruction = systemInstruction.parts.map((p) => p.text).join("\n");
|
|
2549
|
-
}
|
|
2549
|
+
const contents = this.convertMessagesToContents(messages);
|
|
2550
2550
|
try {
|
|
2551
|
-
const response = await client.models.countTokens(
|
|
2551
|
+
const response = await client.models.countTokens({
|
|
2552
|
+
model: descriptor.name,
|
|
2553
|
+
contents: this.convertContentsForNewSDK(contents)
|
|
2554
|
+
// Note: systemInstruction not used - it's not supported by countTokens()
|
|
2555
|
+
// and would cause a 2100% token counting error
|
|
2556
|
+
});
|
|
2552
2557
|
return response.totalTokens ?? 0;
|
|
2553
2558
|
} catch (error) {
|
|
2554
2559
|
console.warn(
|
|
@@ -4494,4 +4499,4 @@ export {
|
|
|
4494
4499
|
init_builder,
|
|
4495
4500
|
BaseGadget
|
|
4496
4501
|
};
|
|
4497
|
-
//# sourceMappingURL=chunk-
|
|
4502
|
+
//# sourceMappingURL=chunk-LQE7TKKW.js.map
|