@providerprotocol/ai 0.0.16 → 0.0.17
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 +111 -8
- package/dist/anthropic/index.d.ts +1 -1
- package/dist/google/index.d.ts +29 -2
- package/dist/google/index.js +102 -1
- package/dist/google/index.js.map +1 -1
- package/dist/http/index.d.ts +2 -2
- package/dist/index.d.ts +205 -4
- package/dist/index.js +150 -1
- package/dist/index.js.map +1 -1
- package/dist/ollama/index.d.ts +26 -2
- package/dist/ollama/index.js +96 -1
- package/dist/ollama/index.js.map +1 -1
- package/dist/openai/index.d.ts +28 -3
- package/dist/openai/index.js +106 -1
- package/dist/openai/index.js.map +1 -1
- package/dist/openrouter/index.d.ts +29 -3
- package/dist/openrouter/index.js +113 -1
- package/dist/openrouter/index.js.map +1 -1
- package/dist/{provider-vTZ74u-w.d.ts → provider-D5MO3-pS.d.ts} +66 -1
- package/dist/{retry-CMdT0kD8.d.ts → retry-DZ4Sqmxp.d.ts} +1 -1
- package/dist/xai/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as Provider, f as ModelReference, b as LLMHandler, c as EmbeddingHandler } from '../provider-D5MO3-pS.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview OpenRouter Embeddings API Handler
|
|
5
|
+
*
|
|
6
|
+
* This module implements the embedding handler for OpenRouter's embeddings API.
|
|
7
|
+
* OpenRouter provides access to multiple embedding providers through an OpenAI-compatible endpoint.
|
|
8
|
+
*
|
|
9
|
+
* @see {@link https://openrouter.ai/docs/api/reference/embeddings OpenRouter Embeddings API Reference}
|
|
10
|
+
* @module providers/openrouter/embed
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* OpenRouter embedding parameters.
|
|
15
|
+
* Passed through unchanged to the API.
|
|
16
|
+
*/
|
|
17
|
+
interface OpenRouterEmbedParams {
|
|
18
|
+
/** Output dimensions (model-dependent) */
|
|
19
|
+
dimensions?: number;
|
|
20
|
+
/** Encoding format: 'float' or 'base64' */
|
|
21
|
+
encoding_format?: 'float' | 'base64';
|
|
22
|
+
/** A unique identifier representing your end-user */
|
|
23
|
+
user?: string;
|
|
24
|
+
/** Input type hint for some models */
|
|
25
|
+
input_type?: string;
|
|
26
|
+
}
|
|
2
27
|
|
|
3
28
|
/**
|
|
4
29
|
* OpenRouter-specific types for the Unified Provider Protocol.
|
|
@@ -289,10 +314,11 @@ interface OpenRouterProvider extends Provider<OpenRouterProviderOptions> {
|
|
|
289
314
|
readonly version: string;
|
|
290
315
|
/**
|
|
291
316
|
* Supported modalities for this provider.
|
|
292
|
-
* OpenRouter
|
|
317
|
+
* OpenRouter supports LLM (text generation) and Embedding.
|
|
293
318
|
*/
|
|
294
319
|
readonly modalities: {
|
|
295
320
|
llm: LLMHandler<OpenRouterLLMParamsUnion>;
|
|
321
|
+
embedding: EmbeddingHandler<OpenRouterEmbedParams>;
|
|
296
322
|
};
|
|
297
323
|
}
|
|
298
324
|
/**
|
|
@@ -346,4 +372,4 @@ interface OpenRouterProvider extends Provider<OpenRouterProviderOptions> {
|
|
|
346
372
|
*/
|
|
347
373
|
declare const openrouter: OpenRouterProvider;
|
|
348
374
|
|
|
349
|
-
export { type OpenRouterAPIMode, type OpenRouterCompletionsParams, type OpenRouterConfig, type OpenRouterModelOptions, type OpenRouterModelReference, type OpenRouterProviderPreferences, type OpenRouterResponsesParams, openrouter };
|
|
375
|
+
export { type OpenRouterAPIMode, type OpenRouterCompletionsParams, type OpenRouterConfig, type OpenRouterEmbedParams, type OpenRouterModelOptions, type OpenRouterModelReference, type OpenRouterProviderPreferences, type OpenRouterResponsesParams, openrouter };
|
package/dist/openrouter/index.js
CHANGED
|
@@ -1336,11 +1336,121 @@ function createResponsesLLMHandler() {
|
|
|
1336
1336
|
};
|
|
1337
1337
|
}
|
|
1338
1338
|
|
|
1339
|
+
// src/providers/openrouter/embed.ts
|
|
1340
|
+
var OPENROUTER_EMBEDDINGS_API_URL = "https://openrouter.ai/api/v1/embeddings";
|
|
1341
|
+
function getDefaultDimensions(modelId) {
|
|
1342
|
+
if (modelId.includes("text-embedding-3-large")) {
|
|
1343
|
+
return 3072;
|
|
1344
|
+
}
|
|
1345
|
+
if (modelId.includes("text-embedding-3-small") || modelId.includes("ada-002")) {
|
|
1346
|
+
return 1536;
|
|
1347
|
+
}
|
|
1348
|
+
if (modelId.includes("gemini-embedding")) {
|
|
1349
|
+
return 3072;
|
|
1350
|
+
}
|
|
1351
|
+
return 1536;
|
|
1352
|
+
}
|
|
1353
|
+
function createEmbeddingHandler() {
|
|
1354
|
+
let providerRef = null;
|
|
1355
|
+
return {
|
|
1356
|
+
supportedInputs: ["text"],
|
|
1357
|
+
_setProvider(provider) {
|
|
1358
|
+
providerRef = provider;
|
|
1359
|
+
},
|
|
1360
|
+
bind(modelId) {
|
|
1361
|
+
if (!providerRef) {
|
|
1362
|
+
throw new UPPError(
|
|
1363
|
+
"Provider reference not set. Handler must be used with createProvider().",
|
|
1364
|
+
"INVALID_REQUEST",
|
|
1365
|
+
"openrouter",
|
|
1366
|
+
"embedding"
|
|
1367
|
+
);
|
|
1368
|
+
}
|
|
1369
|
+
const model = {
|
|
1370
|
+
modelId,
|
|
1371
|
+
maxBatchSize: 2048,
|
|
1372
|
+
maxInputLength: 8191,
|
|
1373
|
+
dimensions: getDefaultDimensions(modelId),
|
|
1374
|
+
get provider() {
|
|
1375
|
+
return providerRef;
|
|
1376
|
+
},
|
|
1377
|
+
async embed(request) {
|
|
1378
|
+
const apiKey = await resolveApiKey(
|
|
1379
|
+
request.config,
|
|
1380
|
+
"OPENROUTER_API_KEY",
|
|
1381
|
+
"openrouter",
|
|
1382
|
+
"embedding"
|
|
1383
|
+
);
|
|
1384
|
+
const baseUrl = request.config.baseUrl ?? OPENROUTER_EMBEDDINGS_API_URL;
|
|
1385
|
+
const inputTexts = request.inputs.map((input) => {
|
|
1386
|
+
if (typeof input === "string") {
|
|
1387
|
+
return input;
|
|
1388
|
+
}
|
|
1389
|
+
if ("text" in input) {
|
|
1390
|
+
return input.text;
|
|
1391
|
+
}
|
|
1392
|
+
throw new UPPError(
|
|
1393
|
+
"OpenRouter embeddings only support text input",
|
|
1394
|
+
"INVALID_REQUEST",
|
|
1395
|
+
"openrouter",
|
|
1396
|
+
"embedding"
|
|
1397
|
+
);
|
|
1398
|
+
});
|
|
1399
|
+
const body = {
|
|
1400
|
+
model: modelId,
|
|
1401
|
+
input: inputTexts
|
|
1402
|
+
};
|
|
1403
|
+
if (request.params?.dimensions !== void 0) {
|
|
1404
|
+
body.dimensions = request.params.dimensions;
|
|
1405
|
+
}
|
|
1406
|
+
if (request.params?.encoding_format !== void 0) {
|
|
1407
|
+
body.encoding_format = request.params.encoding_format;
|
|
1408
|
+
}
|
|
1409
|
+
if (request.params?.user !== void 0) {
|
|
1410
|
+
body.user = request.params.user;
|
|
1411
|
+
}
|
|
1412
|
+
if (request.params?.input_type !== void 0) {
|
|
1413
|
+
body.input_type = request.params.input_type;
|
|
1414
|
+
}
|
|
1415
|
+
const headers = {
|
|
1416
|
+
"Content-Type": "application/json",
|
|
1417
|
+
Authorization: `Bearer ${apiKey}`
|
|
1418
|
+
};
|
|
1419
|
+
if (request.config.headers) {
|
|
1420
|
+
for (const [key, value] of Object.entries(request.config.headers)) {
|
|
1421
|
+
if (value !== void 0) {
|
|
1422
|
+
headers[key] = value;
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
const response = await doFetch(baseUrl, {
|
|
1427
|
+
method: "POST",
|
|
1428
|
+
headers,
|
|
1429
|
+
body: JSON.stringify(body),
|
|
1430
|
+
signal: request.signal
|
|
1431
|
+
}, request.config, "openrouter", "embedding");
|
|
1432
|
+
const data = await response.json();
|
|
1433
|
+
return {
|
|
1434
|
+
embeddings: data.data.map((d) => ({
|
|
1435
|
+
vector: d.embedding,
|
|
1436
|
+
index: d.index
|
|
1437
|
+
})),
|
|
1438
|
+
usage: { totalTokens: data.usage.total_tokens },
|
|
1439
|
+
metadata: data.usage.cost !== void 0 ? { cost: data.usage.cost } : void 0
|
|
1440
|
+
};
|
|
1441
|
+
}
|
|
1442
|
+
};
|
|
1443
|
+
return model;
|
|
1444
|
+
}
|
|
1445
|
+
};
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1339
1448
|
// src/providers/openrouter/index.ts
|
|
1340
1449
|
function createOpenRouterProvider() {
|
|
1341
1450
|
let currentApiMode = "completions";
|
|
1342
1451
|
const completionsHandler = createCompletionsLLMHandler();
|
|
1343
1452
|
const responsesHandler = createResponsesLLMHandler();
|
|
1453
|
+
const embeddingHandler = createEmbeddingHandler();
|
|
1344
1454
|
const fn = function(modelId, options) {
|
|
1345
1455
|
const apiMode = options?.api ?? "completions";
|
|
1346
1456
|
currentApiMode = apiMode;
|
|
@@ -1349,7 +1459,8 @@ function createOpenRouterProvider() {
|
|
|
1349
1459
|
const modalities = {
|
|
1350
1460
|
get llm() {
|
|
1351
1461
|
return currentApiMode === "responses" ? responsesHandler : completionsHandler;
|
|
1352
|
-
}
|
|
1462
|
+
},
|
|
1463
|
+
embedding: embeddingHandler
|
|
1353
1464
|
};
|
|
1354
1465
|
Object.defineProperties(fn, {
|
|
1355
1466
|
name: {
|
|
@@ -1371,6 +1482,7 @@ function createOpenRouterProvider() {
|
|
|
1371
1482
|
const provider = fn;
|
|
1372
1483
|
completionsHandler._setProvider?.(provider);
|
|
1373
1484
|
responsesHandler._setProvider?.(provider);
|
|
1485
|
+
embeddingHandler._setProvider?.(provider);
|
|
1374
1486
|
return provider;
|
|
1375
1487
|
}
|
|
1376
1488
|
var openrouter = createOpenRouterProvider();
|