@ax-llm/ax 11.0.35 → 11.0.36

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/index.cjs CHANGED
@@ -114,6 +114,7 @@ __export(index_exports, {
114
114
  AxStringUtil: () => AxStringUtil,
115
115
  AxTestPrompt: () => AxTestPrompt,
116
116
  axAIAnthropicDefaultConfig: () => axAIAnthropicDefaultConfig,
117
+ axAIAnthropicVertexDefaultConfig: () => axAIAnthropicVertexDefaultConfig,
117
118
  axAIAzureOpenAIBestConfig: () => axAIAzureOpenAIBestConfig,
118
119
  axAIAzureOpenAICreativeConfig: () => axAIAzureOpenAICreativeConfig,
119
120
  axAIAzureOpenAIDefaultConfig: () => axAIAzureOpenAIDefaultConfig,
@@ -987,12 +988,6 @@ var AxBaseAI = class {
987
988
  }
988
989
  return models;
989
990
  }
990
- getDefaultModels() {
991
- return {
992
- model: this.defaults.model,
993
- embedModel: this.defaults.embedModel
994
- };
995
- }
996
991
  getName() {
997
992
  return this.name;
998
993
  }
@@ -1149,13 +1144,18 @@ var AxBaseAI = class {
1149
1144
  if (!this.aiImpl.createChatStreamResp) {
1150
1145
  throw new Error("generateChatResp not implemented");
1151
1146
  }
1152
- const respFn = this.aiImpl.createChatStreamResp;
1147
+ const respFn = this.aiImpl.createChatStreamResp.bind(this);
1153
1148
  const wrappedRespFn = (state) => (resp) => {
1154
1149
  const res2 = respFn(resp, state);
1155
1150
  res2.sessionId = options?.sessionId;
1156
- if (res2.modelUsage) {
1157
- this.modelUsage = res2.modelUsage;
1151
+ if (!res2.modelUsage) {
1152
+ res2.modelUsage = {
1153
+ ai: this.name,
1154
+ model,
1155
+ tokens: this.aiImpl.getTokenUsage()
1156
+ };
1158
1157
  }
1158
+ this.modelUsage = res2.modelUsage;
1159
1159
  if (span?.isRecording()) {
1160
1160
  setResponseAttr(res2, span);
1161
1161
  }
@@ -1261,15 +1261,23 @@ var AxBaseAI = class {
1261
1261
  );
1262
1262
  return res2;
1263
1263
  };
1264
- const resValue = this.rt ? await this.rt(fn, { embedModelUsage: this.embedModelUsage }) : await fn();
1264
+ const resValue = this.rt ? await this.rt(fn, { modelUsage: this.embedModelUsage }) : await fn();
1265
1265
  const res = this.aiImpl.createEmbedResp(resValue);
1266
1266
  res.sessionId = options?.sessionId;
1267
+ if (!res.modelUsage) {
1268
+ res.modelUsage = {
1269
+ ai: this.name,
1270
+ model: embedModel,
1271
+ tokens: this.aiImpl.getTokenUsage()
1272
+ };
1273
+ }
1274
+ this.embedModelUsage = res.modelUsage;
1267
1275
  if (span?.isRecording()) {
1268
1276
  if (res.modelUsage) {
1269
1277
  this.embedModelUsage = res.modelUsage;
1270
1278
  span.setAttributes({
1271
- [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.completionTokens ?? 0,
1272
- [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.promptTokens
1279
+ [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.tokens?.completionTokens ?? 0,
1280
+ [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.tokens?.promptTokens
1273
1281
  });
1274
1282
  }
1275
1283
  }
@@ -1298,8 +1306,8 @@ var AxBaseAI = class {
1298
1306
  function setResponseAttr(res, span) {
1299
1307
  if (res.modelUsage) {
1300
1308
  span.setAttributes({
1301
- [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.completionTokens ?? 0,
1302
- [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.promptTokens
1309
+ [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.tokens?.completionTokens ?? 0,
1310
+ [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.tokens?.promptTokens
1303
1311
  });
1304
1312
  }
1305
1313
  }
@@ -1354,14 +1362,14 @@ var AxAIAnthropicModel = /* @__PURE__ */ ((AxAIAnthropicModel2) => {
1354
1362
  AxAIAnthropicModel2["ClaudeInstant12"] = "claude-instant-1.2";
1355
1363
  return AxAIAnthropicModel2;
1356
1364
  })(AxAIAnthropicModel || {});
1357
- var AxAIAnthropicVertexModel = /* @__PURE__ */ ((AxAIAnthropicVertexModel3) => {
1358
- AxAIAnthropicVertexModel3["Claude37Sonnet"] = "claude-3-7-sonnet";
1359
- AxAIAnthropicVertexModel3["Claude35Haiku"] = "claude-3-5-haiku";
1360
- AxAIAnthropicVertexModel3["Claude35Sonnet"] = "claude-3-5-sonnet";
1361
- AxAIAnthropicVertexModel3["Claude35SonnetV2"] = "claude-3-5-sonnet-v2";
1362
- AxAIAnthropicVertexModel3["Claude3Haiku"] = "claude-3-haiku";
1363
- AxAIAnthropicVertexModel3["Claude3Opus"] = "claude-3-opus";
1364
- return AxAIAnthropicVertexModel3;
1365
+ var AxAIAnthropicVertexModel = /* @__PURE__ */ ((AxAIAnthropicVertexModel2) => {
1366
+ AxAIAnthropicVertexModel2["Claude37Sonnet"] = "claude-3-7-sonnet";
1367
+ AxAIAnthropicVertexModel2["Claude35Haiku"] = "claude-3-5-haiku";
1368
+ AxAIAnthropicVertexModel2["Claude35Sonnet"] = "claude-3-5-sonnet";
1369
+ AxAIAnthropicVertexModel2["Claude35SonnetV2"] = "claude-3-5-sonnet-v2";
1370
+ AxAIAnthropicVertexModel2["Claude3Haiku"] = "claude-3-haiku";
1371
+ AxAIAnthropicVertexModel2["Claude3Opus"] = "claude-3-opus";
1372
+ return AxAIAnthropicVertexModel2;
1365
1373
  })(AxAIAnthropicVertexModel || {});
1366
1374
 
1367
1375
  // ai/anthropic/info.ts
@@ -1415,7 +1423,11 @@ var axModelInfoAnthropic = [
1415
1423
 
1416
1424
  // ai/anthropic/api.ts
1417
1425
  var axAIAnthropicDefaultConfig = () => structuredClone({
1418
- model: "claude-3-5-sonnet-latest" /* Claude35Sonnet */,
1426
+ model: "claude-3-7-sonnet-latest" /* Claude37Sonnet */,
1427
+ ...axBaseAIDefaultConfig()
1428
+ });
1429
+ var axAIAnthropicVertexDefaultConfig = () => structuredClone({
1430
+ model: "claude-3-7-sonnet" /* Claude37Sonnet */,
1419
1431
  ...axBaseAIDefaultConfig()
1420
1432
  });
1421
1433
  var AxAIAnthropicImpl = class {
@@ -1423,6 +1435,10 @@ var AxAIAnthropicImpl = class {
1423
1435
  this.config = config;
1424
1436
  this.isVertex = isVertex;
1425
1437
  }
1438
+ tokensUsed;
1439
+ getTokenUsage() {
1440
+ return this.tokensUsed;
1441
+ }
1426
1442
  getModelConfig() {
1427
1443
  const { config } = this;
1428
1444
  return {
@@ -1532,16 +1548,12 @@ var AxAIAnthropicImpl = class {
1532
1548
  finishReason
1533
1549
  };
1534
1550
  });
1535
- const modelUsage = {
1551
+ this.tokensUsed = {
1536
1552
  promptTokens: resp.usage.input_tokens,
1537
1553
  completionTokens: resp.usage.output_tokens,
1538
1554
  totalTokens: resp.usage.input_tokens + resp.usage.output_tokens
1539
1555
  };
1540
- return {
1541
- results,
1542
- modelUsage,
1543
- remoteId: resp.id
1544
- };
1556
+ return { results, remoteId: resp.id };
1545
1557
  };
1546
1558
  createChatStreamResp = (resp, state) => {
1547
1559
  if (!("type" in resp)) {
@@ -1558,15 +1570,12 @@ var AxAIAnthropicImpl = class {
1558
1570
  if (resp.type === "message_start") {
1559
1571
  const { message } = resp;
1560
1572
  const results = [{ content: "", id: message.id }];
1561
- const modelUsage = {
1573
+ this.tokensUsed = {
1562
1574
  promptTokens: message.usage?.input_tokens ?? 0,
1563
1575
  completionTokens: message.usage?.output_tokens ?? 0,
1564
1576
  totalTokens: (message.usage?.input_tokens ?? 0) + (message.usage?.output_tokens ?? 0)
1565
1577
  };
1566
- return {
1567
- results,
1568
- modelUsage
1569
- };
1578
+ return { results };
1570
1579
  }
1571
1580
  if (resp.type === "content_block_start") {
1572
1581
  const { content_block: contentBlock } = resp;
@@ -1623,19 +1632,15 @@ var AxAIAnthropicImpl = class {
1623
1632
  }
1624
1633
  if (resp.type === "message_delta") {
1625
1634
  const { delta, usage } = resp;
1626
- return {
1627
- results: [
1628
- {
1629
- content: "",
1630
- finishReason: mapFinishReason(delta.stop_reason)
1631
- }
1632
- ],
1633
- modelUsage: {
1634
- promptTokens: 0,
1635
- completionTokens: usage.output_tokens,
1636
- totalTokens: usage.output_tokens
1637
- }
1635
+ this.tokensUsed = {
1636
+ promptTokens: 0,
1637
+ completionTokens: usage.output_tokens,
1638
+ totalTokens: usage.output_tokens
1638
1639
  };
1640
+ const results = [
1641
+ { content: "", finishReason: mapFinishReason(delta.stop_reason) }
1642
+ ];
1643
+ return { results };
1639
1644
  }
1640
1645
  return {
1641
1646
  results: [{ content: "" }]
@@ -1826,6 +1831,7 @@ var AxAIOpenAIModel = /* @__PURE__ */ ((AxAIOpenAIModel2) => {
1826
1831
  AxAIOpenAIModel2["O4Mini"] = "o4-mini";
1827
1832
  AxAIOpenAIModel2["GPT4"] = "gpt-4";
1828
1833
  AxAIOpenAIModel2["GPT41"] = "gpt-4.1";
1834
+ AxAIOpenAIModel2["GPT41Mini"] = "gpt-4.1-mini";
1829
1835
  AxAIOpenAIModel2["GPT4O"] = "gpt-4o";
1830
1836
  AxAIOpenAIModel2["GPT4OMini"] = "gpt-4o-mini";
1831
1837
  AxAIOpenAIModel2["GPT4ChatGPT4O"] = "chatgpt-4o-latest";
@@ -1882,6 +1888,12 @@ var axModelInfoOpenAI = [
1882
1888
  promptTokenCostPer1M: 2,
1883
1889
  completionTokenCostPer1M: 8
1884
1890
  },
1891
+ {
1892
+ name: "gpt-4.1-mini" /* GPT41Mini */,
1893
+ currency: "usd",
1894
+ promptTokenCostPer1M: 0.4,
1895
+ completionTokenCostPer1M: 1.6
1896
+ },
1885
1897
  {
1886
1898
  name: "gpt-4o" /* GPT4O */,
1887
1899
  currency: "usd",
@@ -1934,28 +1946,32 @@ var axModelInfoOpenAI = [
1934
1946
 
1935
1947
  // ai/openai/api.ts
1936
1948
  var axAIOpenAIDefaultConfig = () => structuredClone({
1937
- model: "gpt-4o" /* GPT4O */,
1949
+ model: "gpt-4.1" /* GPT41 */,
1938
1950
  embedModel: "text-embedding-3-small" /* TextEmbedding3Small */,
1939
1951
  ...axBaseAIDefaultConfig()
1940
1952
  });
1941
1953
  var axAIOpenAIBestConfig = () => structuredClone({
1942
1954
  ...axAIOpenAIDefaultConfig(),
1943
- model: "gpt-4o" /* GPT4O */
1955
+ model: "gpt-4.1" /* GPT41 */
1944
1956
  });
1945
1957
  var axAIOpenAICreativeConfig = () => structuredClone({
1946
- model: "gpt-4o" /* GPT4O */,
1958
+ model: "gpt-4.1" /* GPT41 */,
1947
1959
  embedModel: "text-embedding-3-small" /* TextEmbedding3Small */,
1948
1960
  ...axBaseAIDefaultCreativeConfig()
1949
1961
  });
1950
1962
  var axAIOpenAIFastConfig = () => ({
1951
1963
  ...axAIOpenAIDefaultConfig(),
1952
- model: "gpt-4o-mini" /* GPT4OMini */
1964
+ model: "gpt-4.1-mini" /* GPT41Mini */
1953
1965
  });
1954
1966
  var AxAIOpenAIImpl = class {
1955
1967
  constructor(config, streamingUsage) {
1956
1968
  this.config = config;
1957
1969
  this.streamingUsage = streamingUsage;
1958
1970
  }
1971
+ tokensUsed;
1972
+ getTokenUsage() {
1973
+ return this.tokensUsed;
1974
+ }
1959
1975
  getModelConfig() {
1960
1976
  const { config } = this;
1961
1977
  return {
@@ -2035,7 +2051,7 @@ var AxAIOpenAIImpl = class {
2035
2051
  if (error) {
2036
2052
  throw error;
2037
2053
  }
2038
- const modelUsage = usage ? {
2054
+ this.tokensUsed = usage ? {
2039
2055
  promptTokens: usage.prompt_tokens,
2040
2056
  completionTokens: usage.completion_tokens,
2041
2057
  totalTokens: usage.total_tokens
@@ -2057,14 +2073,13 @@ var AxAIOpenAIImpl = class {
2057
2073
  };
2058
2074
  });
2059
2075
  return {
2060
- modelUsage,
2061
2076
  results,
2062
2077
  remoteId: id
2063
2078
  };
2064
2079
  }
2065
2080
  createChatStreamResp(resp, state) {
2066
2081
  const { id, usage, choices } = resp;
2067
- const modelUsage = usage ? {
2082
+ this.tokensUsed = usage ? {
2068
2083
  promptTokens: usage.prompt_tokens,
2069
2084
  completionTokens: usage.completion_tokens,
2070
2085
  totalTokens: usage.total_tokens
@@ -2102,22 +2117,16 @@ var AxAIOpenAIImpl = class {
2102
2117
  };
2103
2118
  }
2104
2119
  );
2105
- return {
2106
- results,
2107
- modelUsage
2108
- };
2120
+ return { results };
2109
2121
  }
2110
2122
  createEmbedResp(resp) {
2111
2123
  const { data, usage } = resp;
2112
- const modelUsage = usage ? {
2124
+ this.tokensUsed = usage ? {
2113
2125
  promptTokens: usage.prompt_tokens,
2114
2126
  completionTokens: usage.completion_tokens,
2115
2127
  totalTokens: usage.total_tokens
2116
2128
  } : void 0;
2117
- return {
2118
- embeddings: data.map((v) => v.embedding),
2119
- modelUsage
2120
- };
2129
+ return { embeddings: data.map((v) => v.embedding) };
2121
2130
  }
2122
2131
  };
2123
2132
  var mapFinishReason2 = (finishReason) => {
@@ -2382,6 +2391,10 @@ var AxAICohereImpl = class {
2382
2391
  constructor(config) {
2383
2392
  this.config = config;
2384
2393
  }
2394
+ tokensUsed;
2395
+ getTokenUsage() {
2396
+ return this.tokensUsed;
2397
+ }
2385
2398
  getModelConfig() {
2386
2399
  const { config } = this;
2387
2400
  return {
@@ -2473,7 +2486,7 @@ var AxAICohereImpl = class {
2473
2486
  return [apiConfig, reqValue];
2474
2487
  };
2475
2488
  createChatResp = (resp) => {
2476
- const modelUsage = resp.meta.billed_units ? {
2489
+ this.tokensUsed = resp.meta.billed_units ? {
2477
2490
  promptTokens: resp.meta.billed_units.input_tokens,
2478
2491
  completionTokens: resp.meta.billed_units.output_tokens,
2479
2492
  totalTokens: resp.meta.billed_units.input_tokens + resp.meta.billed_units.output_tokens
@@ -2516,17 +2529,18 @@ var AxAICohereImpl = class {
2516
2529
  finishReason
2517
2530
  }
2518
2531
  ];
2519
- return {
2520
- results,
2521
- modelUsage,
2522
- remoteId: resp.response_id
2523
- };
2532
+ return { results, remoteId: resp.response_id };
2524
2533
  };
2525
2534
  createChatStreamResp = (resp, state) => {
2526
2535
  const ss = state;
2527
2536
  if (resp.event_type === "stream-start") {
2528
2537
  ss.generation_id = resp.generation_id;
2529
2538
  }
2539
+ this.tokensUsed = {
2540
+ promptTokens: 0,
2541
+ completionTokens: resp.meta.billed_units?.output_tokens ?? 0,
2542
+ totalTokens: resp.meta.billed_units?.output_tokens ?? 0
2543
+ };
2530
2544
  const { results } = this.createChatResp(resp);
2531
2545
  const result = results[0];
2532
2546
  if (!result) {
@@ -2820,13 +2834,13 @@ var safetySettings = [
2820
2834
  ];
2821
2835
  var axAIGoogleGeminiDefaultConfig = () => structuredClone({
2822
2836
  model: "gemini-2.0-flash" /* Gemini20Flash */,
2823
- embedModel: "text-embedding-004" /* TextEmbedding004 */,
2837
+ embedModel: "text-embedding-005" /* TextEmbedding005 */,
2824
2838
  safetySettings,
2825
2839
  ...axBaseAIDefaultConfig()
2826
2840
  });
2827
2841
  var axAIGoogleGeminiDefaultCreativeConfig = () => structuredClone({
2828
2842
  model: "gemini-2.0-flash" /* Gemini20Flash */,
2829
- embedModel: "text-embedding-004" /* TextEmbedding004 */,
2843
+ embedModel: "text-embedding-005" /* TextEmbedding005 */,
2830
2844
  safetySettings,
2831
2845
  ...axBaseAIDefaultCreativeConfig()
2832
2846
  });
@@ -2841,6 +2855,10 @@ var AxAIGoogleGeminiImpl = class {
2841
2855
  throw new Error("Auto truncate is not supported for GoogleGemini");
2842
2856
  }
2843
2857
  }
2858
+ tokensUsed;
2859
+ getTokenUsage() {
2860
+ return this.tokensUsed;
2861
+ }
2844
2862
  getModelConfig() {
2845
2863
  const { config } = this;
2846
2864
  return {
@@ -3103,18 +3121,14 @@ var AxAIGoogleGeminiImpl = class {
3103
3121
  return result;
3104
3122
  }
3105
3123
  );
3106
- let modelUsage;
3107
3124
  if (resp.usageMetadata) {
3108
- modelUsage = {
3125
+ this.tokensUsed = {
3109
3126
  totalTokens: resp.usageMetadata.totalTokenCount,
3110
3127
  promptTokens: resp.usageMetadata.promptTokenCount,
3111
3128
  completionTokens: resp.usageMetadata.candidatesTokenCount
3112
3129
  };
3113
3130
  }
3114
- return {
3115
- results,
3116
- modelUsage
3117
- };
3131
+ return { results };
3118
3132
  };
3119
3133
  createChatStreamResp = (resp) => {
3120
3134
  return this.createChatResp(resp);
@@ -3332,7 +3346,7 @@ var AxAIGroq = class extends AxAIOpenAIBase {
3332
3346
  debug: options?.debug
3333
3347
  });
3334
3348
  const rtFunc = async (func, info) => {
3335
- const totalTokens = info.modelUsage?.totalTokens || 0;
3349
+ const totalTokens = info.modelUsage?.tokens?.totalTokens || 0;
3336
3350
  await rt.acquire(totalTokens);
3337
3351
  return await func();
3338
3352
  };
@@ -3362,6 +3376,10 @@ var AxAIHuggingFaceImpl = class {
3362
3376
  constructor(config) {
3363
3377
  this.config = config;
3364
3378
  }
3379
+ tokensUsed;
3380
+ getTokenUsage() {
3381
+ return this.tokensUsed;
3382
+ }
3365
3383
  getModelConfig() {
3366
3384
  const { config } = this;
3367
3385
  return {
@@ -3655,6 +3673,10 @@ var AxAIRekaImpl = class {
3655
3673
  constructor(config) {
3656
3674
  this.config = config;
3657
3675
  }
3676
+ tokensUsed;
3677
+ getTokenUsage() {
3678
+ return this.tokensUsed;
3679
+ }
3658
3680
  getModelConfig() {
3659
3681
  const { config } = this;
3660
3682
  return {
@@ -3695,7 +3717,7 @@ var AxAIRekaImpl = class {
3695
3717
  };
3696
3718
  createChatResp = (resp) => {
3697
3719
  const { id, usage, responses } = resp;
3698
- const modelUsage = usage ? {
3720
+ this.tokensUsed = usage ? {
3699
3721
  promptTokens: usage.input_tokens,
3700
3722
  completionTokens: usage.output_tokens,
3701
3723
  totalTokens: usage.input_tokens + usage.output_tokens
@@ -3714,15 +3736,11 @@ var AxAIRekaImpl = class {
3714
3736
  finishReason
3715
3737
  };
3716
3738
  });
3717
- return {
3718
- modelUsage,
3719
- results,
3720
- remoteId: id
3721
- };
3739
+ return { results, remoteId: id };
3722
3740
  };
3723
3741
  createChatStreamResp = (resp) => {
3724
3742
  const { id, usage, responses } = resp;
3725
- const modelUsage = usage ? {
3743
+ this.tokensUsed = usage ? {
3726
3744
  promptTokens: usage.input_tokens,
3727
3745
  completionTokens: usage.output_tokens,
3728
3746
  totalTokens: usage.input_tokens + usage.output_tokens
@@ -3741,10 +3759,7 @@ var AxAIRekaImpl = class {
3741
3759
  finishReason
3742
3760
  };
3743
3761
  });
3744
- return {
3745
- results,
3746
- modelUsage
3747
- };
3762
+ return { results };
3748
3763
  };
3749
3764
  };
3750
3765
  var mapFinishReason3 = (finishReason) => {
@@ -3930,9 +3945,6 @@ var AxAI = class {
3930
3945
  getModelList() {
3931
3946
  return this.ai.getModelList();
3932
3947
  }
3933
- getDefaultModels() {
3934
- return this.ai.getDefaultModels();
3935
- }
3936
3948
  getMetrics() {
3937
3949
  return this.ai.getMetrics();
3938
3950
  }
@@ -4869,9 +4881,15 @@ function mergeProgramUsage(usages) {
4869
4881
  }
4870
4882
  const currentUsage = usageMap[key];
4871
4883
  if (currentUsage) {
4872
- currentUsage.promptTokens += usage.promptTokens;
4873
- currentUsage.completionTokens += usage.completionTokens;
4874
- currentUsage.totalTokens += usage.totalTokens;
4884
+ const tokens = currentUsage.tokens ?? {
4885
+ promptTokens: 0,
4886
+ completionTokens: 0,
4887
+ totalTokens: 0
4888
+ };
4889
+ tokens.promptTokens += usage?.tokens?.promptTokens ?? 0;
4890
+ tokens.completionTokens += usage?.tokens?.completionTokens ?? 0;
4891
+ tokens.totalTokens += usage?.tokens?.totalTokens ?? 0;
4892
+ currentUsage.tokens = tokens;
4875
4893
  }
4876
4894
  }
4877
4895
  return Object.values(usageMap);
@@ -6391,13 +6409,9 @@ var AxGen = class extends AxProgramWithSignature {
6391
6409
  mem,
6392
6410
  options
6393
6411
  }) {
6394
- const { sessionId, traceId, model, functions: _functions } = options ?? {};
6412
+ const { sessionId, traceId, functions: _functions } = options ?? {};
6395
6413
  const fastFail = options?.fastFail ?? this.options?.fastFail;
6396
- const modelName = model ?? ai.getDefaultModels().model;
6397
- const usageInfo = {
6398
- ai: ai.getName(),
6399
- model: modelName
6400
- };
6414
+ const model = options.model;
6401
6415
  const functions = _functions?.map((f) => "toFunction" in f ? f.toFunction() : f)?.flat();
6402
6416
  const res = await this.forwardSendRequest({
6403
6417
  ai,
@@ -6409,7 +6423,6 @@ var AxGen = class extends AxProgramWithSignature {
6409
6423
  ai,
6410
6424
  model,
6411
6425
  res,
6412
- usageInfo,
6413
6426
  mem,
6414
6427
  traceId,
6415
6428
  sessionId,
@@ -6421,7 +6434,6 @@ var AxGen = class extends AxProgramWithSignature {
6421
6434
  ai,
6422
6435
  model,
6423
6436
  res,
6424
- usageInfo,
6425
6437
  mem,
6426
6438
  traceId,
6427
6439
  sessionId,
@@ -6433,14 +6445,13 @@ var AxGen = class extends AxProgramWithSignature {
6433
6445
  ai,
6434
6446
  model,
6435
6447
  res,
6436
- usageInfo,
6437
6448
  mem,
6438
6449
  sessionId,
6439
6450
  traceId,
6440
6451
  functions,
6441
6452
  fastFail
6442
6453
  }) {
6443
- const streamingValidation = fastFail ?? ai.getFeatures().functionCot !== true;
6454
+ const streamingValidation = fastFail ?? ai.getFeatures(model).functionCot !== true;
6444
6455
  const functionCalls = [];
6445
6456
  const values = {};
6446
6457
  const xstate = {
@@ -6455,7 +6466,7 @@ var AxGen = class extends AxProgramWithSignature {
6455
6466
  continue;
6456
6467
  }
6457
6468
  if (v.modelUsage) {
6458
- this.usage.push({ ...usageInfo, ...v.modelUsage });
6469
+ this.usage.push(v.modelUsage);
6459
6470
  }
6460
6471
  if (result.functionCalls) {
6461
6472
  mergeFunctionCalls(functionCalls, result.functionCalls);
@@ -6556,7 +6567,6 @@ var AxGen = class extends AxProgramWithSignature {
6556
6567
  async processResponse({
6557
6568
  ai,
6558
6569
  res,
6559
- usageInfo,
6560
6570
  mem,
6561
6571
  sessionId,
6562
6572
  traceId,
@@ -6569,7 +6579,7 @@ var AxGen = class extends AxProgramWithSignature {
6569
6579
  }
6570
6580
  for (const result of results) {
6571
6581
  if (res.modelUsage) {
6572
- this.usage.push({ ...usageInfo, ...res.modelUsage });
6582
+ this.usage.push(res.modelUsage);
6573
6583
  }
6574
6584
  mem.addResult(result, sessionId);
6575
6585
  if (result.functionCalls?.length) {
@@ -7161,9 +7171,6 @@ var AxBalancer = class _AxBalancer {
7161
7171
  getModelList() {
7162
7172
  return this.currentService.getModelList();
7163
7173
  }
7164
- getDefaultModels() {
7165
- return this.currentService.getDefaultModels();
7166
- }
7167
7174
  getNextService() {
7168
7175
  const cs = this.services[++this.currentServiceIndex];
7169
7176
  if (cs === void 0) {
@@ -9315,12 +9322,6 @@ var AxMockAIService = class {
9315
9322
  getModelList() {
9316
9323
  return this.config.models;
9317
9324
  }
9318
- getDefaultModels() {
9319
- return {
9320
- model: this.config.modelInfo?.name ?? "mock-model",
9321
- embedModel: this.config.embedModelInfo?.name
9322
- };
9323
- }
9324
9325
  getMetrics() {
9325
9326
  return this.metrics;
9326
9327
  }
@@ -9343,9 +9344,13 @@ var AxMockAIService = class {
9343
9344
  }
9344
9345
  ],
9345
9346
  modelUsage: {
9346
- promptTokens: 10,
9347
- completionTokens: 5,
9348
- totalTokens: 15
9347
+ ai: this.getName(),
9348
+ model: "mock-model",
9349
+ tokens: {
9350
+ promptTokens: 10,
9351
+ completionTokens: 5,
9352
+ totalTokens: 15
9353
+ }
9349
9354
  }
9350
9355
  };
9351
9356
  }
@@ -9363,9 +9368,13 @@ var AxMockAIService = class {
9363
9368
  return this.config.embedResponse ?? {
9364
9369
  embeddings: [[0.1, 0.2, 0.3]],
9365
9370
  modelUsage: {
9366
- promptTokens: 5,
9367
- completionTokens: 0,
9368
- totalTokens: 5
9371
+ ai: this.getName(),
9372
+ model: "mock-model",
9373
+ tokens: {
9374
+ promptTokens: 5,
9375
+ completionTokens: 0,
9376
+ totalTokens: 5
9377
+ }
9369
9378
  }
9370
9379
  };
9371
9380
  }
@@ -11329,11 +11338,6 @@ var AxMultiServiceRouter = class {
11329
11338
  }
11330
11339
  });
11331
11340
  }
11332
- getDefaultModels() {
11333
- throw new Error(
11334
- "getDefaultModels is not supported for multi-service router."
11335
- );
11336
- }
11337
11341
  /**
11338
11342
  * If a model key is provided, delegate to the corresponding service's features.
11339
11343
  * Otherwise, returns a default feature set.
@@ -11496,6 +11500,7 @@ var AxRAG = class extends AxChainOfThought {
11496
11500
  AxStringUtil,
11497
11501
  AxTestPrompt,
11498
11502
  axAIAnthropicDefaultConfig,
11503
+ axAIAnthropicVertexDefaultConfig,
11499
11504
  axAIAzureOpenAIBestConfig,
11500
11505
  axAIAzureOpenAICreativeConfig,
11501
11506
  axAIAzureOpenAIDefaultConfig,