@llumiverse/common 0.23.0-dev.20251201 → 0.24.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/lib/cjs/capability/azure_foundry.js +160 -0
- package/lib/cjs/capability/azure_foundry.js.map +1 -0
- package/lib/cjs/capability/bedrock.js +158 -0
- package/lib/cjs/capability/bedrock.js.map +1 -0
- package/lib/cjs/capability/openai.js +95 -0
- package/lib/cjs/capability/openai.js.map +1 -0
- package/lib/cjs/capability/vertexai.js +80 -0
- package/lib/cjs/capability/vertexai.js.map +1 -0
- package/lib/cjs/capability.js +82 -0
- package/lib/cjs/capability.js.map +1 -0
- package/lib/cjs/index.js +25 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/options/azure_foundry.js +428 -0
- package/lib/cjs/options/azure_foundry.js.map +1 -0
- package/lib/cjs/options/bedrock.js +462 -0
- package/lib/cjs/options/bedrock.js.map +1 -0
- package/lib/cjs/options/fallback.js +35 -0
- package/lib/cjs/options/fallback.js.map +1 -0
- package/lib/cjs/options/groq.js +37 -0
- package/lib/cjs/options/groq.js.map +1 -0
- package/lib/cjs/options/openai.js +126 -0
- package/lib/cjs/options/openai.js.map +1 -0
- package/lib/cjs/options/vertexai.js +503 -0
- package/lib/cjs/options/vertexai.js.map +1 -0
- package/lib/cjs/options.js +30 -0
- package/lib/cjs/options.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/types.js +195 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/esm/capability/azure_foundry.js +157 -0
- package/lib/esm/capability/azure_foundry.js.map +1 -0
- package/lib/esm/capability/bedrock.js +155 -0
- package/lib/esm/capability/bedrock.js.map +1 -0
- package/lib/esm/capability/openai.js +92 -0
- package/lib/esm/capability/openai.js.map +1 -0
- package/lib/esm/capability/vertexai.js +77 -0
- package/lib/esm/capability/vertexai.js.map +1 -0
- package/lib/esm/capability.js +77 -0
- package/lib/esm/capability.js.map +1 -0
- package/lib/esm/index.js +9 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/options/azure_foundry.js +424 -0
- package/lib/esm/options/azure_foundry.js.map +1 -0
- package/lib/esm/options/bedrock.js +458 -0
- package/lib/esm/options/bedrock.js.map +1 -0
- package/lib/esm/options/fallback.js +32 -0
- package/lib/esm/options/fallback.js.map +1 -0
- package/lib/esm/options/groq.js +34 -0
- package/lib/esm/options/groq.js.map +1 -0
- package/lib/esm/options/openai.js +123 -0
- package/lib/esm/options/openai.js.map +1 -0
- package/lib/esm/options/vertexai.js +498 -0
- package/lib/esm/options/vertexai.js.map +1 -0
- package/lib/esm/options.js +27 -0
- package/lib/esm/options.js.map +1 -0
- package/lib/esm/types.js +192 -0
- package/lib/esm/types.js.map +1 -0
- package/lib/types/capability/azure_foundry.d.ts +7 -0
- package/lib/types/capability/azure_foundry.d.ts.map +1 -0
- package/lib/types/capability/bedrock.d.ts +7 -0
- package/lib/types/capability/bedrock.d.ts.map +1 -0
- package/lib/types/capability/openai.d.ts +13 -0
- package/lib/types/capability/openai.d.ts.map +1 -0
- package/lib/types/capability/vertexai.d.ts +11 -0
- package/lib/types/capability/vertexai.d.ts.map +1 -0
- package/lib/types/capability.d.ts +5 -0
- package/lib/types/capability.d.ts.map +1 -0
- package/lib/types/index.d.ts +9 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/options/azure_foundry.d.ts +52 -0
- package/lib/types/options/azure_foundry.d.ts.map +1 -0
- package/lib/types/options/bedrock.d.ts +52 -0
- package/lib/types/options/bedrock.d.ts.map +1 -0
- package/lib/types/options/fallback.d.ts +13 -0
- package/lib/types/options/fallback.d.ts.map +1 -0
- package/lib/types/options/groq.d.ts +12 -0
- package/lib/types/options/groq.d.ts.map +1 -0
- package/lib/types/options/openai.d.ts +21 -0
- package/lib/types/options/openai.d.ts.map +1 -0
- package/lib/types/options/vertexai.d.ts +74 -0
- package/lib/types/options/vertexai.d.ts.map +1 -0
- package/lib/types/options.d.ts +3 -0
- package/lib/types/options.d.ts.map +1 -0
- package/lib/types/types.d.ts +442 -0
- package/lib/types/types.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/capability/azure_foundry.ts +1 -0
- package/src/capability/bedrock.ts +98 -128
- package/src/capability/openai.ts +43 -68
- package/src/capability/vertexai.ts +15 -36
- package/src/capability.ts +19 -2
- package/src/types.ts +52 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOptions = getOptions;
|
|
4
|
+
const bedrock_js_1 = require("./options/bedrock.js");
|
|
5
|
+
const groq_js_1 = require("./options/groq.js");
|
|
6
|
+
const openai_js_1 = require("./options/openai.js");
|
|
7
|
+
const vertexai_js_1 = require("./options/vertexai.js");
|
|
8
|
+
const fallback_js_1 = require("./options/fallback.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
10
|
+
const azure_foundry_js_1 = require("./options/azure_foundry.js");
|
|
11
|
+
function getOptions(model, provider, options) {
|
|
12
|
+
if (!provider) {
|
|
13
|
+
return fallback_js_1.textOptionsFallback;
|
|
14
|
+
}
|
|
15
|
+
switch (provider.toLowerCase()) {
|
|
16
|
+
case types_js_1.Providers.bedrock:
|
|
17
|
+
return (0, bedrock_js_1.getBedrockOptions)(model, options);
|
|
18
|
+
case types_js_1.Providers.vertexai:
|
|
19
|
+
return (0, vertexai_js_1.getVertexAiOptions)(model, options);
|
|
20
|
+
case types_js_1.Providers.openai:
|
|
21
|
+
return (0, openai_js_1.getOpenAiOptions)(model, options);
|
|
22
|
+
case types_js_1.Providers.groq:
|
|
23
|
+
return (0, groq_js_1.getGroqOptions)(model, options);
|
|
24
|
+
case types_js_1.Providers.azure_foundry:
|
|
25
|
+
return (0, azure_foundry_js_1.getAzureFoundryOptions)(model, options);
|
|
26
|
+
default:
|
|
27
|
+
return fallback_js_1.textOptionsFallback;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":";;AAQA,gCAkBC;AA1BD,qDAAyD;AACzD,+CAAmD;AACnD,mDAAuD;AACvD,uDAA2D;AAC3D,uDAA4D;AAC5D,yCAAuE;AACvE,iEAAoE;AAEpE,SAAgB,UAAU,CAAC,KAAa,EAAE,QAA6B,EAAE,OAAsB;IAC3F,IAAG,CAAC,QAAQ,EAAE,CAAC;QACX,OAAO,iCAAmB,CAAC;IAC/B,CAAC;IACD,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,oBAAS,CAAC,OAAO;YAClB,OAAO,IAAA,8BAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,KAAK,oBAAS,CAAC,QAAQ;YACnB,OAAO,IAAA,gCAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,oBAAS,CAAC,MAAM;YACjB,OAAO,IAAA,4BAAgB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,oBAAS,CAAC,IAAI;YACf,OAAO,IAAA,wBAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,oBAAS,CAAC,aAAa;YACxB,OAAO,IAAA,yCAAsB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD;YACI,OAAO,iCAAmB,CAAC;IACnC,CAAC;AACL,CAAC"}
|
package/lib/cjs/types.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TrainingJobStatus = exports.ModelType = exports.AIModelStatus = exports.Modalities = exports.PromptRole = exports.OptionType = exports.SharedOptions = exports.ProviderList = exports.Providers = void 0;
|
|
4
|
+
// ============== Provider details ===============
|
|
5
|
+
var Providers;
|
|
6
|
+
(function (Providers) {
|
|
7
|
+
Providers["openai"] = "openai";
|
|
8
|
+
Providers["openai_compatible"] = "openai_compatible";
|
|
9
|
+
Providers["azure_openai"] = "azure_openai";
|
|
10
|
+
Providers["azure_foundry"] = "azure_foundry";
|
|
11
|
+
Providers["huggingface_ie"] = "huggingface_ie";
|
|
12
|
+
Providers["replicate"] = "replicate";
|
|
13
|
+
Providers["bedrock"] = "bedrock";
|
|
14
|
+
Providers["vertexai"] = "vertexai";
|
|
15
|
+
Providers["togetherai"] = "togetherai";
|
|
16
|
+
Providers["mistralai"] = "mistralai";
|
|
17
|
+
Providers["groq"] = "groq";
|
|
18
|
+
Providers["watsonx"] = "watsonx";
|
|
19
|
+
Providers["xai"] = "xai";
|
|
20
|
+
})(Providers || (exports.Providers = Providers = {}));
|
|
21
|
+
exports.ProviderList = {
|
|
22
|
+
openai: {
|
|
23
|
+
id: Providers.openai,
|
|
24
|
+
name: "OpenAI",
|
|
25
|
+
requiresApiKey: true,
|
|
26
|
+
requiresEndpointUrl: false,
|
|
27
|
+
supportSearch: false,
|
|
28
|
+
},
|
|
29
|
+
azure_openai: {
|
|
30
|
+
id: Providers.azure_openai,
|
|
31
|
+
name: "Azure OpenAI",
|
|
32
|
+
requiresApiKey: false,
|
|
33
|
+
requiresEndpointUrl: true,
|
|
34
|
+
supportSearch: false,
|
|
35
|
+
},
|
|
36
|
+
azure_foundry: {
|
|
37
|
+
id: Providers.azure_foundry,
|
|
38
|
+
name: "Azure Foundry",
|
|
39
|
+
requiresApiKey: true,
|
|
40
|
+
requiresEndpointUrl: true,
|
|
41
|
+
supportSearch: false,
|
|
42
|
+
},
|
|
43
|
+
huggingface_ie: {
|
|
44
|
+
id: Providers.huggingface_ie,
|
|
45
|
+
name: "HuggingFace Inference Endpoint",
|
|
46
|
+
requiresApiKey: true,
|
|
47
|
+
requiresEndpointUrl: true,
|
|
48
|
+
},
|
|
49
|
+
replicate: {
|
|
50
|
+
id: Providers.replicate,
|
|
51
|
+
name: "Replicate",
|
|
52
|
+
requiresApiKey: true,
|
|
53
|
+
requiresEndpointUrl: false,
|
|
54
|
+
supportSearch: true,
|
|
55
|
+
},
|
|
56
|
+
bedrock: {
|
|
57
|
+
id: Providers.bedrock,
|
|
58
|
+
name: "AWS Bedrock",
|
|
59
|
+
requiresApiKey: false,
|
|
60
|
+
requiresEndpointUrl: false,
|
|
61
|
+
endpointPlaceholder: "region name (eg. us-east-1)",
|
|
62
|
+
supportSearch: false,
|
|
63
|
+
},
|
|
64
|
+
vertexai: {
|
|
65
|
+
id: Providers.vertexai,
|
|
66
|
+
name: "Google Vertex AI",
|
|
67
|
+
requiresApiKey: false,
|
|
68
|
+
requiresEndpointUrl: false,
|
|
69
|
+
supportSearch: false,
|
|
70
|
+
},
|
|
71
|
+
togetherai: {
|
|
72
|
+
id: Providers.togetherai,
|
|
73
|
+
name: "Together AI",
|
|
74
|
+
requiresApiKey: false,
|
|
75
|
+
requiresEndpointUrl: false,
|
|
76
|
+
supportSearch: false,
|
|
77
|
+
},
|
|
78
|
+
mistralai: {
|
|
79
|
+
id: Providers.mistralai,
|
|
80
|
+
name: "Mistral AI",
|
|
81
|
+
requiresApiKey: false,
|
|
82
|
+
requiresEndpointUrl: false,
|
|
83
|
+
supportSearch: false,
|
|
84
|
+
},
|
|
85
|
+
groq: {
|
|
86
|
+
id: Providers.groq,
|
|
87
|
+
name: "Groq Cloud",
|
|
88
|
+
requiresApiKey: false,
|
|
89
|
+
requiresEndpointUrl: false,
|
|
90
|
+
supportSearch: false,
|
|
91
|
+
},
|
|
92
|
+
watsonx: {
|
|
93
|
+
id: Providers.watsonx,
|
|
94
|
+
name: "IBM WatsonX",
|
|
95
|
+
requiresApiKey: true,
|
|
96
|
+
requiresEndpointUrl: true,
|
|
97
|
+
supportSearch: false
|
|
98
|
+
},
|
|
99
|
+
xai: {
|
|
100
|
+
id: Providers.xai,
|
|
101
|
+
name: "xAI (Grok)",
|
|
102
|
+
requiresApiKey: true,
|
|
103
|
+
requiresEndpointUrl: false,
|
|
104
|
+
supportSearch: false
|
|
105
|
+
},
|
|
106
|
+
openai_compatible: {
|
|
107
|
+
id: Providers.openai_compatible,
|
|
108
|
+
name: "OpenAI Compatible",
|
|
109
|
+
requiresApiKey: true,
|
|
110
|
+
requiresEndpointUrl: true,
|
|
111
|
+
endpointPlaceholder: "https://api.example.com/v1",
|
|
112
|
+
supportSearch: false
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
//Common names to share between different models
|
|
116
|
+
var SharedOptions;
|
|
117
|
+
(function (SharedOptions) {
|
|
118
|
+
//Text
|
|
119
|
+
SharedOptions["max_tokens"] = "max_tokens";
|
|
120
|
+
SharedOptions["temperature"] = "temperature";
|
|
121
|
+
SharedOptions["top_p"] = "top_p";
|
|
122
|
+
SharedOptions["top_k"] = "top_k";
|
|
123
|
+
SharedOptions["presence_penalty"] = "presence_penalty";
|
|
124
|
+
SharedOptions["frequency_penalty"] = "frequency_penalty";
|
|
125
|
+
SharedOptions["stop_sequence"] = "stop_sequence";
|
|
126
|
+
//Image
|
|
127
|
+
SharedOptions["seed"] = "seed";
|
|
128
|
+
SharedOptions["number_of_images"] = "number_of_images";
|
|
129
|
+
})(SharedOptions || (exports.SharedOptions = SharedOptions = {}));
|
|
130
|
+
var OptionType;
|
|
131
|
+
(function (OptionType) {
|
|
132
|
+
OptionType["numeric"] = "numeric";
|
|
133
|
+
OptionType["enum"] = "enum";
|
|
134
|
+
OptionType["boolean"] = "boolean";
|
|
135
|
+
OptionType["string_list"] = "string_list";
|
|
136
|
+
})(OptionType || (exports.OptionType = OptionType = {}));
|
|
137
|
+
// ============== Prompts ===============
|
|
138
|
+
var PromptRole;
|
|
139
|
+
(function (PromptRole) {
|
|
140
|
+
PromptRole["safety"] = "safety";
|
|
141
|
+
PromptRole["system"] = "system";
|
|
142
|
+
PromptRole["user"] = "user";
|
|
143
|
+
PromptRole["assistant"] = "assistant";
|
|
144
|
+
PromptRole["negative"] = "negative";
|
|
145
|
+
PromptRole["mask"] = "mask";
|
|
146
|
+
/**
|
|
147
|
+
* Used to send the response of a tool
|
|
148
|
+
*/
|
|
149
|
+
PromptRole["tool"] = "tool";
|
|
150
|
+
})(PromptRole || (exports.PromptRole = PromptRole = {}));
|
|
151
|
+
/**
|
|
152
|
+
* @deprecated This is deprecated. Use CompletionResult.type information instead.
|
|
153
|
+
*/
|
|
154
|
+
var Modalities;
|
|
155
|
+
(function (Modalities) {
|
|
156
|
+
Modalities["text"] = "text";
|
|
157
|
+
Modalities["image"] = "image";
|
|
158
|
+
})(Modalities || (exports.Modalities = Modalities = {}));
|
|
159
|
+
var AIModelStatus;
|
|
160
|
+
(function (AIModelStatus) {
|
|
161
|
+
AIModelStatus["Available"] = "available";
|
|
162
|
+
AIModelStatus["Pending"] = "pending";
|
|
163
|
+
AIModelStatus["Stopped"] = "stopped";
|
|
164
|
+
AIModelStatus["Unavailable"] = "unavailable";
|
|
165
|
+
AIModelStatus["Unknown"] = "unknown";
|
|
166
|
+
AIModelStatus["Legacy"] = "legacy";
|
|
167
|
+
})(AIModelStatus || (exports.AIModelStatus = AIModelStatus = {}));
|
|
168
|
+
var ModelType;
|
|
169
|
+
(function (ModelType) {
|
|
170
|
+
ModelType["Classifier"] = "classifier";
|
|
171
|
+
ModelType["Regressor"] = "regressor";
|
|
172
|
+
ModelType["Clustering"] = "clustering";
|
|
173
|
+
ModelType["AnomalyDetection"] = "anomaly-detection";
|
|
174
|
+
ModelType["TimeSeries"] = "time-series";
|
|
175
|
+
ModelType["Text"] = "text";
|
|
176
|
+
ModelType["Image"] = "image";
|
|
177
|
+
ModelType["Audio"] = "audio";
|
|
178
|
+
ModelType["Video"] = "video";
|
|
179
|
+
ModelType["Embedding"] = "embedding";
|
|
180
|
+
ModelType["Chat"] = "chat";
|
|
181
|
+
ModelType["Code"] = "code";
|
|
182
|
+
ModelType["NLP"] = "nlp";
|
|
183
|
+
ModelType["MultiModal"] = "multi-modal";
|
|
184
|
+
ModelType["Test"] = "test";
|
|
185
|
+
ModelType["Other"] = "other";
|
|
186
|
+
ModelType["Unknown"] = "unknown";
|
|
187
|
+
})(ModelType || (exports.ModelType = ModelType = {}));
|
|
188
|
+
var TrainingJobStatus;
|
|
189
|
+
(function (TrainingJobStatus) {
|
|
190
|
+
TrainingJobStatus["running"] = "running";
|
|
191
|
+
TrainingJobStatus["succeeded"] = "succeeded";
|
|
192
|
+
TrainingJobStatus["failed"] = "failed";
|
|
193
|
+
TrainingJobStatus["cancelled"] = "cancelled";
|
|
194
|
+
})(TrainingJobStatus || (exports.TrainingJobStatus = TrainingJobStatus = {}));
|
|
195
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAMA,kDAAkD;AAElD,IAAY,SAcX;AAdD,WAAY,SAAS;IACjB,8BAAiB,CAAA;IACjB,oDAAuC,CAAA;IACvC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,8CAAiC,CAAA;IACjC,oCAAuB,CAAA;IACvB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,0BAAa,CAAA;IACb,gCAAmB,CAAA;IACnB,wBAAW,CAAA;AACf,CAAC,EAdW,SAAS,yBAAT,SAAS,QAcpB;AAWY,QAAA,YAAY,GAAsC;IAC3D,MAAM,EACN;QACI,EAAE,EAAE,SAAS,CAAC,MAAM;QACpB,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,YAAY,EACZ;QACI,EAAE,EAAE,SAAS,CAAC,YAAY;QAC1B,IAAI,EAAE,cAAc;QACpB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,KAAK;KACvB;IACD,aAAa,EACb;QACI,EAAE,EAAE,SAAS,CAAC,aAAa;QAC3B,IAAI,EAAE,eAAe;QACrB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,KAAK;KACvB;IACD,cAAc,EACd;QACI,EAAE,EAAE,SAAS,CAAC,cAAc;QAC5B,IAAI,EAAE,gCAAgC;QACtC,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;KAC5B;IACD,SAAS,EACT;QACI,EAAE,EAAE,SAAS,CAAC,SAAS;QACvB,IAAI,EAAE,WAAW;QACjB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,IAAI;KACtB;IACD,OAAO,EACP;QACI,EAAE,EAAE,SAAS,CAAC,OAAO;QACrB,IAAI,EAAE,aAAa;QACnB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,6BAA6B;QAClD,aAAa,EAAE,KAAK;KACvB;IACD,QAAQ,EAAE;QACN,EAAE,EAAE,SAAS,CAAC,QAAQ;QACtB,IAAI,EAAE,kBAAkB;QACxB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,UAAU,EAAE;QACR,EAAE,EAAE,SAAS,CAAC,UAAU;QACxB,IAAI,EAAE,aAAa;QACnB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,SAAS,EAAE;QACP,EAAE,EAAE,SAAS,CAAC,SAAS;QACvB,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,IAAI,EAAE;QACF,EAAE,EAAE,SAAS,CAAC,IAAI;QAClB,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,OAAO,EAAE;QACL,EAAE,EAAE,SAAS,CAAC,OAAO;QACrB,IAAI,EAAE,aAAa;QACnB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,KAAK;KACvB;IACD,GAAG,EAAE;QACD,EAAE,EAAE,SAAS,CAAC,GAAG;QACjB,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,KAAK;KACvB;IACD,iBAAiB,EAAE;QACf,EAAE,EAAE,SAAS,CAAC,iBAAiB;QAC/B,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,4BAA4B;QACjD,aAAa,EAAE,KAAK;KACvB;CACJ,CAAA;AA0QD,gDAAgD;AAChD,IAAY,aAaX;AAbD,WAAY,aAAa;IACrB,MAAM;IACN,0CAAyB,CAAA;IACzB,4CAA2B,CAAA;IAC3B,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sDAAqC,CAAA;IACrC,wDAAuC,CAAA;IACvC,gDAA+B,CAAA;IAE/B,OAAO;IACP,8BAAa,CAAA;IACb,sDAAqC,CAAA;AACzC,CAAC,EAbW,aAAa,6BAAb,aAAa,QAaxB;AAED,IAAY,UAKX;AALD,WAAY,UAAU;IAClB,iCAAmB,CAAA;IACnB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,yCAA2B,CAAA;AAC/B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAqDD,yCAAyC;AACzC,IAAY,UAWX;AAXD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,qCAAuB,CAAA;IACvB,mCAAqB,CAAA;IACrB,2BAAa,CAAA;IACb;;OAEG;IACH,2BAAa,CAAA;AACjB,CAAC,EAXW,UAAU,0BAAV,UAAU,QAWrB;AAuBD;;GAEG;AACH,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,6BAAe,CAAA;AACnB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAyCD,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,4CAA2B,CAAA;IAC3B,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;AACrB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB;AAiBD,IAAY,SAkBX;AAlBD,WAAY,SAAS;IACjB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,sCAAyB,CAAA;IACzB,mDAAsC,CAAA;IACtC,uCAA0B,CAAA;IAC1B,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,oCAAuB,CAAA;IACvB,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,wBAAW,CAAA;IACX,uCAA0B,CAAA;IAC1B,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACvB,CAAC,EAlBW,SAAS,yBAAT,SAAS,QAkBpB;AA2BD,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,wCAAmB,CAAA;IACnB,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;IACjB,4CAAuB,CAAA;AAC3B,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Global feature flags - temporarily disable tool support for non-OpenAI models
|
|
2
|
+
const ENABLE_TOOL_SUPPORT_NON_OPENAI = false;
|
|
3
|
+
// Record of Azure Foundry model capabilities keyed by model ID (lowercased)
|
|
4
|
+
// Only include models with specific exceptions that differ from their family patterns
|
|
5
|
+
const RECORD_MODEL_CAPABILITIES = {
|
|
6
|
+
// OpenAI O-series exceptions - o1-mini doesn't have tool support like other o1 models
|
|
7
|
+
"o1-mini": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
8
|
+
// OpenAI o3 is text-only unlike other o-series models
|
|
9
|
+
"o3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
10
|
+
// Models with special properties not covered by family patterns
|
|
11
|
+
"deepseek-r1-0528": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
12
|
+
"deepseek-v3-0324": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
13
|
+
"mistral-medium-2505": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
14
|
+
"mistral-nemo": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
15
|
+
"llama-4-scout-17b-16e-instruct": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
16
|
+
};
|
|
17
|
+
// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)
|
|
18
|
+
const RECORD_FAMILY_CAPABILITIES = {
|
|
19
|
+
// OpenAI GPT families
|
|
20
|
+
"gpt-3.5-turbo": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
21
|
+
"gpt-35-turbo": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
22
|
+
"gpt-35": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
23
|
+
"gpt-4": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
24
|
+
"gpt-4.1": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
25
|
+
"gpt-4.5": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
26
|
+
"gpt-4o": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
27
|
+
"gpt": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
28
|
+
// OpenAI O-series families
|
|
29
|
+
"o1": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
30
|
+
"o1-preview": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
31
|
+
"o1-pro": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
32
|
+
"o3-mini": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
33
|
+
"o4-mini": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
34
|
+
"o4": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
35
|
+
"o": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
36
|
+
// Llama families
|
|
37
|
+
"llama-3.1": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
38
|
+
"llama-3.2": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
39
|
+
"llama-3.3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
40
|
+
"llama-3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
41
|
+
"llama-4": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
42
|
+
"llama": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
43
|
+
// Mistral families
|
|
44
|
+
"mistral-large": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
45
|
+
"mistral-small": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
46
|
+
"mistral": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
47
|
+
// Microsoft Phi families
|
|
48
|
+
"phi-4": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
49
|
+
"phi": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
50
|
+
// DeepSeek families
|
|
51
|
+
"deepseek-r1": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
52
|
+
"deepseek-v3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
53
|
+
"deepseek": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
54
|
+
// AI21 families
|
|
55
|
+
"ai21-jamba": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
56
|
+
"ai21": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
57
|
+
"jamba": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
58
|
+
// Cohere families
|
|
59
|
+
"cohere-command": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
60
|
+
"cohere": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
61
|
+
"command": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
62
|
+
// xAI families
|
|
63
|
+
"grok-3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
64
|
+
"grok": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true }
|
|
65
|
+
};
|
|
66
|
+
// Fallback pattern lists for inferring modalities and tool support
|
|
67
|
+
const IMAGE_INPUT_MODELS = ["image", "vision"];
|
|
68
|
+
const VIDEO_INPUT_MODELS = ["video"];
|
|
69
|
+
const AUDIO_INPUT_MODELS = ["audio"];
|
|
70
|
+
const TEXT_INPUT_MODELS = ["text"];
|
|
71
|
+
const IMAGE_OUTPUT_MODELS = ["image"];
|
|
72
|
+
const VIDEO_OUTPUT_MODELS = ["video"];
|
|
73
|
+
const AUDIO_OUTPUT_MODELS = ["audio"];
|
|
74
|
+
const TEXT_OUTPUT_MODELS = ["text"];
|
|
75
|
+
const EMBEDDING_OUTPUT_MODELS = ["embed"];
|
|
76
|
+
const TOOL_SUPPORT_MODELS = ["tool", "gpt-4", "gpt-4o", "o1", "o3", "o4", "llama-3", "mistral-large", "mistral-small", "jamba", "cohere", "command", "grok"];
|
|
77
|
+
function modelMatches(modelName, patterns) {
|
|
78
|
+
return patterns.some(pattern => modelName.includes(pattern));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get the full ModelCapabilities for an Azure Foundry model.
|
|
82
|
+
* Checks RECORD_MODEL_CAPABILITIES first, then falls back to family pattern matching.
|
|
83
|
+
*/
|
|
84
|
+
export function getModelCapabilitiesAzureFoundry(model) {
|
|
85
|
+
// Extract base model from composite ID (deployment::baseModel)
|
|
86
|
+
const { baseModel } = parseAzureFoundryModelId(model);
|
|
87
|
+
const normalized = baseModel.toLowerCase();
|
|
88
|
+
// 1. Exact match in record
|
|
89
|
+
const record = RECORD_MODEL_CAPABILITIES[normalized];
|
|
90
|
+
if (record) {
|
|
91
|
+
return applyGlobalToolSupportDisable(record, normalized);
|
|
92
|
+
}
|
|
93
|
+
// 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES
|
|
94
|
+
let bestFamilyKey = undefined;
|
|
95
|
+
let bestFamilyLength = 0;
|
|
96
|
+
for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {
|
|
97
|
+
if (normalized.startsWith(key) && key.length > bestFamilyLength) {
|
|
98
|
+
bestFamilyKey = key;
|
|
99
|
+
bestFamilyLength = key.length;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (bestFamilyKey) {
|
|
103
|
+
return applyGlobalToolSupportDisable(RECORD_FAMILY_CAPABILITIES[bestFamilyKey], normalized);
|
|
104
|
+
}
|
|
105
|
+
// 3. Fallback: infer from normalized name using patterns
|
|
106
|
+
const input = {
|
|
107
|
+
text: modelMatches(normalized, TEXT_INPUT_MODELS) || true, // Default to text input
|
|
108
|
+
image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,
|
|
109
|
+
video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,
|
|
110
|
+
audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,
|
|
111
|
+
embed: false
|
|
112
|
+
};
|
|
113
|
+
const output = {
|
|
114
|
+
text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || true, // Default to text output
|
|
115
|
+
image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,
|
|
116
|
+
video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,
|
|
117
|
+
audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,
|
|
118
|
+
embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined
|
|
119
|
+
};
|
|
120
|
+
const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;
|
|
121
|
+
const tool_support_streaming = tool_support || undefined;
|
|
122
|
+
const inferredCapabilities = { input, output, tool_support, tool_support_streaming };
|
|
123
|
+
return applyGlobalToolSupportDisable(inferredCapabilities, normalized);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Apply global tool support disable for non-OpenAI models.
|
|
127
|
+
* Preserves model-specific information for future use while temporarily disabling tool support.
|
|
128
|
+
*/
|
|
129
|
+
function applyGlobalToolSupportDisable(capabilities, modelName) {
|
|
130
|
+
// Check if this is an OpenAI model
|
|
131
|
+
const isOpenAIModel = modelName.startsWith('gpt-') || modelName.startsWith('o1') || modelName.startsWith('o3') || modelName.startsWith('o4');
|
|
132
|
+
if (!ENABLE_TOOL_SUPPORT_NON_OPENAI && !isOpenAIModel) {
|
|
133
|
+
// Disable tool support for non-OpenAI models while preserving other capabilities
|
|
134
|
+
return {
|
|
135
|
+
...capabilities,
|
|
136
|
+
tool_support: false,
|
|
137
|
+
tool_support_streaming: false
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return capabilities;
|
|
141
|
+
}
|
|
142
|
+
// Helper function to parse composite model IDs
|
|
143
|
+
function parseAzureFoundryModelId(compositeId) {
|
|
144
|
+
const parts = compositeId.split('::');
|
|
145
|
+
if (parts.length === 2) {
|
|
146
|
+
return {
|
|
147
|
+
deploymentName: parts[0],
|
|
148
|
+
baseModel: parts[1]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Backwards compatibility: if no delimiter found, treat as deployment name
|
|
152
|
+
return {
|
|
153
|
+
deploymentName: compositeId,
|
|
154
|
+
baseModel: compositeId
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=azure_foundry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure_foundry.js","sourceRoot":"","sources":["../../../src/capability/azure_foundry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// Explicit exception lists keyed by the model identifier (last segment after the prefix)
|
|
2
|
+
const RECORD_FOUNDATION_EXCEPTIONS = {};
|
|
3
|
+
const RECORD_PROFILE_EXCEPTIONS = {
|
|
4
|
+
"meta.llama3-1-70b-instruct-v1:0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
5
|
+
"meta.llama3-1-8b-instruct-v1:0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
6
|
+
};
|
|
7
|
+
// Record of Bedrock model capabilities keyed by model identifier.
|
|
8
|
+
// Only include models that differ from their family defaults
|
|
9
|
+
const RECORD_MODEL_CAPABILITIES = {
|
|
10
|
+
// Models with specific exceptions that differ from family
|
|
11
|
+
"ai21.jamba-instruct-v1:0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
12
|
+
"amazon.nova-canvas-v1:0": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { image: true, text: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
13
|
+
"amazon.nova-micro-v1:0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
14
|
+
"anthropic.claude-3-5-haiku-20241022-v1:0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
15
|
+
"meta.llama3-2-11b-instruct-v1:0": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
16
|
+
"meta.llama3-2-90b-instruct-v1:0": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
17
|
+
};
|
|
18
|
+
// Family capabilities (longest prefix match)
|
|
19
|
+
const RECORD_FAMILY_CAPABILITIES = {
|
|
20
|
+
"ai21.jamba": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
21
|
+
"amazon.nova": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
22
|
+
"amazon.titan": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
23
|
+
"anthropic.claude-3-5-haiku": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
24
|
+
"anthropic.claude": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
25
|
+
"cohere.command-r": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },
|
|
26
|
+
"cohere.command": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
27
|
+
"deepseek.r1": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
28
|
+
"meta.llama3-1": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
29
|
+
"meta.llama3-2": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
30
|
+
"meta.llama3-3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
31
|
+
"meta.llama3": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
32
|
+
"meta.llama4": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
33
|
+
"mistral.mistral-large": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
34
|
+
"mistral.mistral": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
35
|
+
"mistral.mixtral": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
36
|
+
"mistral.pixtral": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
37
|
+
"openai.gpt-oss": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
38
|
+
"qwen.": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },
|
|
39
|
+
"twelvelabs.": { input: { text: true, image: false, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
40
|
+
"writer.palmyra": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
|
|
41
|
+
};
|
|
42
|
+
function extractModelLookupKey(modelName) {
|
|
43
|
+
const lower = modelName.toLowerCase();
|
|
44
|
+
const lastSlashIdx = lower.lastIndexOf("/");
|
|
45
|
+
let key = lastSlashIdx === -1 ? lower : lower.slice(lastSlashIdx + 1);
|
|
46
|
+
if (lower.includes("inference-profile/")) {
|
|
47
|
+
key = key.replace(/^[^.]+\./, "");
|
|
48
|
+
}
|
|
49
|
+
return key;
|
|
50
|
+
}
|
|
51
|
+
function findFamilyCapability(lookupKey, families) {
|
|
52
|
+
let bestKey;
|
|
53
|
+
for (const key of Object.keys(families)) {
|
|
54
|
+
if (lookupKey.startsWith(key) && (!bestKey || key.length > bestKey.length)) {
|
|
55
|
+
bestKey = key;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return bestKey ? families[bestKey] : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract the model identifier from an ARN or inference profile
|
|
62
|
+
* @param modelName The full model ARN or name
|
|
63
|
+
* @returns The normalized model identifier
|
|
64
|
+
*/
|
|
65
|
+
function normalizeModelName(modelName) {
|
|
66
|
+
const modelLower = modelName.toLowerCase();
|
|
67
|
+
if (modelLower.includes("inference-profile")) {
|
|
68
|
+
const parts = modelLower.split("/");
|
|
69
|
+
if (parts.length > 1) {
|
|
70
|
+
const providerModel = parts[parts.length - 1];
|
|
71
|
+
const modelParts = providerModel.split(".");
|
|
72
|
+
if (modelParts.length > 1 && modelParts[1] === "deepseek") {
|
|
73
|
+
return `deepseek-${modelParts.slice(2).join(".")}`;
|
|
74
|
+
}
|
|
75
|
+
return modelParts.length > 2 ? modelParts.slice(2).join(".") : providerModel;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return modelLower;
|
|
79
|
+
}
|
|
80
|
+
// Fallback pattern lists for inferring modalities and tool support
|
|
81
|
+
const IMAGE_INPUT_MODELS = ["image"]; // fallback: if model id contains 'image', supports image input
|
|
82
|
+
const VIDEO_INPUT_MODELS = ["video"];
|
|
83
|
+
const AUDIO_INPUT_MODELS = ["audio"];
|
|
84
|
+
const TEXT_INPUT_MODELS = ["text"];
|
|
85
|
+
const IMAGE_OUTPUT_MODELS = ["image"];
|
|
86
|
+
const VIDEO_OUTPUT_MODELS = ["video"];
|
|
87
|
+
const AUDIO_OUTPUT_MODELS = ["audio"];
|
|
88
|
+
const TEXT_OUTPUT_MODELS = ["text"];
|
|
89
|
+
const EMBEDDING_OUTPUT_MODELS = ["embed"];
|
|
90
|
+
const TOOL_SUPPORT_MODELS = ["tool", "sonnet", "opus", "nova", "palmyra", "command-r", "mistral-large", "pixtral"];
|
|
91
|
+
function modelMatches(modelName, patterns) {
|
|
92
|
+
return patterns.some(pattern => modelName.includes(pattern));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the full ModelCapabilities for a Bedrock model.
|
|
96
|
+
* Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.
|
|
97
|
+
*/
|
|
98
|
+
export function getModelCapabilitiesBedrock(model) {
|
|
99
|
+
// Normalize ARN or inference-profile to model ID
|
|
100
|
+
const modelLower = model.toLowerCase();
|
|
101
|
+
let normalized = modelLower;
|
|
102
|
+
const arnPattern = /^arn:aws:bedrock:[^:]+:[^:]*:(inference-profile|foundation-model)\/.+/i;
|
|
103
|
+
if (arnPattern.test(modelLower)) {
|
|
104
|
+
// Extract after last occurrence of 'foundation-model/' or 'inference-profile/'
|
|
105
|
+
const foundationIdx = modelLower.lastIndexOf('foundation-model/');
|
|
106
|
+
const inferenceIdx = modelLower.lastIndexOf('inference-profile/');
|
|
107
|
+
if (foundationIdx !== -1) {
|
|
108
|
+
normalized = modelLower.substring(foundationIdx);
|
|
109
|
+
}
|
|
110
|
+
else if (inferenceIdx !== -1) {
|
|
111
|
+
normalized = modelLower.substring(inferenceIdx);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const isInferenceProfile = normalized.startsWith("inference-profile/");
|
|
115
|
+
const isFoundationModel = normalized.startsWith("foundation-model/");
|
|
116
|
+
const lookupKey = extractModelLookupKey(normalized);
|
|
117
|
+
// 1. Check exceptions
|
|
118
|
+
if (isFoundationModel) {
|
|
119
|
+
const exception = RECORD_FOUNDATION_EXCEPTIONS[lookupKey];
|
|
120
|
+
if (exception)
|
|
121
|
+
return exception;
|
|
122
|
+
}
|
|
123
|
+
else if (isInferenceProfile) {
|
|
124
|
+
const exception = RECORD_PROFILE_EXCEPTIONS[lookupKey];
|
|
125
|
+
if (exception)
|
|
126
|
+
return exception;
|
|
127
|
+
}
|
|
128
|
+
// 2. Check recorded capabilities by model
|
|
129
|
+
const modelCapability = RECORD_MODEL_CAPABILITIES[lookupKey];
|
|
130
|
+
if (modelCapability)
|
|
131
|
+
return modelCapability;
|
|
132
|
+
// 3. Check recorded capabilities by family
|
|
133
|
+
const familyCapability = findFamilyCapability(lookupKey, RECORD_FAMILY_CAPABILITIES);
|
|
134
|
+
if (familyCapability)
|
|
135
|
+
return familyCapability;
|
|
136
|
+
// 4. Fallback: infer from normalized name
|
|
137
|
+
const inferredName = normalizeModelName(lookupKey);
|
|
138
|
+
const input = {
|
|
139
|
+
text: modelMatches(inferredName, TEXT_INPUT_MODELS) || undefined,
|
|
140
|
+
image: modelMatches(inferredName, IMAGE_INPUT_MODELS) || undefined,
|
|
141
|
+
video: modelMatches(inferredName, VIDEO_INPUT_MODELS) || undefined,
|
|
142
|
+
audio: modelMatches(inferredName, AUDIO_INPUT_MODELS) || undefined,
|
|
143
|
+
embed: false
|
|
144
|
+
};
|
|
145
|
+
const output = {
|
|
146
|
+
text: modelMatches(inferredName, TEXT_OUTPUT_MODELS) || undefined,
|
|
147
|
+
image: modelMatches(inferredName, IMAGE_OUTPUT_MODELS) || undefined,
|
|
148
|
+
video: modelMatches(inferredName, VIDEO_OUTPUT_MODELS) || undefined,
|
|
149
|
+
audio: modelMatches(inferredName, AUDIO_OUTPUT_MODELS) || undefined,
|
|
150
|
+
embed: modelMatches(inferredName, EMBEDDING_OUTPUT_MODELS) || undefined
|
|
151
|
+
};
|
|
152
|
+
const tool_support = modelMatches(inferredName, TOOL_SUPPORT_MODELS) || undefined;
|
|
153
|
+
return { input, output, tool_support };
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=bedrock.js.map
|