@aalis/plugin-embedding-openai 0.11.0 → 0.12.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -27
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
2
2
|
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
3
3
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
4
|
+
lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
|
|
4
5
|
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
5
6
|
}>;
|
|
6
7
|
export default _default;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA8FA,wBA2BG"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { embedding } from '@aalis/api-embedding';
|
|
2
|
-
import { config, definePlugin, logger, provide } from '@aalis/core';
|
|
2
|
+
import { config, definePlugin, lifecycle, logger, provide } from '@aalis/core';
|
|
3
|
+
import { configError, defineConfig, parseConfig } from '@aalis/schema-config';
|
|
3
4
|
// ===== 配置 =====
|
|
4
|
-
const configSchema = {
|
|
5
|
-
apiKey: {
|
|
5
|
+
const configSchema = defineConfig({
|
|
6
|
+
apiKey: {
|
|
7
|
+
type: 'string',
|
|
8
|
+
label: 'API Key',
|
|
9
|
+
required: true,
|
|
10
|
+
secret: true,
|
|
11
|
+
onInvalid: 'error',
|
|
12
|
+
description: 'OpenAI API 密钥',
|
|
13
|
+
},
|
|
6
14
|
baseUrl: {
|
|
7
15
|
type: 'string',
|
|
8
16
|
label: 'API 地址',
|
|
9
17
|
default: 'https://api.openai.com/v1',
|
|
18
|
+
onInvalid: 'error',
|
|
10
19
|
description: 'API 端点完整前缀(含版本段);插件只在其后拼 /embeddings 与 /models',
|
|
11
20
|
},
|
|
12
21
|
model: {
|
|
@@ -22,9 +31,10 @@ const configSchema = {
|
|
|
22
31
|
default: 30000,
|
|
23
32
|
description: '单次 embedding 请求超时时间。不设上限时启动探测会把插件激活链整条钉住。',
|
|
24
33
|
},
|
|
25
|
-
};
|
|
34
|
+
});
|
|
26
35
|
// ===== 服务实现 =====
|
|
27
36
|
class OpenAIEmbeddingService {
|
|
37
|
+
modelId;
|
|
28
38
|
baseUrl;
|
|
29
39
|
model;
|
|
30
40
|
apiKey;
|
|
@@ -32,6 +42,7 @@ class OpenAIEmbeddingService {
|
|
|
32
42
|
constructor(baseUrl, model, apiKey, timeoutMs = 30000) {
|
|
33
43
|
this.baseUrl = baseUrl.replace(/\/+$/, '');
|
|
34
44
|
this.model = model;
|
|
45
|
+
this.modelId = `openai:${model}`;
|
|
35
46
|
this.apiKey = apiKey;
|
|
36
47
|
this.timeoutMs = Math.max(1000, timeoutMs);
|
|
37
48
|
}
|
|
@@ -45,9 +56,9 @@ class OpenAIEmbeddingService {
|
|
|
45
56
|
Authorization: `Bearer ${this.apiKey}`,
|
|
46
57
|
},
|
|
47
58
|
body: JSON.stringify({ model: this.model, input: text }),
|
|
48
|
-
// 没有 signal 的话这次请求永不自行了结:apply 的启动探测 await
|
|
49
|
-
//
|
|
50
|
-
//
|
|
59
|
+
// 没有 signal 的话这次请求永不自行了结:apply 的启动探测 await 它,卡住的 apply 要等到慢激活阈值
|
|
60
|
+
// 才转入后台、其间排在它后面的插件都在等,此后也一直停在激活中;索引路径上则是 memory-vector 的
|
|
61
|
+
// 一个并发槽被无限期占用。
|
|
51
62
|
signal: options?.signal ? AbortSignal.any([timeoutSignal, options.signal]) : timeoutSignal,
|
|
52
63
|
});
|
|
53
64
|
if (!res.ok) {
|
|
@@ -80,32 +91,24 @@ export default definePlugin({
|
|
|
80
91
|
configSchema,
|
|
81
92
|
reusable: true,
|
|
82
93
|
provides: [embedding],
|
|
83
|
-
uses: { config, logger, provide },
|
|
84
|
-
async apply({ config, logger, provide }) {
|
|
85
|
-
const
|
|
86
|
-
if (!
|
|
87
|
-
throw
|
|
88
|
-
}
|
|
89
|
-
let baseUrl = config.baseUrl ?? 'https://api.openai.com/v1';
|
|
90
|
-
// 一次性迁移(baseUrl 改「完整前缀」语义):config-sync 会把旧默认值物化进配置文件,
|
|
91
|
-
// 精确命中旧默认时就地升级;自定义端点见 CHANGELOG 迁移说明。
|
|
92
|
-
if (baseUrl === 'https://api.openai.com') {
|
|
93
|
-
logger.warn('baseUrl 语义已改为完整前缀(插件不再自动拼 /v1):旧默认值已自动升级为 https://api.openai.com/v1');
|
|
94
|
-
baseUrl = 'https://api.openai.com/v1';
|
|
94
|
+
uses: { config, logger, lifecycle, provide },
|
|
95
|
+
async apply({ config, logger, lifecycle, provide }) {
|
|
96
|
+
const cfg = parseConfig(configSchema, config, logger);
|
|
97
|
+
if (!URL.canParse(cfg.baseUrl) || new URL(cfg.baseUrl).username || new URL(cfg.baseUrl).password) {
|
|
98
|
+
throw configError('baseUrl 需为不带用户名或密码的完整 URL');
|
|
95
99
|
}
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
const service = new OpenAIEmbeddingService(baseUrl, model, apiKey, timeoutMs);
|
|
99
|
-
// 启动时检查连通性(失败不阻塞,只警告)
|
|
100
|
+
const service = new OpenAIEmbeddingService(cfg.baseUrl, cfg.model, cfg.apiKey, cfg.timeoutMs);
|
|
101
|
+
// 启动时检查连通性(失败不阻塞,只警告);停用或停机时中止
|
|
100
102
|
try {
|
|
101
|
-
await service.embed('ping');
|
|
102
|
-
logger.info(`OpenAI Embedding 已就绪: ${model} @ ${baseUrl}`);
|
|
103
|
+
await service.embed('ping', { signal: lifecycle.signal });
|
|
104
|
+
logger.info(`OpenAI Embedding 已就绪: ${cfg.model} @ ${cfg.baseUrl}`);
|
|
103
105
|
}
|
|
104
106
|
catch (err) {
|
|
107
|
+
lifecycle.signal.throwIfAborted();
|
|
105
108
|
const msg = err instanceof Error ? err.message : String(err);
|
|
106
|
-
logger.warn(`OpenAI Embedding 连通性检查失败 (${baseUrl}, model=${model}): ${msg},服务仍将注册`);
|
|
109
|
+
logger.warn(`OpenAI Embedding 连通性检查失败 (${cfg.baseUrl}, model=${cfg.model}): ${msg},服务仍将注册`);
|
|
107
110
|
}
|
|
108
|
-
provide(embedding, service, { label: `OpenAI / ${model}` });
|
|
111
|
+
provide(embedding, service, { label: `OpenAI / ${cfg.model}` });
|
|
109
112
|
},
|
|
110
113
|
});
|
|
111
114
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-embedding-openai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^22.0.0",
|
|
28
28
|
"typescript": "^5.7.0",
|
|
29
|
-
"@aalis/core": "0.
|
|
30
|
-
"@aalis/api-webui": "0.
|
|
29
|
+
"@aalis/core": "0.19.1",
|
|
30
|
+
"@aalis/api-webui": "0.11.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@aalis/core": ">=0.
|
|
33
|
+
"@aalis/core": ">=0.18.0 <1.0.0"
|
|
34
34
|
},
|
|
35
35
|
"aalis": {
|
|
36
36
|
"service": {
|
|
@@ -39,14 +39,15 @@
|
|
|
39
39
|
],
|
|
40
40
|
"required": [
|
|
41
41
|
"config",
|
|
42
|
+
"lifecycle",
|
|
42
43
|
"logger",
|
|
43
44
|
"provide"
|
|
44
45
|
]
|
|
45
46
|
}
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@aalis/api-embedding": ">=0.
|
|
49
|
-
"@aalis/schema-config": ">=0.
|
|
49
|
+
"@aalis/api-embedding": ">=0.7.0 <1.0.0",
|
|
50
|
+
"@aalis/schema-config": ">=0.14.0 <1.0.0"
|
|
50
51
|
},
|
|
51
52
|
"scripts": {
|
|
52
53
|
"build": "tsc",
|