@qjp88995/provider-client 0.2.0 → 0.4.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/dist/direct-resolver.d.ts.map +1 -1
- package/dist/direct-resolver.js +2 -0
- package/dist/direct-resolver.js.map +1 -1
- package/dist/image/http.d.ts +16 -0
- package/dist/image/http.d.ts.map +1 -0
- package/dist/image/http.js +62 -0
- package/dist/image/http.js.map +1 -0
- package/dist/image/index.d.ts +32 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +39 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/types.d.ts +94 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +44 -0
- package/dist/image/types.js.map +1 -0
- package/dist/image/volcengine.adapter.d.ts +8 -0
- package/dist/image/volcengine.adapter.d.ts.map +1 -0
- package/dist/image/volcengine.adapter.js +85 -0
- package/dist/image/volcengine.adapter.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/justone/client.d.ts +101 -0
- package/dist/justone/client.d.ts.map +1 -0
- package/dist/justone/client.js +272 -0
- package/dist/justone/client.js.map +1 -0
- package/dist/justone/endpoint-spec.d.ts +49 -0
- package/dist/justone/endpoint-spec.d.ts.map +1 -0
- package/dist/justone/endpoint-spec.js +2 -0
- package/dist/justone/endpoint-spec.js.map +1 -0
- package/dist/justone/endpoints.generated.d.ts +7927 -0
- package/dist/justone/endpoints.generated.d.ts.map +1 -0
- package/dist/justone/endpoints.generated.js +8508 -0
- package/dist/justone/endpoints.generated.js.map +1 -0
- package/dist/justone/errors.d.ts +52 -0
- package/dist/justone/errors.d.ts.map +1 -0
- package/dist/justone/errors.js +73 -0
- package/dist/justone/errors.js.map +1 -0
- package/dist/justone/index.d.ts +8 -0
- package/dist/justone/index.d.ts.map +1 -0
- package/dist/justone/index.js +7 -0
- package/dist/justone/index.js.map +1 -0
- package/dist/justone/params.d.ts +17 -0
- package/dist/justone/params.d.ts.map +1 -0
- package/dist/justone/params.js +72 -0
- package/dist/justone/params.js.map +1 -0
- package/dist/justone/pricing.d.ts +6 -0
- package/dist/justone/pricing.d.ts.map +1 -0
- package/dist/justone/pricing.generated.d.ts +303 -0
- package/dist/justone/pricing.generated.d.ts.map +1 -0
- package/dist/justone/pricing.generated.js +305 -0
- package/dist/justone/pricing.generated.js.map +1 -0
- package/dist/justone/pricing.js +11 -0
- package/dist/justone/pricing.js.map +1 -0
- package/dist/media/bibigpt.adapter.d.ts +43 -0
- package/dist/media/bibigpt.adapter.d.ts.map +1 -0
- package/dist/media/bibigpt.adapter.js +302 -0
- package/dist/media/bibigpt.adapter.js.map +1 -0
- package/dist/media/http.d.ts +21 -0
- package/dist/media/http.d.ts.map +1 -0
- package/dist/media/http.js +39 -0
- package/dist/media/http.js.map +1 -0
- package/dist/media/index.d.ts +44 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +47 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/types.d.ts +207 -0
- package/dist/media/types.d.ts.map +1 -0
- package/dist/media/types.js +21 -0
- package/dist/media/types.js.map +1 -0
- package/dist/media/zhipu-parser-package.d.ts +37 -0
- package/dist/media/zhipu-parser-package.d.ts.map +1 -0
- package/dist/media/zhipu-parser-package.js +108 -0
- package/dist/media/zhipu-parser-package.js.map +1 -0
- package/dist/media/zhipu.adapter.d.ts +37 -0
- package/dist/media/zhipu.adapter.d.ts.map +1 -0
- package/dist/media/zhipu.adapter.js +361 -0
- package/dist/media/zhipu.adapter.js.map +1 -0
- package/dist/provider-client.d.ts +62 -0
- package/dist/provider-client.d.ts.map +1 -1
- package/dist/provider-client.js +176 -0
- package/dist/provider-client.js.map +1 -1
- package/dist/types.d.ts +23 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -2
- package/dist/types.js.map +1 -1
- package/dist/web-search/deepseek.adapter.d.ts +19 -0
- package/dist/web-search/deepseek.adapter.d.ts.map +1 -0
- package/dist/web-search/deepseek.adapter.js +82 -0
- package/dist/web-search/deepseek.adapter.js.map +1 -0
- package/dist/web-search/http.d.ts +28 -0
- package/dist/web-search/http.d.ts.map +1 -0
- package/dist/web-search/http.js +95 -0
- package/dist/web-search/http.js.map +1 -0
- package/dist/web-search/index.d.ts +27 -0
- package/dist/web-search/index.d.ts.map +1 -0
- package/dist/web-search/index.js +36 -0
- package/dist/web-search/index.js.map +1 -0
- package/dist/web-search/minimax.adapter.d.ts +13 -0
- package/dist/web-search/minimax.adapter.d.ts.map +1 -0
- package/dist/web-search/minimax.adapter.js +82 -0
- package/dist/web-search/minimax.adapter.js.map +1 -0
- package/dist/web-search/moonshotai.adapter.d.ts +19 -0
- package/dist/web-search/moonshotai.adapter.d.ts.map +1 -0
- package/dist/web-search/moonshotai.adapter.js +151 -0
- package/dist/web-search/moonshotai.adapter.js.map +1 -0
- package/dist/web-search/types.d.ts +120 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +60 -0
- package/dist/web-search/types.js.map +1 -0
- package/dist/web-search/zhipu.adapter.d.ts +14 -0
- package/dist/web-search/zhipu.adapter.d.ts.map +1 -0
- package/dist/web-search/zhipu.adapter.js +98 -0
- package/dist/web-search/zhipu.adapter.js.map +1 -0
- package/package.json +4 -3
- package/src/direct-resolver.ts +2 -0
- package/src/image/http.ts +68 -0
- package/src/image/index.ts +87 -0
- package/src/image/types.ts +134 -0
- package/src/image/volcengine.adapter.ts +133 -0
- package/src/index.ts +126 -0
- package/src/justone/client.ts +462 -0
- package/src/justone/endpoint-spec.ts +66 -0
- package/src/justone/endpoints.generated.ts +9258 -0
- package/src/justone/errors.ts +97 -0
- package/src/justone/index.ts +34 -0
- package/src/justone/params.ts +91 -0
- package/src/justone/pricing.generated.ts +308 -0
- package/src/justone/pricing.ts +11 -0
- package/src/media/bibigpt.adapter.ts +372 -0
- package/src/media/http.ts +43 -0
- package/src/media/index.ts +114 -0
- package/src/media/types.ts +233 -0
- package/src/media/zhipu-parser-package.ts +149 -0
- package/src/media/zhipu.adapter.ts +510 -0
- package/src/provider-client.ts +303 -1
- package/src/types.ts +31 -2
- package/src/web-search/deepseek.adapter.ts +149 -0
- package/src/web-search/http.ts +108 -0
- package/src/web-search/index.ts +70 -0
- package/src/web-search/minimax.adapter.ts +148 -0
- package/src/web-search/moonshotai.adapter.ts +228 -0
- package/src/web-search/types.ts +172 -0
- package/src/web-search/zhipu.adapter.ts +184 -0
package/dist/provider-client.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { createCenterFetch } from './center-fetch.js';
|
|
2
2
|
import { errorFromResponse, ProviderClientError } from './errors.js';
|
|
3
|
+
import { createImageGenerator, IMAGE_ADAPTERS, isImageKind, } from './image/index.js';
|
|
4
|
+
import { createJustOne, } from './justone/index.js';
|
|
5
|
+
import { createMedia, isMediaKind, MEDIA_ADAPTERS, } from './media/index.js';
|
|
3
6
|
import { buildHandle, findModel, } from './model-handle.js';
|
|
4
7
|
import { PC_HEADERS } from './types.js';
|
|
8
|
+
import { createWebSearch, isWebSearchKind, } from './web-search/index.js';
|
|
5
9
|
/**
|
|
6
10
|
* 中心模式:模型目录从中心拉,所有厂商请求经中心透传(中心换上真 key、坏了自动换下一把)。
|
|
7
11
|
* 本进程从头到尾不碰厂商 key。
|
|
@@ -79,6 +83,163 @@ export class ProviderClient {
|
|
|
79
83
|
fetch: this.send,
|
|
80
84
|
});
|
|
81
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* 某家厂商的联网搜索 / 读网页(适配器在本包,请求经中心透传、中心注入 key)。地址取自目录里这家的
|
|
88
|
+
* `web-search` 端点——它可以与对话端点不同域(MiniMax)。
|
|
89
|
+
* - 目录里没有这家 → `unknown_vendor`;这个版本的 client 没有这家的搜索适配器 → `unsupported_vendor_kind`;
|
|
90
|
+
* 这家没有启用的 `web-search` 端点 → `protocol_unavailable`。
|
|
91
|
+
* - 调用时中心自己报的错(没有可用 key、不许用这家……)是 `ProviderClientError`,厂商的失败是
|
|
92
|
+
* `WebSearchUpstreamError`(带 `retryable`)。
|
|
93
|
+
* 目录只在创建时查一次。
|
|
94
|
+
*/
|
|
95
|
+
async webSearch(slug, options = {}) {
|
|
96
|
+
const vendor = (await this.catalog()).vendors.find(v => v.slug === slug);
|
|
97
|
+
if (!vendor) {
|
|
98
|
+
throw new ProviderClientError('unknown_vendor', `vendor "${slug}" is not in the catalog`, null);
|
|
99
|
+
}
|
|
100
|
+
if (!isWebSearchKind(vendor.kind)) {
|
|
101
|
+
throw new ProviderClientError('unsupported_vendor_kind', `vendor kind "${vendor.kind}" has no web search adapter`, null);
|
|
102
|
+
}
|
|
103
|
+
const endpoint = vendor.endpoints.find(e => e.protocol === 'web-search');
|
|
104
|
+
if (!endpoint) {
|
|
105
|
+
throw new ProviderClientError('protocol_unavailable', `vendor "${slug}" has no web-search endpoint`, null);
|
|
106
|
+
}
|
|
107
|
+
const fetch = createCenterFetch({
|
|
108
|
+
centerUrl: this.center,
|
|
109
|
+
apiKey: this.options.apiKey,
|
|
110
|
+
vendor: vendor.slug,
|
|
111
|
+
baseUrls: vendor.endpoints.map(e => e.baseUrl),
|
|
112
|
+
affinity: options.affinity,
|
|
113
|
+
pin: options.pin,
|
|
114
|
+
onCredential: options.onCredential,
|
|
115
|
+
fetch: this.send,
|
|
116
|
+
});
|
|
117
|
+
return createWebSearch({
|
|
118
|
+
kind: vendor.kind,
|
|
119
|
+
connection: { baseUrl: endpoint.baseUrl, fetch },
|
|
120
|
+
settings: options.settings,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 一个生图模型(适配器在本包,请求经中心透传、中心注入 key)。地址取自这家的对话端点(生图模型没有自己的协议,
|
|
125
|
+
* 用哪个端点由这家的生图适配器定)。**一次 `generate` 出一张**;要几张就并发几次。
|
|
126
|
+
* - 目录里没有这家 → `unknown_vendor`;这家没有这个生图模型(或停用了)→ `unknown_model`;
|
|
127
|
+
* 这个版本的 client 没有这家的生图适配器 → `unsupported_vendor_kind`;这家没有启用的对应端点 → `protocol_unavailable`。
|
|
128
|
+
* - 生成时中心自己报的错是 `ProviderClientError`,厂商的失败是 `ImageUpstreamError`(`retryable`、`contentFiltered`)。
|
|
129
|
+
* - 用量(张数、参考图数)在结果里,单价在目录里(`catalog()` 的 `imageModels[].pricing`),钱由 APP 自己算。
|
|
130
|
+
* 目录只在创建时查一次。
|
|
131
|
+
*/
|
|
132
|
+
async imageModel(ref, options = {}) {
|
|
133
|
+
const vendor = (await this.catalog()).vendors.find(v => v.slug === ref.vendor);
|
|
134
|
+
if (!vendor) {
|
|
135
|
+
throw new ProviderClientError('unknown_vendor', `vendor "${ref.vendor}" is not in the catalog`, null);
|
|
136
|
+
}
|
|
137
|
+
const model = vendor.imageModels.find(m => m.modelId === ref.modelId);
|
|
138
|
+
if (!model) {
|
|
139
|
+
throw new ProviderClientError('unknown_model', `image model "${ref.modelId}" is not in the catalog of vendor "${ref.vendor}"`, null);
|
|
140
|
+
}
|
|
141
|
+
if (!isImageKind(vendor.kind)) {
|
|
142
|
+
throw new ProviderClientError('unsupported_vendor_kind', `vendor kind "${vendor.kind}" has no image generation adapter`, null);
|
|
143
|
+
}
|
|
144
|
+
const protocol = IMAGE_ADAPTERS[vendor.kind].endpointProtocol;
|
|
145
|
+
const endpoint = vendor.endpoints.find(e => e.protocol === protocol);
|
|
146
|
+
if (!endpoint) {
|
|
147
|
+
throw new ProviderClientError('protocol_unavailable', `vendor "${ref.vendor}" has no ${protocol} endpoint (image generation uses its base URL)`, null);
|
|
148
|
+
}
|
|
149
|
+
const fetch = createCenterFetch({
|
|
150
|
+
centerUrl: this.center,
|
|
151
|
+
apiKey: this.options.apiKey,
|
|
152
|
+
vendor: vendor.slug,
|
|
153
|
+
baseUrls: vendor.endpoints.map(e => e.baseUrl),
|
|
154
|
+
affinity: options.affinity,
|
|
155
|
+
pin: options.pin,
|
|
156
|
+
onCredential: options.onCredential,
|
|
157
|
+
fetch: this.send,
|
|
158
|
+
});
|
|
159
|
+
return createImageGenerator({
|
|
160
|
+
kind: vendor.kind,
|
|
161
|
+
modelId: model.modelId,
|
|
162
|
+
referenceImages: model.capabilities.includes('reference-image'),
|
|
163
|
+
connection: { baseUrl: endpoint.baseUrl, fetch },
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 某家厂商的媒体解析(适配器在本包,请求经中心透传、中心注入 key):智谱的文件解析 / 语音转写(地址取自这家的
|
|
168
|
+
* `media` 端点)、BibiGPT 的视频链接解析(它唯一的 `http` 端点)。
|
|
169
|
+
* - 目录里没有这家 → `unknown_vendor`;这个版本的 client 没有这家的媒体适配器 → `unsupported_vendor_kind`;
|
|
170
|
+
* 这家没有启用的对应端点 → `protocol_unavailable`。
|
|
171
|
+
* - **每次调用是一个任务**:第一条请求带 `affinity`(给了的话)选 key,之后的轮询 / 取结果钉在那把 key 上
|
|
172
|
+
* (`x-pc-pin`)——任务属于那个账号,换 key 就查不到;那把 key 中途不可用会报 `pinned_credential_unavailable`。
|
|
173
|
+
* 给了 `pin` 就从头钉住。
|
|
174
|
+
* - 中心自己报的错是 `ProviderClientError`,厂商的失败是 `MediaUpstreamError`。
|
|
175
|
+
* 目录只在创建时查一次。
|
|
176
|
+
*/
|
|
177
|
+
async media(slug, options = {}) {
|
|
178
|
+
const vendor = (await this.catalog()).vendors.find(v => v.slug === slug);
|
|
179
|
+
if (!vendor) {
|
|
180
|
+
throw new ProviderClientError('unknown_vendor', `vendor "${slug}" is not in the catalog`, null);
|
|
181
|
+
}
|
|
182
|
+
if (!isMediaKind(vendor.kind)) {
|
|
183
|
+
throw new ProviderClientError('unsupported_vendor_kind', `vendor kind "${vendor.kind}" has no media adapter`, null);
|
|
184
|
+
}
|
|
185
|
+
const protocol = MEDIA_ADAPTERS[vendor.kind].endpointProtocol;
|
|
186
|
+
const endpoint = vendor.endpoints.find(e => e.protocol === protocol);
|
|
187
|
+
if (!endpoint) {
|
|
188
|
+
throw new ProviderClientError('protocol_unavailable', `vendor "${slug}" has no ${protocol} endpoint`, null);
|
|
189
|
+
}
|
|
190
|
+
const base = {
|
|
191
|
+
centerUrl: this.center,
|
|
192
|
+
apiKey: this.options.apiKey,
|
|
193
|
+
vendor: vendor.slug,
|
|
194
|
+
baseUrls: vendor.endpoints.map(e => e.baseUrl),
|
|
195
|
+
affinity: options.affinity,
|
|
196
|
+
fetch: this.send,
|
|
197
|
+
};
|
|
198
|
+
return createMedia({
|
|
199
|
+
kind: vendor.kind,
|
|
200
|
+
connection: {
|
|
201
|
+
baseUrl: endpoint.baseUrl,
|
|
202
|
+
openTask: () => createTaskFetch(base, options.pin, options.onCredential),
|
|
203
|
+
...(options.download ? { download: options.download } : {}),
|
|
204
|
+
},
|
|
205
|
+
settings: options.settings,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* JustOne 数据接口(客户端在本包,请求经中心透传;token 由中心注入 query 或表单字段,本进程不碰)。地址取自这家的
|
|
210
|
+
* `http` 端点。调用审计、花费由 APP 经 `onAttempt` 记。
|
|
211
|
+
* - 目录里没有这家 → `unknown_vendor`;这家不是 `justone` → `unsupported_vendor_kind`;没有启用的 `http` 端点 →
|
|
212
|
+
* `protocol_unavailable`。
|
|
213
|
+
* - 调用时中心自己报的错是 `ProviderClientError`,JustOne 的失败是 `JustOneUpstreamError`,参数不对是 `JustOneParamsError`。
|
|
214
|
+
* 接口是无状态的,`affinity` / `pin` 只影响选哪把 key。目录只在创建时查一次。
|
|
215
|
+
*/
|
|
216
|
+
async justOne(slug, options = {}) {
|
|
217
|
+
const vendor = (await this.catalog()).vendors.find(v => v.slug === slug);
|
|
218
|
+
if (!vendor) {
|
|
219
|
+
throw new ProviderClientError('unknown_vendor', `vendor "${slug}" is not in the catalog`, null);
|
|
220
|
+
}
|
|
221
|
+
if (vendor.kind !== 'justone') {
|
|
222
|
+
throw new ProviderClientError('unsupported_vendor_kind', `vendor kind "${vendor.kind}" is not justone`, null);
|
|
223
|
+
}
|
|
224
|
+
const endpoint = vendor.endpoints.find(e => e.protocol === 'http');
|
|
225
|
+
if (!endpoint) {
|
|
226
|
+
throw new ProviderClientError('protocol_unavailable', `vendor "${slug}" has no http endpoint`, null);
|
|
227
|
+
}
|
|
228
|
+
const fetch = createCenterFetch({
|
|
229
|
+
centerUrl: this.center,
|
|
230
|
+
apiKey: this.options.apiKey,
|
|
231
|
+
vendor: vendor.slug,
|
|
232
|
+
baseUrls: vendor.endpoints.map(e => e.baseUrl),
|
|
233
|
+
affinity: options.affinity,
|
|
234
|
+
pin: options.pin,
|
|
235
|
+
onCredential: options.onCredential,
|
|
236
|
+
fetch: this.send,
|
|
237
|
+
});
|
|
238
|
+
return createJustOne({
|
|
239
|
+
connection: { baseUrl: endpoint.baseUrl, fetch },
|
|
240
|
+
...(options.onAttempt ? { onAttempt: options.onAttempt } : {}),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
82
243
|
async capabilitiesOf(ref) {
|
|
83
244
|
const vendor = (await this.catalog()).vendors.find(v => v.slug === ref.vendor);
|
|
84
245
|
const model = vendor?.models.find(m => m.modelId === ref.modelId);
|
|
@@ -107,6 +268,9 @@ export class ProviderClient {
|
|
|
107
268
|
if (!res.ok)
|
|
108
269
|
throw await errorFromResponse(res);
|
|
109
270
|
const body = (await res.json());
|
|
271
|
+
// 中心 2026-11 之前没有 `imageModels`:补成空数组,后面不用到处判空。
|
|
272
|
+
for (const v of body.vendors)
|
|
273
|
+
v.imageModels ??= [];
|
|
110
274
|
this.cached = {
|
|
111
275
|
etag: res.headers.get('etag'),
|
|
112
276
|
body,
|
|
@@ -115,4 +279,16 @@ export class ProviderClient {
|
|
|
115
279
|
return body;
|
|
116
280
|
}
|
|
117
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* 一个任务用的中心模式 fetch:还不知道落在哪把 key 时按粘性选(或按调用方给的 pin),第一次看到 `x-pc-credential`
|
|
284
|
+
* 之后的请求都钉在那把上。
|
|
285
|
+
*/
|
|
286
|
+
function createTaskFetch(base, pin, onCredential) {
|
|
287
|
+
let pinned = pin;
|
|
288
|
+
const report = (ref) => {
|
|
289
|
+
pinned ??= ref;
|
|
290
|
+
onCredential?.(ref);
|
|
291
|
+
};
|
|
292
|
+
return (input, init) => createCenterFetch({ ...base, pin: pinned, onCredential: report })(input, init);
|
|
293
|
+
}
|
|
118
294
|
//# sourceMappingURL=provider-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-client.js","sourceRoot":"","sources":["../src/provider-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-client.js","sourceRoot":"","sources":["../src/provider-client.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
/** 线协议(wire 上的请求 / 响应格式)。 */
|
|
6
6
|
export declare const LLM_PROTOCOLS: readonly ["openai-chat-completions", "openai-responses", "anthropic-messages", "google-generate-content", "google-interactions"];
|
|
7
7
|
export type LlmProtocol = (typeof LLM_PROTOCOLS)[number];
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* 端点协议:LLM 线协议;非 LLM 厂商(媒体、数据接口)唯一的 `http`;LLM 厂商的联网搜索 / 读网页 `web-search`
|
|
10
|
+
* (可以与对话端点不同域,如 MiniMax);LLM 厂商借同一把 key 的媒体解析 `media`(智谱)。模型只声明 LLM 协议。
|
|
11
|
+
*/
|
|
12
|
+
export declare const ENDPOINT_PROTOCOLS: readonly ["openai-chat-completions", "openai-responses", "anthropic-messages", "google-generate-content", "google-interactions", "http", "web-search", "media"];
|
|
10
13
|
export type EndpointProtocol = (typeof ENDPOINT_PROTOCOLS)[number];
|
|
11
14
|
/** 厂商类别:只有 `llm` 有模型与适配器;其余的只经中心透传(适配器在各 APP)。 */
|
|
12
15
|
export declare const VENDOR_CATEGORIES: readonly ["llm", "media", "data"];
|
|
@@ -14,6 +17,9 @@ export type VendorCategory = (typeof VENDOR_CATEGORIES)[number];
|
|
|
14
17
|
/** 模型能力(目录元数据:发不发图片 / 开不开推理由调用方据此决定)。 */
|
|
15
18
|
export declare const LLM_CAPABILITIES: readonly ["vision", "video", "reasoning"];
|
|
16
19
|
export type LlmCapability = (typeof LLM_CAPABILITIES)[number];
|
|
20
|
+
/** 生图模型的能力。`reference-image` = 能带参考图(图生图 / 改图)。 */
|
|
21
|
+
export declare const IMAGE_CAPABILITIES: readonly ["reference-image"];
|
|
22
|
+
export type ImageCapability = (typeof IMAGE_CAPABILITIES)[number];
|
|
17
23
|
/** 厂商类型。`llm` 类别的每一种对应一个适配器(`VENDOR_ADAPTERS`);bibigpt / justone 没有。 */
|
|
18
24
|
export declare const VENDOR_KINDS: readonly ["openai", "generic", "deepseek", "moonshotai", "alibaba", "zhipu", "volcengine", "minimax", "dots", "google", "bibigpt", "justone"];
|
|
19
25
|
export type VendorKind = (typeof VENDOR_KINDS)[number];
|
|
@@ -48,7 +54,10 @@ export interface CatalogVendor {
|
|
|
48
54
|
/** 非 `llm` 的厂商没有模型,接入方只拿它的端点经中心透传。 */
|
|
49
55
|
category: VendorCategory;
|
|
50
56
|
endpoints: CatalogEndpoint[];
|
|
57
|
+
/** 对话模型。 */
|
|
51
58
|
models: CatalogModel[];
|
|
59
|
+
/** 生图模型(中心 2026-11 起有;读目录时缺了按空数组补上)。 */
|
|
60
|
+
imageModels: CatalogImageModel[];
|
|
52
61
|
}
|
|
53
62
|
export interface CatalogEndpoint {
|
|
54
63
|
protocol: EndpointProtocol;
|
|
@@ -65,6 +74,18 @@ export interface CatalogModel {
|
|
|
65
74
|
maxOutputTokens: number | null;
|
|
66
75
|
pricing: ModelPricing | null;
|
|
67
76
|
}
|
|
77
|
+
/** 生图的单价(每张,十进制字符串)。 */
|
|
78
|
+
export interface ImagePricing {
|
|
79
|
+
currency: string;
|
|
80
|
+
perImage: string;
|
|
81
|
+
}
|
|
82
|
+
export interface CatalogImageModel {
|
|
83
|
+
/** 厂商侧的模型名(请求体里的 `model`)。 */
|
|
84
|
+
modelId: string;
|
|
85
|
+
displayName: string;
|
|
86
|
+
capabilities: ImageCapability[];
|
|
87
|
+
pricing: ImagePricing | null;
|
|
88
|
+
}
|
|
68
89
|
/** 中心的错误码(响应体 `{ code, message }`)。 */
|
|
69
90
|
export declare const CENTER_ERROR_CODES: readonly ["unauthorized", "forbidden", "tenant_disabled", "not_found", "invalid_request", "conflict", "unprocessable", "upstream_error", "admin_unavailable", "vendor_not_allowed", "no_credential", "pinned_credential_unavailable", "payload_too_large"];
|
|
70
91
|
export type CenterErrorCode = (typeof CENTER_ERROR_CODES)[number];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,eAAO,MAAM,aAAa,kIAMhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -10,12 +10,22 @@ export const LLM_PROTOCOLS = [
|
|
|
10
10
|
'google-generate-content',
|
|
11
11
|
'google-interactions',
|
|
12
12
|
];
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* 端点协议:LLM 线协议;非 LLM 厂商(媒体、数据接口)唯一的 `http`;LLM 厂商的联网搜索 / 读网页 `web-search`
|
|
15
|
+
* (可以与对话端点不同域,如 MiniMax);LLM 厂商借同一把 key 的媒体解析 `media`(智谱)。模型只声明 LLM 协议。
|
|
16
|
+
*/
|
|
17
|
+
export const ENDPOINT_PROTOCOLS = [
|
|
18
|
+
...LLM_PROTOCOLS,
|
|
19
|
+
'http',
|
|
20
|
+
'web-search',
|
|
21
|
+
'media',
|
|
22
|
+
];
|
|
15
23
|
/** 厂商类别:只有 `llm` 有模型与适配器;其余的只经中心透传(适配器在各 APP)。 */
|
|
16
24
|
export const VENDOR_CATEGORIES = ['llm', 'media', 'data'];
|
|
17
25
|
/** 模型能力(目录元数据:发不发图片 / 开不开推理由调用方据此决定)。 */
|
|
18
26
|
export const LLM_CAPABILITIES = ['vision', 'video', 'reasoning'];
|
|
27
|
+
/** 生图模型的能力。`reference-image` = 能带参考图(图生图 / 改图)。 */
|
|
28
|
+
export const IMAGE_CAPABILITIES = ['reference-image'];
|
|
19
29
|
/** 厂商类型。`llm` 类别的每一种对应一个适配器(`VENDOR_ADAPTERS`);bibigpt / justone 没有。 */
|
|
20
30
|
export const VENDOR_KINDS = [
|
|
21
31
|
'openai',
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,yBAAyB;IACzB,kBAAkB;IAClB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;CACb,CAAC;AAGX
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,yBAAyB;IACzB,kBAAkB;IAClB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;CACb,CAAC;AAGX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,GAAG,aAAa;IAChB,MAAM;IACN,YAAY;IACZ,OAAO;CACC,CAAC;AAGX,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGnE,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AAG1E,mDAAmD;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,CAAU,CAAC;AAG/D,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,UAAU;IACV,YAAY;IACZ,SAAS;IACT,OAAO;IACP,YAAY;IACZ,SAAS;IACT,MAAM;IACN,QAAQ;IACR,SAAS;IACT,SAAS;CACD,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK;IACL,SAAS;IACT,KAAK;IACL,QAAQ;IACR,MAAM;IACN,KAAK;CACG,CAAC;AA8DX,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc;IACd,WAAW;IACX,iBAAiB;IACjB,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;IACf,+BAA+B;IAC/B,mBAAmB;CACX,CAAC;AAGX,oBAAoB;AACpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2BAA2B;IAC3B,GAAG,EAAE,UAAU;IACf,mCAAmC;IACnC,QAAQ,EAAE,eAAe;IACzB,sDAAsD;IACtD,GAAG,EAAE,UAAU;IACf,+BAA+B;IAC/B,UAAU,EAAE,iBAAiB;IAC7B,sBAAsB;IACtB,QAAQ,EAAE,eAAe;CACjB,CAAC;AAEX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type WebPageOutcome, type WebSearchAdapter, type WebSearchConnection, type WebSearchInput, type WebSearchOutcome, type WebSearchSettings, type WebSearchTraits } from './types.js';
|
|
2
|
+
type Settings = WebSearchSettings<'deepseek'>;
|
|
3
|
+
/**
|
|
4
|
+
* DeepSeek 没有单独的时间 / 域名过滤字段,靠查询里的操作符(`after:` / `site:`),
|
|
5
|
+
* 所以这两项拼进 `query`。查询上限 128 字符(含操作符),工具层的 70 字留足了余量。
|
|
6
|
+
*/
|
|
7
|
+
export declare class DeepseekWebSearchAdapter implements WebSearchAdapter<'deepseek'> {
|
|
8
|
+
private readonly now;
|
|
9
|
+
readonly kind: "deepseek";
|
|
10
|
+
constructor(now?: () => Date);
|
|
11
|
+
traits(): WebSearchTraits;
|
|
12
|
+
search(conn: WebSearchConnection, _settings: Settings, input: WebSearchInput, signal: AbortSignal): Promise<WebSearchOutcome>;
|
|
13
|
+
readPage(conn: WebSearchConnection, _settings: Settings, input: {
|
|
14
|
+
url: string;
|
|
15
|
+
}, signal: AbortSignal): Promise<WebPageOutcome>;
|
|
16
|
+
private post;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=deepseek.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.adapter.d.ts","sourceRoot":"","sources":["../../src/web-search/deepseek.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AA8BpB,KAAK,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAE9C;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB,CAAC,UAAU,CAAC;IAG/D,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;gBAEP,GAAG,GAAE,MAAM,IAAuB;IAE/D,MAAM,IAAI,eAAe;IAInB,MAAM,CACV,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,QAAQ,EACnB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAyBtB,QAAQ,CACZ,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,QAAQ,EACnB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EACtB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC;YAkBZ,IAAI;CA8BnB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { clip, joinUrl, parseErrorBody, parseJson, postJson } from './http.js';
|
|
2
|
+
import { recencySince, WebSearchUpstreamError, } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* DeepSeek Search / Fetch API(2026-10-17 上线,<https://api-docs.deepseek.com/guides/search>)。
|
|
5
|
+
* 与对话 API 同一把 Bearer key;`web-search` 端点的根是 `https://api.deepseek.com/v1/tools`,下挂 `/search`、`/fetch`。
|
|
6
|
+
*/
|
|
7
|
+
const TRAITS = {
|
|
8
|
+
readsPages: true,
|
|
9
|
+
maxResults: null,
|
|
10
|
+
filters: ['recency', 'domain'],
|
|
11
|
+
linksOftenMissing: false,
|
|
12
|
+
pageImagesArePlaceholders: false,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* DeepSeek 没有单独的时间 / 域名过滤字段,靠查询里的操作符(`after:` / `site:`),
|
|
16
|
+
* 所以这两项拼进 `query`。查询上限 128 字符(含操作符),工具层的 70 字留足了余量。
|
|
17
|
+
*/
|
|
18
|
+
export class DeepseekWebSearchAdapter {
|
|
19
|
+
now;
|
|
20
|
+
kind = 'deepseek';
|
|
21
|
+
constructor(now = () => new Date()) {
|
|
22
|
+
this.now = now;
|
|
23
|
+
}
|
|
24
|
+
traits() {
|
|
25
|
+
return TRAITS;
|
|
26
|
+
}
|
|
27
|
+
async search(conn, _settings, input, signal) {
|
|
28
|
+
const query = [
|
|
29
|
+
input.query,
|
|
30
|
+
input.domain ? `site:${input.domain}` : null,
|
|
31
|
+
input.recency ? `after:${recencySince(input.recency, this.now())}` : null,
|
|
32
|
+
]
|
|
33
|
+
.filter(Boolean)
|
|
34
|
+
.join(' ');
|
|
35
|
+
const data = await this.post('search', conn, { query, ...(input.count !== undefined ? { count: input.count } : {}) }, signal);
|
|
36
|
+
const items = (data.results ?? []).map(r => ({
|
|
37
|
+
title: r.title ?? '',
|
|
38
|
+
link: r.url ?? '',
|
|
39
|
+
// summary 是给模型看的长摘要(600–800 字),snippet 是给界面的短摘要。
|
|
40
|
+
content: r.summary || r.snippet || '',
|
|
41
|
+
media: r.site_name || null,
|
|
42
|
+
publishDate: r.date || null,
|
|
43
|
+
}));
|
|
44
|
+
return { engine: 'deepseek', items };
|
|
45
|
+
}
|
|
46
|
+
async readPage(conn, _settings, input, signal) {
|
|
47
|
+
const data = await this.post('fetch', conn, { url: input.url }, signal);
|
|
48
|
+
if (typeof data.content !== 'string') {
|
|
49
|
+
throw new WebSearchUpstreamError('deepseek fetch 响应缺少 content');
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
url: input.url,
|
|
53
|
+
title: data.title || null,
|
|
54
|
+
description: null,
|
|
55
|
+
content: data.content,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async post(path, conn, body, signal) {
|
|
59
|
+
const label = `deepseek ${path}`;
|
|
60
|
+
const res = await postJson(label, joinUrl(conn.baseUrl, path), conn, body, signal);
|
|
61
|
+
if (!res.ok) {
|
|
62
|
+
const parsed = parseErrorBody(res.text);
|
|
63
|
+
const detail = parsed.message ?? clip(res.text);
|
|
64
|
+
const hint = STATUS_HINTS[res.status];
|
|
65
|
+
throw new WebSearchUpstreamError(`${label} ${res.status}${hint ? `(${hint})` : ''}${detail ? `: ${detail}` : ''}`, {
|
|
66
|
+
code: parsed.code,
|
|
67
|
+
// 文档:408 / 429 / 5xx 等一等再试,其余 4xx 不改请求重试也没用。
|
|
68
|
+
retryable: res.status >= 500 || res.status === 429 || res.status === 408,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return parseJson(label, res.text);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** 文档里有确定含义的状态码,带进错误文案让模型 / 运营不必去查。 */
|
|
75
|
+
const STATUS_HINTS = {
|
|
76
|
+
401: 'API key 无效',
|
|
77
|
+
402: '账户余额不足,需要充值',
|
|
78
|
+
403: '网页被 DeepSeek 的安全策略拒绝',
|
|
79
|
+
404: '取不到这个网页的可用内容:链接失效、站点拦截或不是可提取的网页',
|
|
80
|
+
429: '超过 QPS 上限',
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=deepseek.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.adapter.js","sourceRoot":"","sources":["../../src/web-search/deepseek.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type WebSearchConnection } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* POST 一段 JSON,返回状态码与响应正文。只处理「请求没发出去」与「中心自己报的错」:
|
|
4
|
+
* - 中止原样抛(那是调用方超时或用户点了停止,不是上游故障,重试是错的);网络错误转成可重试的上游错误。
|
|
5
|
+
* - 中心自己的错误体(`{ code, message }` 且没有 `x-pc-credential` 头,判据同 `toProviderClientError`):
|
|
6
|
+
* `upstream_error`(中心连不上厂商)当可重试的上游错误,其余(没有可用 key、不许用这家……)是配置问题,
|
|
7
|
+
* 抛 `ProviderClientError`。
|
|
8
|
+
* 厂商的状态码与响应体怎么解释是各适配器的事。
|
|
9
|
+
*/
|
|
10
|
+
export declare function postJson(label: string, url: string, { apiKey, fetch }: WebSearchConnection, body: Record<string, unknown>, signal: AbortSignal): Promise<{
|
|
11
|
+
status: number;
|
|
12
|
+
ok: boolean;
|
|
13
|
+
text: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** 解析 JSON 响应体;不成形就是上游失败。 */
|
|
16
|
+
export declare function parseJson<T>(label: string, text: string): T;
|
|
17
|
+
/** OpenAI 形状的错误体 `{error: {code, message}}`;其余形状当没有。 */
|
|
18
|
+
export declare function parseErrorBody(text: string): {
|
|
19
|
+
code: string | undefined;
|
|
20
|
+
message: string | undefined;
|
|
21
|
+
};
|
|
22
|
+
/** 错误码有时是字符串有时是数字,统一成字符串;其余形状当没有。 */
|
|
23
|
+
export declare function codeOf(value: unknown): string | undefined;
|
|
24
|
+
/** 错误详情别整段回灌(HTML 错误页可能几十 KB)。 */
|
|
25
|
+
export declare function clip(text: string): string;
|
|
26
|
+
/** 端点根 + 子路径(根上多余的 `/` 去掉)。 */
|
|
27
|
+
export declare function joinUrl(baseUrl: string, path: string): string;
|
|
28
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/web-search/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,MAAM,YAAY,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,mBAAmB,EACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiCxD;AAUD,6BAA6B;AAC7B,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAM3D;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAC5C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAeA;AAED,qCAAqC;AACrC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIzD;AAED,kCAAkC;AAClC,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED,+BAA+B;AAC/B,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { parseCenterError, ProviderClientError } from '../errors.js';
|
|
2
|
+
import { PC_HEADERS } from '../types.js';
|
|
3
|
+
import { WebSearchUpstreamError } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* POST 一段 JSON,返回状态码与响应正文。只处理「请求没发出去」与「中心自己报的错」:
|
|
6
|
+
* - 中止原样抛(那是调用方超时或用户点了停止,不是上游故障,重试是错的);网络错误转成可重试的上游错误。
|
|
7
|
+
* - 中心自己的错误体(`{ code, message }` 且没有 `x-pc-credential` 头,判据同 `toProviderClientError`):
|
|
8
|
+
* `upstream_error`(中心连不上厂商)当可重试的上游错误,其余(没有可用 key、不许用这家……)是配置问题,
|
|
9
|
+
* 抛 `ProviderClientError`。
|
|
10
|
+
* 厂商的状态码与响应体怎么解释是各适配器的事。
|
|
11
|
+
*/
|
|
12
|
+
export async function postJson(label, url, { apiKey, fetch }, body, signal) {
|
|
13
|
+
let res;
|
|
14
|
+
try {
|
|
15
|
+
res = await fetch(url, {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
headers: {
|
|
18
|
+
...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),
|
|
19
|
+
'content-type': 'application/json',
|
|
20
|
+
},
|
|
21
|
+
body: JSON.stringify(body),
|
|
22
|
+
signal,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (signal.aborted)
|
|
27
|
+
throw err;
|
|
28
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
29
|
+
throw new WebSearchUpstreamError(`${label} 请求失败:${reason}`, {
|
|
30
|
+
retryable: true,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const text = await res.text();
|
|
34
|
+
if (!res.ok && !res.headers.has(PC_HEADERS.credential)) {
|
|
35
|
+
const center = centerErrorOf(text);
|
|
36
|
+
if (center?.code === 'upstream_error') {
|
|
37
|
+
throw new WebSearchUpstreamError(`${label} 请求失败:${center.message}`, {
|
|
38
|
+
code: center.code,
|
|
39
|
+
retryable: true,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (center) {
|
|
43
|
+
throw new ProviderClientError(center.code, center.message, res.status);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { status: res.status, ok: res.ok, text };
|
|
47
|
+
}
|
|
48
|
+
function centerErrorOf(text) {
|
|
49
|
+
try {
|
|
50
|
+
return parseCenterError(JSON.parse(text));
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** 解析 JSON 响应体;不成形就是上游失败。 */
|
|
57
|
+
export function parseJson(label, text) {
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(text);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new WebSearchUpstreamError(`${label} 返回了无法解析的响应体`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** OpenAI 形状的错误体 `{error: {code, message}}`;其余形状当没有。 */
|
|
66
|
+
export function parseErrorBody(text) {
|
|
67
|
+
try {
|
|
68
|
+
const body = JSON.parse(text);
|
|
69
|
+
return {
|
|
70
|
+
code: codeOf(body.error?.code),
|
|
71
|
+
message: typeof body.error?.message === 'string'
|
|
72
|
+
? body.error.message
|
|
73
|
+
: undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return { code: undefined, message: undefined };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** 错误码有时是字符串有时是数字,统一成字符串;其余形状当没有。 */
|
|
81
|
+
export function codeOf(value) {
|
|
82
|
+
return typeof value === 'string' || typeof value === 'number'
|
|
83
|
+
? String(value)
|
|
84
|
+
: undefined;
|
|
85
|
+
}
|
|
86
|
+
/** 错误详情别整段回灌(HTML 错误页可能几十 KB)。 */
|
|
87
|
+
export function clip(text) {
|
|
88
|
+
const flat = text.replace(/\s+/g, ' ').trim();
|
|
89
|
+
return flat.length > 300 ? `${flat.slice(0, 300)}…` : flat;
|
|
90
|
+
}
|
|
91
|
+
/** 端点根 + 子路径(根上多余的 `/` 去掉)。 */
|
|
92
|
+
export function joinUrl(baseUrl, path) {
|
|
93
|
+
return `${baseUrl.replace(/\/+$/, '')}/${path}`;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/web-search/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { WebPageOutcome, WebSearchAdapter, WebSearchConnection, WebSearchInput, WebSearchKind, WebSearchOutcome, WebSearchSettings, WebSearchTraits } from './types.js';
|
|
2
|
+
/** kind → 适配器。映射类型保证每个 kind 都有、且设置类型对得上;加一家漏了这里编译报错。 */
|
|
3
|
+
export declare const WEB_SEARCH_ADAPTERS: {
|
|
4
|
+
readonly [K in WebSearchKind]: WebSearchAdapter<K>;
|
|
5
|
+
};
|
|
6
|
+
export declare function isWebSearchKind(kind: string): kind is WebSearchKind;
|
|
7
|
+
/** 一家联网服务,连接与设置都已绑好。`readPage` 只在 `traits.readsPages` 时存在。 */
|
|
8
|
+
export interface WebSearch {
|
|
9
|
+
readonly kind: WebSearchKind;
|
|
10
|
+
readonly traits: WebSearchTraits;
|
|
11
|
+
search(input: WebSearchInput, signal: AbortSignal): Promise<WebSearchOutcome>;
|
|
12
|
+
readPage?(input: {
|
|
13
|
+
url: string;
|
|
14
|
+
}, signal: AbortSignal): Promise<WebPageOutcome>;
|
|
15
|
+
}
|
|
16
|
+
export interface CreateWebSearchInput<K extends WebSearchKind> {
|
|
17
|
+
kind: K;
|
|
18
|
+
connection: WebSearchConnection;
|
|
19
|
+
settings?: WebSearchSettings<K>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 绑好连接与设置的联网服务。中心模式用 `ProviderClient.webSearch`;这里是直连(本地开发、测试)与中心模式共用的底层:
|
|
23
|
+
* 直连时 `connection` 给厂商的 `web-search` 根地址 + `apiKey`。
|
|
24
|
+
*/
|
|
25
|
+
export declare function createWebSearch<K extends WebSearchKind>(input: CreateWebSearchInput<K>): WebSearch;
|
|
26
|
+
export * from './types.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web-search/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE;IAChC,QAAQ,EAAE,CAAC,IAAI,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAMnD,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAEnE;AAED,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9E,QAAQ,CAAC,CACP,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EACtB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,aAAa;IAC3D,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,aAAa,EACrD,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC7B,SAAS,CAeX;AAED,cAAc,YAAY,CAAC"}
|