@ljoukov/llm 7.0.10 → 7.0.11
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 +5 -5
- package/dist/index.cjs +51 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +51 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -450,19 +450,19 @@ Use a `chatgpt-` prefix:
|
|
|
450
450
|
import { generateText } from "@ljoukov/llm";
|
|
451
451
|
|
|
452
452
|
const result = await generateText({
|
|
453
|
-
model: "chatgpt-gpt-5.
|
|
453
|
+
model: "chatgpt-gpt-5.5",
|
|
454
454
|
input: "Return exactly: OK",
|
|
455
455
|
});
|
|
456
456
|
|
|
457
457
|
console.log(result.text);
|
|
458
458
|
```
|
|
459
459
|
|
|
460
|
-
`chatgpt-gpt-5.
|
|
460
|
+
`gpt-5.5-fast` and `chatgpt-gpt-5.5-fast` are also supported as convenience aliases for `gpt-5.5` with priority processing enabled (`service_tier="priority"`), matching Codex `/fast` semantics.
|
|
461
461
|
|
|
462
462
|
Supported OpenAI text model ids are fixed literal unions in code, not arbitrary strings:
|
|
463
463
|
|
|
464
|
-
- OpenAI API: `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`
|
|
465
|
-
- ChatGPT auth: `chatgpt-gpt-5.4`, `chatgpt-gpt-5.4-fast`, `chatgpt-gpt-5.4-mini`, `chatgpt-gpt-5.3-codex-spark`
|
|
464
|
+
- OpenAI API: `gpt-5.5`, `gpt-5.5-fast`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`
|
|
465
|
+
- ChatGPT auth: `chatgpt-gpt-5.5`, `chatgpt-gpt-5.5-fast`, `chatgpt-gpt-5.4`, `chatgpt-gpt-5.4-fast`, `chatgpt-gpt-5.4-mini`, `chatgpt-gpt-5.3-codex-spark`
|
|
466
466
|
|
|
467
467
|
## JSON outputs
|
|
468
468
|
|
|
@@ -742,7 +742,7 @@ console.log(result.text);
|
|
|
742
742
|
For read/search/write tasks in a workspace, enable `filesystemTool`. The library auto-selects a tool profile by model
|
|
743
743
|
when `profile: "auto"`:
|
|
744
744
|
|
|
745
|
-
- Codex-like models (`gpt-5.4`, `chatgpt-gpt-5.4`, `chatgpt-gpt-5.4-fast`, and `chatgpt-gpt-5.3-codex-spark`): Codex-compatible filesystem tool shape.
|
|
745
|
+
- Codex-like models (`gpt-5.5`, `gpt-5.5-fast`, `chatgpt-gpt-5.5`, `chatgpt-gpt-5.5-fast`, `gpt-5.4`, `chatgpt-gpt-5.4`, `chatgpt-gpt-5.4-fast`, and `chatgpt-gpt-5.3-codex-spark`): Codex-compatible filesystem tool shape.
|
|
746
746
|
- Gemini models: Gemini-compatible filesystem tool shape.
|
|
747
747
|
- Other models: model-agnostic profile (currently Gemini-style).
|
|
748
748
|
|
package/dist/index.cjs
CHANGED
|
@@ -321,16 +321,27 @@ function getGeminiImagePricing(modelId) {
|
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
// src/openai/models.ts
|
|
324
|
-
var OPENAI_MODEL_IDS = [
|
|
324
|
+
var OPENAI_MODEL_IDS = [
|
|
325
|
+
"gpt-5.5",
|
|
326
|
+
"gpt-5.5-fast",
|
|
327
|
+
"gpt-5.4",
|
|
328
|
+
"gpt-5.4-mini",
|
|
329
|
+
"gpt-5.4-nano"
|
|
330
|
+
];
|
|
325
331
|
function isOpenAiModelId(value) {
|
|
326
332
|
return OPENAI_MODEL_IDS.includes(value);
|
|
327
333
|
}
|
|
328
334
|
var CHATGPT_MODEL_IDS = [
|
|
335
|
+
"chatgpt-gpt-5.5",
|
|
336
|
+
"chatgpt-gpt-5.5-fast",
|
|
329
337
|
"chatgpt-gpt-5.4",
|
|
330
338
|
"chatgpt-gpt-5.4-fast",
|
|
331
339
|
"chatgpt-gpt-5.4-mini",
|
|
332
340
|
"chatgpt-gpt-5.3-codex-spark"
|
|
333
341
|
];
|
|
342
|
+
var FAST_MODEL_SUFFIX = "-fast";
|
|
343
|
+
var OPENAI_PRIORITY_MODEL_IDS = ["gpt-5.5-fast"];
|
|
344
|
+
var CHATGPT_PRIORITY_MODEL_IDS = ["chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4-fast"];
|
|
334
345
|
var EXPERIMENTAL_CHATGPT_MODEL_PREFIX = "experimental-chatgpt-";
|
|
335
346
|
function isExperimentalChatGptModelId(value) {
|
|
336
347
|
return value.startsWith(EXPERIMENTAL_CHATGPT_MODEL_PREFIX) && value.length > EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length;
|
|
@@ -338,6 +349,15 @@ function isExperimentalChatGptModelId(value) {
|
|
|
338
349
|
function isChatGptModelId(value) {
|
|
339
350
|
return CHATGPT_MODEL_IDS.includes(value) || isExperimentalChatGptModelId(value);
|
|
340
351
|
}
|
|
352
|
+
function stripFastSuffix(model) {
|
|
353
|
+
return model.endsWith(FAST_MODEL_SUFFIX) ? model.slice(0, -FAST_MODEL_SUFFIX.length) : model;
|
|
354
|
+
}
|
|
355
|
+
function resolveOpenAiProviderModel(model) {
|
|
356
|
+
return OPENAI_PRIORITY_MODEL_IDS.includes(model) ? stripFastSuffix(model) : model;
|
|
357
|
+
}
|
|
358
|
+
function resolveOpenAiServiceTier(model) {
|
|
359
|
+
return OPENAI_PRIORITY_MODEL_IDS.includes(model) ? "priority" : void 0;
|
|
360
|
+
}
|
|
341
361
|
function stripChatGptPrefix(model) {
|
|
342
362
|
if (isExperimentalChatGptModelId(model)) {
|
|
343
363
|
return model.slice(EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length);
|
|
@@ -345,18 +365,16 @@ function stripChatGptPrefix(model) {
|
|
|
345
365
|
return model.slice("chatgpt-".length);
|
|
346
366
|
}
|
|
347
367
|
function resolveChatGptProviderModel(model) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
return "gpt-5.4";
|
|
351
|
-
default:
|
|
352
|
-
return stripChatGptPrefix(model);
|
|
353
|
-
}
|
|
368
|
+
const providerModel = stripChatGptPrefix(model);
|
|
369
|
+
return CHATGPT_PRIORITY_MODEL_IDS.includes(model) ? stripFastSuffix(providerModel) : providerModel;
|
|
354
370
|
}
|
|
355
371
|
function resolveChatGptServiceTier(model) {
|
|
356
|
-
return model
|
|
372
|
+
return CHATGPT_PRIORITY_MODEL_IDS.includes(model) ? "priority" : void 0;
|
|
357
373
|
}
|
|
358
374
|
|
|
359
375
|
// src/openai/pricing.ts
|
|
376
|
+
var OPENAI_GPT_55_FAST_MODEL_IDS = ["gpt-5.5-fast", "chatgpt-gpt-5.5-fast"];
|
|
377
|
+
var OPENAI_GPT_55_STANDARD_MODEL_IDS = ["gpt-5.5", "chatgpt-gpt-5.5"];
|
|
360
378
|
var OPENAI_GPT_54_FAST_MODEL_IDS = ["gpt-5.4-fast", "chatgpt-gpt-5.4-fast"];
|
|
361
379
|
var OPENAI_GPT_54_MINI_MODEL_IDS = ["gpt-5.4-mini", "chatgpt-gpt-5.4-mini"];
|
|
362
380
|
var OPENAI_GPT_54_NANO_MODEL_IDS = ["gpt-5.4-nano"];
|
|
@@ -365,6 +383,16 @@ var OPENAI_GPT_53_CODEX_SPARK_MODEL_IDS = [
|
|
|
365
383
|
"chatgpt-gpt-5.3-codex-spark"
|
|
366
384
|
];
|
|
367
385
|
var OPENAI_GPT_54_STANDARD_MODEL_IDS = ["gpt-5.4", "chatgpt-gpt-5.4"];
|
|
386
|
+
var OPENAI_GPT_55_PRICING = {
|
|
387
|
+
inputRate: 5 / 1e6,
|
|
388
|
+
cachedRate: 0.5 / 1e6,
|
|
389
|
+
outputRate: 30 / 1e6
|
|
390
|
+
};
|
|
391
|
+
var OPENAI_GPT_55_PRIORITY_PRICING = {
|
|
392
|
+
inputRate: 12.5 / 1e6,
|
|
393
|
+
cachedRate: 1.25 / 1e6,
|
|
394
|
+
outputRate: 75 / 1e6
|
|
395
|
+
};
|
|
368
396
|
var OPENAI_GPT_54_PRICING = {
|
|
369
397
|
inputRate: 2.5 / 1e6,
|
|
370
398
|
cachedRate: 0.25 / 1e6,
|
|
@@ -389,6 +417,12 @@ function getOpenAiPricing(modelId) {
|
|
|
389
417
|
if (isExperimentalChatGptModelId(modelId)) {
|
|
390
418
|
return OPENAI_GPT_54_PRICING;
|
|
391
419
|
}
|
|
420
|
+
if (OPENAI_GPT_55_FAST_MODEL_IDS.includes(modelId)) {
|
|
421
|
+
return OPENAI_GPT_55_PRIORITY_PRICING;
|
|
422
|
+
}
|
|
423
|
+
if (OPENAI_GPT_55_STANDARD_MODEL_IDS.includes(modelId)) {
|
|
424
|
+
return OPENAI_GPT_55_PRICING;
|
|
425
|
+
}
|
|
392
426
|
if (OPENAI_GPT_54_FAST_MODEL_IDS.includes(modelId)) {
|
|
393
427
|
return OPENAI_GPT_54_PRIORITY_PRICING;
|
|
394
428
|
}
|
|
@@ -5070,7 +5104,11 @@ function resolveProvider(model) {
|
|
|
5070
5104
|
}
|
|
5071
5105
|
}
|
|
5072
5106
|
if (isOpenAiModelId(model)) {
|
|
5073
|
-
return {
|
|
5107
|
+
return {
|
|
5108
|
+
provider: "openai",
|
|
5109
|
+
model: resolveOpenAiProviderModel(model),
|
|
5110
|
+
serviceTier: resolveOpenAiServiceTier(model)
|
|
5111
|
+
};
|
|
5074
5112
|
}
|
|
5075
5113
|
throw new Error(`Unsupported text model: ${model}`);
|
|
5076
5114
|
}
|
|
@@ -7844,6 +7882,7 @@ async function runTextCall(params) {
|
|
|
7844
7882
|
{
|
|
7845
7883
|
model: modelForProvider,
|
|
7846
7884
|
input: openAiInput,
|
|
7885
|
+
...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
|
|
7847
7886
|
reasoning,
|
|
7848
7887
|
text: openAiTextConfig,
|
|
7849
7888
|
...openAiTools ? { tools: openAiTools } : {},
|
|
@@ -8729,6 +8768,7 @@ async function runToolLoop(request) {
|
|
|
8729
8768
|
const stepRequestPayload = {
|
|
8730
8769
|
model: providerInfo.model,
|
|
8731
8770
|
input: preparedInput,
|
|
8771
|
+
...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
|
|
8732
8772
|
...previousResponseId ? { previous_response_id: previousResponseId } : {},
|
|
8733
8773
|
...openAiTools.length > 0 ? { tools: openAiTools } : {},
|
|
8734
8774
|
...openAiTools.length > 0 ? { parallel_tool_calls: true } : {},
|
|
@@ -8757,6 +8797,7 @@ async function runToolLoop(request) {
|
|
|
8757
8797
|
{
|
|
8758
8798
|
model: providerInfo.model,
|
|
8759
8799
|
input: preparedInput,
|
|
8800
|
+
...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
|
|
8760
8801
|
...previousResponseId ? { previous_response_id: previousResponseId } : {},
|
|
8761
8802
|
...openAiTools.length > 0 ? { tools: openAiTools } : {},
|
|
8762
8803
|
...openAiTools.length > 0 ? { parallel_tool_calls: true } : {},
|
|
@@ -12768,7 +12809,7 @@ function isCodexModel(model) {
|
|
|
12768
12809
|
return true;
|
|
12769
12810
|
}
|
|
12770
12811
|
const normalized = model.startsWith("chatgpt-") ? model.slice("chatgpt-".length) : model;
|
|
12771
|
-
return normalized.includes("codex") || normalized === "gpt-5.4" || normalized === "gpt-5.4-fast";
|
|
12812
|
+
return normalized.includes("codex") || normalized === "gpt-5.5" || normalized === "gpt-5.5-fast" || normalized === "gpt-5.4" || normalized === "gpt-5.4-fast";
|
|
12772
12813
|
}
|
|
12773
12814
|
function isGeminiModel(model) {
|
|
12774
12815
|
return model.startsWith("gemini-");
|