@dsh-plus/llm-pi 0.1.9 → 0.1.10
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/index.js +15 -7
- package/package.json +1 -1
- package/src/deepseek-routes.ts +23 -7
package/lib/index.js
CHANGED
|
@@ -449,20 +449,23 @@ var DeepseekRouteRegistrar = class {
|
|
|
449
449
|
for (const [route, built] of target) {
|
|
450
450
|
const existing = this.registrations.get(route);
|
|
451
451
|
if (existing !== void 0) {
|
|
452
|
-
this.
|
|
452
|
+
this.refreshRegistration(route, built, existing);
|
|
453
453
|
continue;
|
|
454
454
|
}
|
|
455
455
|
this.register(route, built);
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
458
|
+
/** retryPolicy 或 displayName 变化时原地 replace(两者均为注册期捕获事实)。 */
|
|
459
|
+
refreshRegistration(route, built, registration) {
|
|
460
|
+
const policyUnchanged = deepEqualJson(built.connection.retryPolicy, registration.retryPolicy);
|
|
461
|
+
const nameUnchanged = built.displayName === registration.displayName;
|
|
462
|
+
if (policyUnchanged && nameUnchanged) return;
|
|
461
463
|
try {
|
|
462
464
|
registration.handle.replace([route]);
|
|
463
|
-
registration.retryPolicy =
|
|
465
|
+
registration.retryPolicy = built.connection.retryPolicy;
|
|
466
|
+
registration.displayName = built.displayName;
|
|
464
467
|
} catch (error) {
|
|
465
|
-
this.deps.logger.error(`llm-pi: deepseek route "${route}"
|
|
468
|
+
this.deps.logger.error(`llm-pi: deepseek route "${route}" 注册事实更新被拒,保留此前注册`);
|
|
466
469
|
this.deps.logger.error(error);
|
|
467
470
|
}
|
|
468
471
|
}
|
|
@@ -484,11 +487,16 @@ var DeepseekRouteRegistrar = class {
|
|
|
484
487
|
resolveUserId: () => this.resolveUserId(),
|
|
485
488
|
resolveAttachments: () => ctx.get("attachments")
|
|
486
489
|
});
|
|
490
|
+
adapter.providerInfo = (provider) => ({
|
|
491
|
+
id: provider,
|
|
492
|
+
name: routes().get(route)?.displayName ?? built.displayName
|
|
493
|
+
});
|
|
487
494
|
try {
|
|
488
495
|
const handle = ctx.llm.registerAdapter([route], adapter);
|
|
489
496
|
this.registrations.set(route, {
|
|
490
497
|
handle,
|
|
491
|
-
retryPolicy: built.connection.retryPolicy
|
|
498
|
+
retryPolicy: built.connection.retryPolicy,
|
|
499
|
+
displayName: built.displayName
|
|
492
500
|
});
|
|
493
501
|
} catch (error) {
|
|
494
502
|
logger.error(`llm-pi: deepseek route "${route}" 注册失败(可能与其他 adapter 重名),该 route 不可用`);
|
package/package.json
CHANGED
package/src/deepseek-routes.ts
CHANGED
|
@@ -25,6 +25,8 @@ interface RouteRegistration {
|
|
|
25
25
|
handle: AdapterRegistrationHandle
|
|
26
26
|
/** 注册期捕获的重试策略(变化才 replace)。 */
|
|
27
27
|
retryPolicy: unknown
|
|
28
|
+
/** 注册期捕获的展示名(providerInfo 是注册期捕获事实,变化才 replace)。 */
|
|
29
|
+
displayName: string
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export interface DeepseekRegistrarDeps {
|
|
@@ -80,25 +82,28 @@ export class DeepseekRouteRegistrar {
|
|
|
80
82
|
for (const [route, built] of target) {
|
|
81
83
|
const existing = this.registrations.get(route)
|
|
82
84
|
if (existing !== undefined) {
|
|
83
|
-
this.
|
|
85
|
+
this.refreshRegistration(route, built, existing)
|
|
84
86
|
continue
|
|
85
87
|
}
|
|
86
88
|
this.register(route, built)
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
91
|
|
|
90
|
-
|
|
92
|
+
/** retryPolicy 或 displayName 变化时原地 replace(两者均为注册期捕获事实)。 */
|
|
93
|
+
private refreshRegistration(
|
|
91
94
|
route: string,
|
|
92
95
|
built: ResolvedDeepseekRoute,
|
|
93
96
|
registration: RouteRegistration,
|
|
94
97
|
): void {
|
|
95
|
-
const
|
|
96
|
-
|
|
98
|
+
const policyUnchanged = deepEqualJson(built.connection.retryPolicy, registration.retryPolicy)
|
|
99
|
+
const nameUnchanged = built.displayName === registration.displayName
|
|
100
|
+
if (policyUnchanged && nameUnchanged) return
|
|
97
101
|
try {
|
|
98
102
|
registration.handle.replace([route])
|
|
99
|
-
registration.retryPolicy =
|
|
103
|
+
registration.retryPolicy = built.connection.retryPolicy
|
|
104
|
+
registration.displayName = built.displayName
|
|
100
105
|
} catch (error) {
|
|
101
|
-
this.deps.logger.error(`llm-pi: deepseek route "${route}"
|
|
106
|
+
this.deps.logger.error(`llm-pi: deepseek route "${route}" 注册事实更新被拒,保留此前注册`)
|
|
102
107
|
this.deps.logger.error(error)
|
|
103
108
|
}
|
|
104
109
|
}
|
|
@@ -126,9 +131,20 @@ export class DeepseekRouteRegistrar {
|
|
|
126
131
|
resolveUserId: () => this.resolveUserId() as never,
|
|
127
132
|
resolveAttachments: () => ctx.get('attachments') as never,
|
|
128
133
|
})
|
|
134
|
+
// 官方 providerInfo 硬编码 name: "DeepSeek"——覆盖为按路由动态读取的
|
|
135
|
+
// displayName,否则自定义 deepseek 路由在模型选择器里与 deepseek-official
|
|
136
|
+
// 撞名(两个 "DeepSeek" 分组,无法区分)。
|
|
137
|
+
adapter.providerInfo = (provider: string) => ({
|
|
138
|
+
id: provider,
|
|
139
|
+
name: routes().get(route)?.displayName ?? built.displayName,
|
|
140
|
+
})
|
|
129
141
|
try {
|
|
130
142
|
const handle = ctx.llm.registerAdapter([route], adapter as never)
|
|
131
|
-
this.registrations.set(route, {
|
|
143
|
+
this.registrations.set(route, {
|
|
144
|
+
handle,
|
|
145
|
+
retryPolicy: built.connection.retryPolicy,
|
|
146
|
+
displayName: built.displayName,
|
|
147
|
+
})
|
|
132
148
|
} catch (error) {
|
|
133
149
|
logger.error(
|
|
134
150
|
`llm-pi: deepseek route "${route}" 注册失败(可能与其他 adapter 重名),该 route 不可用`,
|