@aalis/plugin-embedding-openai 0.13.0 → 0.14.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 CHANGED
@@ -3,6 +3,7 @@ declare const _default: import("@aalis/core").PluginDefinition<{
3
3
  logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
4
4
  lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
5
5
  provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
6
+ contributions: import("@aalis/core").OptionalUse<import("@aalis/api-contributions").ContributionRegistry, import("@aalis/api-contributions").Contributions>;
6
7
  }>;
7
8
  export default _default;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA6FA,wBA2BG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;AA4GA,wBAsCG"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
+ import { contributions } from '@aalis/api-contributions';
1
2
  import { embedding } from '@aalis/api-embedding';
2
- import { config, definePlugin, lifecycle, logger, provide } from '@aalis/core';
3
+ import { config, definePlugin, lifecycle, logger, optional, provide } from '@aalis/core';
3
4
  import { configError, defineConfig, parseConfig } from '@aalis/schema-config';
5
+ import { t } from './texts.js';
4
6
  // ===== 配置 =====
5
7
  const configSchema = defineConfig({
6
8
  apiKey: {
@@ -9,37 +11,43 @@ const configSchema = defineConfig({
9
11
  required: true,
10
12
  secret: true,
11
13
  onInvalid: 'error',
12
- description: 'OpenAI API 密钥',
14
+ description: t('apiKeyDescription'),
13
15
  },
14
16
  baseUrl: {
15
17
  type: 'string',
16
- label: 'API 地址',
18
+ label: t('baseUrlLabel'),
17
19
  default: 'https://api.openai.com/v1',
18
20
  onInvalid: 'error',
19
- description: 'API 端点完整前缀(含版本段);插件只在其后拼 /embeddings 与 /models',
21
+ description: t('baseUrlDescription'),
20
22
  },
21
23
  model: {
22
24
  type: 'select',
23
- label: 'Embedding 模型',
25
+ label: t('modelLabel'),
24
26
  default: 'text-embedding-3-small',
25
- dynamicOptions: 'embedding',
26
- description: '用于生成文本向量的模型',
27
+ dynamicOptions: 'embedding-openai',
28
+ description: t('modelDescription'),
27
29
  },
28
30
  timeoutMs: {
29
31
  type: 'number',
30
- label: '请求超时 (ms)',
32
+ label: t('timeoutMsLabel'),
31
33
  default: 30000,
32
- description: '单次 embedding 请求超时时间。不设上限时启动探测会把插件激活链整条钉住。',
34
+ description: t('timeoutMsDescription'),
33
35
  },
34
36
  });
35
37
  // ===== 服务实现 =====
36
38
  class OpenAIEmbeddingService {
39
+ activation;
37
40
  modelId;
38
41
  baseUrl;
39
42
  model;
40
43
  apiKey;
41
44
  timeoutMs;
42
- constructor(baseUrl, model, apiKey, timeoutMs = 30000) {
45
+ /**
46
+ * activation 是本插件这次激活的中止信号:embed 把它与调用方的合起来;取模型列表的调用方(可选项来源、webui-server 合并各
47
+ * 提供者的取值)都不带信号,只用它。停用、重启、停机时请求随之停下
48
+ */
49
+ constructor(baseUrl, model, apiKey, timeoutMs, activation) {
50
+ this.activation = activation;
43
51
  this.baseUrl = baseUrl.replace(/\/+$/, '');
44
52
  this.model = model;
45
53
  this.modelId = `openai:${model}`;
@@ -47,8 +55,9 @@ class OpenAIEmbeddingService {
47
55
  this.timeoutMs = Math.max(1000, timeoutMs);
48
56
  }
49
57
  async embed(text, options) {
50
- options?.signal?.throwIfAborted();
51
- const timeoutSignal = AbortSignal.timeout(this.timeoutMs);
58
+ // 调用方的中止信号与本插件这次激活的合起来:调用方没中止、本插件停用或重启时请求同样停下
59
+ const signal = options?.signal ? AbortSignal.any([options.signal, this.activation]) : this.activation;
60
+ signal.throwIfAborted();
52
61
  const res = await fetch(`${this.baseUrl}/embeddings`, {
53
62
  method: 'POST',
54
63
  headers: {
@@ -56,10 +65,10 @@ class OpenAIEmbeddingService {
56
65
  Authorization: `Bearer ${this.apiKey}`,
57
66
  },
58
67
  body: JSON.stringify({ model: this.model, input: text }),
59
- // 没有 signal 的话这次请求永不自行了结:apply 的启动探测 await 它,卡住的 apply 要等到慢激活阈值
68
+ // 没有超时的话这次请求永不自行了结:apply 的启动探测 await 它,卡住的 apply 要等到慢激活阈值
60
69
  // 才转入后台、其间排在它后面的插件都在等,此后也一直停在激活中;索引路径上则是 memory-vector 的
61
70
  // 一个并发槽被无限期占用。
62
- signal: options?.signal ? AbortSignal.any([timeoutSignal, options.signal]) : timeoutSignal,
71
+ signal: AbortSignal.any([AbortSignal.timeout(this.timeoutMs), signal]),
63
72
  });
64
73
  if (!res.ok) {
65
74
  throw new Error(`OpenAI embedding 请求失败: ${res.status} ${res.statusText}`);
@@ -67,11 +76,12 @@ class OpenAIEmbeddingService {
67
76
  const data = (await res.json());
68
77
  return data.data[0].embedding;
69
78
  }
79
+ /** 这个端点的全部模型:本插件的可选项来源 embedding-openai 用它。取不到(含停用时中止)为空列表 */
70
80
  async listModels() {
71
81
  try {
72
82
  const res = await fetch(`${this.baseUrl}/models`, {
73
83
  headers: { Authorization: `Bearer ${this.apiKey}` },
74
- signal: AbortSignal.timeout(this.timeoutMs),
84
+ signal: AbortSignal.any([AbortSignal.timeout(this.timeoutMs), this.activation]),
75
85
  });
76
86
  if (!res.ok)
77
87
  return [];
@@ -91,13 +101,18 @@ export default definePlugin({
91
101
  configSchema,
92
102
  reusable: true,
93
103
  provides: [embedding],
94
- uses: { config, logger, lifecycle, provide },
95
- async apply({ config, logger, lifecycle, provide }) {
104
+ /** contributions 交「Embedding 模型」下拉的可选项来源,缺席时下拉没有可选项 */
105
+ uses: { config, logger, lifecycle, provide, contributions: optional(contributions) },
106
+ async apply({ config, logger, lifecycle, provide, contributions }) {
96
107
  const cfg = parseConfig(configSchema, config.use, logger.use);
97
108
  if (!URL.canParse(cfg.baseUrl) || new URL(cfg.baseUrl).username || new URL(cfg.baseUrl).password) {
98
- throw configError('baseUrl 需为不带用户名或密码的完整 URL');
109
+ throw configError(t('baseUrlInvalid'));
99
110
  }
100
- const service = new OpenAIEmbeddingService(cfg.baseUrl, cfg.model, cfg.apiKey, cfg.timeoutMs);
111
+ // 插件在 baseUrl 后面拼路径,带查询串或片段(含末尾单个 ?)时拼出来的地址是坏的,所以按原文判
112
+ if (/[?#]/.test(cfg.baseUrl)) {
113
+ throw configError(t('baseUrlQuery'));
114
+ }
115
+ const service = new OpenAIEmbeddingService(cfg.baseUrl, cfg.model, cfg.apiKey, cfg.timeoutMs, lifecycle.use.signal);
101
116
  // 启动时检查连通性(失败不阻塞,只警告);停用或停机时中止
102
117
  try {
103
118
  await service.embed('ping', { signal: lifecycle.use.signal });
@@ -109,6 +124,12 @@ export default definePlugin({
109
124
  logger.use.warn(`OpenAI Embedding 连通性检查失败 (${cfg.baseUrl}, model=${cfg.model}): ${msg},服务仍将注册`);
110
125
  }
111
126
  provide.use(embedding, service, { label: `OpenAI / ${cfg.model}` });
127
+ // 「Embedding 模型」下拉只列这个插件连着的端点的模型(按服务名合并各提供者会混进别家的);来源名按插件定,开了几个实例时
128
+ // WebUI 取最前那家
129
+ contributions.use.contribute('webui:options', {
130
+ id: 'embedding-openai',
131
+ list: async () => (await service.listModels()).map(id => ({ value: id, label: id })),
132
+ });
112
133
  },
113
134
  });
114
135
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ declare const _default: {
2
+ readonly apiKeyDescription: "OpenAI API key";
3
+ readonly baseUrlLabel: "API URL";
4
+ readonly baseUrlDescription: "Full prefix of the API endpoint (including the version segment); the plugin only appends /embeddings and /models to it";
5
+ readonly modelLabel: "Embedding model";
6
+ readonly modelDescription: "The model used to turn text into vectors";
7
+ readonly timeoutMsLabel: "Request timeout (ms)";
8
+ readonly timeoutMsDescription: "Timeout of a single embedding request.";
9
+ readonly baseUrlInvalid: "baseUrl must be a full URL without a user name or password";
10
+ readonly baseUrlQuery: "baseUrl cannot contain a query string or fragment (anything after ? or #): the plugin appends paths to it";
11
+ };
12
+ export default _default;
13
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,wBAYG"}
@@ -0,0 +1,13 @@
1
+ import { defineLocale } from '@aalis/schema-i18n';
2
+ export default defineLocale()({
3
+ apiKeyDescription: 'OpenAI API key',
4
+ baseUrlLabel: 'API URL',
5
+ baseUrlDescription: 'Full prefix of the API endpoint (including the version segment); the plugin only appends /embeddings and /models to it',
6
+ modelLabel: 'Embedding model',
7
+ modelDescription: 'The model used to turn text into vectors',
8
+ timeoutMsLabel: 'Request timeout (ms)',
9
+ timeoutMsDescription: 'Timeout of a single embedding request.',
10
+ baseUrlInvalid: 'baseUrl must be a full URL without a user name or password',
11
+ baseUrlQuery: 'baseUrl cannot contain a query string or fragment (anything after ? or #): the plugin appends paths to it',
12
+ });
13
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,iBAAiB,EAAE,gBAAgB;IACnC,YAAY,EAAE,SAAS;IACvB,kBAAkB,EAChB,wHAAwH;IAC1H,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,0CAA0C;IAC5D,cAAc,EAAE,sBAAsB;IACtC,oBAAoB,EAAE,wCAAwC;IAC9D,cAAc,EAAE,4DAA4D;IAC5E,YAAY,EACV,2GAA2G;CAC9G,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ declare const SOURCE: {
2
+ readonly apiKeyDescription: "OpenAI API 密钥";
3
+ readonly baseUrlLabel: "API 地址";
4
+ readonly baseUrlDescription: "API 端点完整前缀(含版本段);插件只在其后拼 /embeddings 与 /models";
5
+ readonly modelLabel: "Embedding 模型";
6
+ readonly modelDescription: "用于生成文本向量的模型";
7
+ readonly timeoutMsLabel: "请求超时 (ms)";
8
+ readonly timeoutMsDescription: "单次 embedding 请求的超时时间。";
9
+ readonly baseUrlInvalid: "baseUrl 需为不带用户名或密码的完整 URL";
10
+ readonly baseUrlQuery: "baseUrl 不能带查询串或片段(? 或 # 之后的部分):插件在它后面拼接路径";
11
+ };
12
+ export type Source = typeof SOURCE;
13
+ export declare const t: import("@aalis/schema-i18n").TextFactory<{
14
+ readonly apiKeyDescription: "OpenAI API 密钥";
15
+ readonly baseUrlLabel: "API 地址";
16
+ readonly baseUrlDescription: "API 端点完整前缀(含版本段);插件只在其后拼 /embeddings 与 /models";
17
+ readonly modelLabel: "Embedding 模型";
18
+ readonly modelDescription: "用于生成文本向量的模型";
19
+ readonly timeoutMsLabel: "请求超时 (ms)";
20
+ readonly timeoutMsDescription: "单次 embedding 请求的超时时间。";
21
+ readonly baseUrlInvalid: "baseUrl 需为不带用户名或密码的完整 URL";
22
+ readonly baseUrlQuery: "baseUrl 不能带查询串或片段(? 或 # 之后的部分):插件在它后面拼接路径";
23
+ }>;
24
+ export {};
25
+ //# sourceMappingURL=texts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;CAUF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;EAKZ,CAAC"}
package/dist/texts.js ADDED
@@ -0,0 +1,21 @@
1
+ // 本插件自己的原文字典:配置项与配置报错
2
+ import { defineTexts } from '@aalis/schema-i18n';
3
+ import en from './locales/en.js';
4
+ const SOURCE = {
5
+ apiKeyDescription: 'OpenAI API 密钥',
6
+ baseUrlLabel: 'API 地址',
7
+ baseUrlDescription: 'API 端点完整前缀(含版本段);插件只在其后拼 /embeddings 与 /models',
8
+ modelLabel: 'Embedding 模型',
9
+ modelDescription: '用于生成文本向量的模型',
10
+ timeoutMsLabel: '请求超时 (ms)',
11
+ timeoutMsDescription: '单次 embedding 请求的超时时间。',
12
+ baseUrlInvalid: 'baseUrl 需为不带用户名或密码的完整 URL',
13
+ baseUrlQuery: 'baseUrl 不能带查询串或片段(? 或 # 之后的部分):插件在它后面拼接路径',
14
+ };
15
+ export const t = defineTexts({
16
+ ns: '@aalis/plugin-embedding-openai',
17
+ language: 'zh-CN',
18
+ source: SOURCE,
19
+ locales: { en },
20
+ });
21
+ //# sourceMappingURL=texts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,iBAAiB,EAAE,eAAe;IAClC,YAAY,EAAE,QAAQ;IACtB,kBAAkB,EAAE,gDAAgD;IACpE,UAAU,EAAE,cAAc;IAC1B,gBAAgB,EAAE,aAAa;IAC/B,cAAc,EAAE,WAAW;IAC3B,oBAAoB,EAAE,uBAAuB;IAC7C,cAAc,EAAE,2BAA2B;IAC3C,YAAY,EAAE,2CAA2C;CACjD,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;IAC3B,EAAE,EAAE,gCAAgC;IACpC,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,EAAE,EAAE,EAAE;CAChB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/plugin-embedding-openai",
3
- "version": "0.13.0",
3
+ "version": "0.14.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,10 +26,10 @@
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.0.0",
28
28
  "typescript": "^5.7.0",
29
- "@aalis/core": "0.20.0"
29
+ "@aalis/core": "0.21.1"
30
30
  },
31
31
  "peerDependencies": {
32
- "@aalis/core": ">=0.20.0 <1.0.0"
32
+ "@aalis/core": ">=0.21.0 <1.0.0"
33
33
  },
34
34
  "aalis": {
35
35
  "service": {
@@ -41,12 +41,18 @@
41
41
  "lifecycle",
42
42
  "logger",
43
43
  "provide"
44
+ ],
45
+ "optional": [
46
+ "contributions"
44
47
  ]
45
48
  }
46
49
  },
47
50
  "dependencies": {
48
- "@aalis/api-embedding": ">=0.8.0 <1.0.0",
49
- "@aalis/schema-config": ">=0.15.0 <1.0.0"
51
+ "@aalis/api-embedding": ">=0.9.0 <1.0.0",
52
+ "@aalis/schema-config": ">=0.16.0 <1.0.0",
53
+ "@aalis/api-contributions": ">=0.2.0 <1.0.0",
54
+ "@aalis/api-webui": ">=0.13.0 <1.0.0",
55
+ "@aalis/schema-i18n": ">=0.1.0 <1.0.0"
50
56
  },
51
57
  "scripts": {
52
58
  "build": "tsc",