mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 04:35:51 +00:00
fix
This commit is contained in:
@@ -268,30 +268,39 @@ export default class ModelCaller {
|
|||||||
* 用于在手动构造请求时模拟 ST 后端行为
|
* 用于在手动构造请求时模拟 ST 后端行为
|
||||||
*/
|
*/
|
||||||
_buildProfilePayload(targetProfile) {
|
_buildProfilePayload(targetProfile) {
|
||||||
// 1. 全量继承 Profile 属性,防止遗漏自定义字段 (如 custom_url, user_name 等)
|
// 1. 全量继承 Profile 属性
|
||||||
const payload = { ...targetProfile };
|
const payload = { ...targetProfile };
|
||||||
|
|
||||||
// 2. 规范化关键字段
|
// 2. 规范化关键字段
|
||||||
// ST 的 Profile 里模型名可能叫 openai_model, claude_model 等,统一映射为 model
|
// ST 的 Profile 里模型名可能叫 openai_model
|
||||||
if (!payload.model) {
|
if (!payload.model) {
|
||||||
payload.model = payload.openai_model || payload.claude_model || payload.mistral_model || payload.text_generation_webui_model || '';
|
payload.model = payload.openai_model || payload.claude_model || payload.mistral_model || payload.text_generation_webui_model || '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 确保 chat_completion_source 存在
|
// 3. 强制修正 URL 映射 (解决 400 错误的核心)
|
||||||
if (!payload.chat_completion_source) {
|
// Profile 原始数据里可能是 api-url (中划线), api_url, custom_url 等
|
||||||
payload.chat_completion_source = 'openai';
|
const rawUrl = payload['api-url'] || payload['api_url'] || payload.custom_url || payload.url;
|
||||||
|
|
||||||
|
if (rawUrl) {
|
||||||
|
// OpenAI 模式认 reverse_proxy
|
||||||
|
payload.reverse_proxy = rawUrl;
|
||||||
|
// Custom 模式认 custom_url (双保险)
|
||||||
|
payload.custom_url = rawUrl;
|
||||||
|
// 某些后端可能需要这个
|
||||||
|
payload.openai_reverse_proxy = rawUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. 处理 URL 映射 (OpenAI 兼容接口通常需要 reverse_proxy)
|
// 4. 强制指定 Source 为 OpenAI
|
||||||
// 如果 Profile 里只有 custom_url 或 api_url,尝试映射给 reverse_proxy
|
// 我们的 ModelCaller._fetchFakeStream 是按 OpenAI SSE 格式解析的
|
||||||
if (!payload.reverse_proxy && (payload.custom_url || payload.api_url)) {
|
// 只要 reverse_proxy 设置正确,后端就会按 OpenAI 协议转发
|
||||||
payload.reverse_proxy = payload.custom_url || payload.api_url;
|
payload.chat_completion_source = 'openai';
|
||||||
}
|
|
||||||
|
|
||||||
// 5. 补充默认采样参数 (如果 Profile 里完全缺失)
|
// 5. 补充默认采样参数 (防止 undefined)
|
||||||
if (payload.temperature === undefined) payload.temperature = 1;
|
if (payload.temperature === undefined) payload.temperature = 1;
|
||||||
if (payload.max_tokens === undefined) payload.max_tokens = 2000;
|
if (payload.max_tokens === undefined) payload.max_tokens = 2000;
|
||||||
// 注意:top_p 等如果为 undefined,通常后端会用默认值,这里暂不强行赋值,以免覆盖后端逻辑
|
if (payload.top_p === undefined) payload.top_p = 1;
|
||||||
|
if (payload.frequency_penalty === undefined) payload.frequency_penalty = 0;
|
||||||
|
if (payload.presence_penalty === undefined) payload.presence_penalty = 0;
|
||||||
|
|
||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user