Skip to content

Commit 46b3de2

Browse files
committed
fix: Distinguish between Embedding and Chat detection methods
1 parent 277607b commit 46b3de2

File tree

2 files changed

+77
-17
lines changed

2 files changed

+77
-17
lines changed

frontend/src/views/initialization/InitializationConfig.vue

Lines changed: 61 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@
282282
name="refresh"
283283
class="refresh-icon"
284284
:class="{ spinning: modelStatus.embedding.checking }"
285-
@click="checkRemoteModelStatus('embedding')"
285+
@click="checkEmbeddingModelStatus()"
286286
/>
287287
</t-tooltip>
288288
<t-icon
@@ -1422,7 +1422,7 @@ const onModelNameInput = (type: 'llm' | 'embedding' | 'vlm') => {
14221422
if (type === 'llm' && formData.llm.source === 'remote' && formData.llm.baseUrl) {
14231423
await checkRemoteModelStatus('llm');
14241424
} else if (type === 'embedding' && formData.embedding.source === 'remote' && formData.embedding.baseUrl) {
1425-
await checkRemoteModelStatus('embedding');
1425+
await checkEmbeddingModelStatus();
14261426
} else if (type === 'vlm' && !isVlmOllama.value) {
14271427
// VLM远程API校验可以在这里添加
14281428
}
@@ -1465,7 +1465,11 @@ const onRemoteConfigChange = async (type: 'llm' | 'embedding') => {
14651465
14661466
// 如果配置完整,检查模型
14671467
if (formData[type].modelName && formData[type].baseUrl) {
1468-
await checkRemoteModelStatus(type);
1468+
if (type === 'llm') {
1469+
await checkRemoteModelStatus(type);
1470+
} else if (type === 'embedding') {
1471+
await checkEmbeddingModelStatus();
1472+
}
14691473
}
14701474
};
14711475
@@ -1492,13 +1496,17 @@ const onRemoteConfigInput = async (type: 'llm' | 'embedding') => {
14921496
form.value?.validate([`${type}.modelName`, `${type}.baseUrl`]);
14931497
14941498
// 自动检查远程API模型状态
1495-
await checkRemoteModelStatus(type);
1499+
if (type === 'llm') {
1500+
await checkRemoteModelStatus(type);
1501+
} else if (type === 'embedding') {
1502+
await checkEmbeddingModelStatus();
1503+
}
14961504
}
14971505
}, 500); // 500ms防抖延迟
14981506
};
14991507
15001508
// 检查远程模型
1501-
const checkRemoteModelStatus = async (type: 'llm' | 'embedding') => {
1509+
const checkRemoteModelStatus = async (type: 'llm') => {
15021510
if (!formData[type].modelName || !formData[type].baseUrl) {
15031511
return;
15041512
}
@@ -1752,15 +1760,8 @@ onMounted(async () => {
17521760
// 加载当前配置
17531761
await loadCurrentConfig();
17541762
1755-
// 检查Ollama状态
1756-
const needOllamaCheck =
1757-
formData.llm.source === 'local' ||
1758-
formData.embedding.source === 'local' ||
1759-
(formData.multimodal.enabled && formData.multimodal.vlm.interfaceType === 'ollama');
1760-
1761-
if (needOllamaCheck) {
1762-
await refreshOllamaSummary();
1763-
}
1763+
// 总是检查Ollama状态,因为这是独立于具体配置的
1764+
await refreshOllamaSummary();
17641765
17651766
// 检查已配置模型状态
17661767
await checkAllConfiguredModels();
@@ -2220,7 +2221,7 @@ const checkAllConfiguredModels = async () => {
22202221
if (formData.embedding.source === 'local' && formData.embedding.modelName && ollamaStatus.available) {
22212222
await checkAllOllamaModels();
22222223
} else if (formData.embedding.source === 'remote' && formData.embedding.modelName && formData.embedding.baseUrl) {
2223-
await checkRemoteModelStatus('embedding');
2224+
await checkEmbeddingModelStatus();
22242225
}
22252226
}
22262227
@@ -2243,6 +2244,51 @@ const onDimensionInput = (event: any) => {
22432244
formData.embedding.dimension = Number(event.target.value);
22442245
};
22452246
2247+
// 检查Embedding模型状态
2248+
const checkEmbeddingModelStatus = async () => {
2249+
if (!formData.embedding.modelName) {
2250+
return;
2251+
}
2252+
2253+
try {
2254+
modelStatus.embedding.checking = true;
2255+
modelStatus.embedding.checked = false;
2256+
modelStatus.embedding.available = false;
2257+
modelStatus.embedding.message = '';
2258+
2259+
const result = await testEmbeddingModel({
2260+
source: formData.embedding.source as 'local' | 'remote',
2261+
modelName: formData.embedding.modelName,
2262+
baseUrl: formData.embedding.source === 'remote' ? formData.embedding.baseUrl : undefined,
2263+
apiKey: formData.embedding.apiKey || undefined,
2264+
dimension: formData.embedding.dimension || undefined,
2265+
});
2266+
2267+
modelStatus.embedding.checked = true;
2268+
modelStatus.embedding.available = result.available || false;
2269+
modelStatus.embedding.message = result.message || '';
2270+
2271+
// 如果检测到维度信息,自动更新
2272+
if (result.available && result.dimension && result.dimension > 0) {
2273+
formData.embedding.dimension = result.dimension;
2274+
}
2275+
2276+
// 触发表单验证
2277+
setTimeout(() => {
2278+
form.value?.validate(['embedding.modelName']);
2279+
}, 100);
2280+
2281+
} catch (error) {
2282+
console.error('检查Embedding模型失败:', error);
2283+
modelStatus.embedding.checked = true;
2284+
modelStatus.embedding.available = false;
2285+
const err = error as any;
2286+
modelStatus.embedding.message = (err && err.message) || '检查失败';
2287+
} finally {
2288+
modelStatus.embedding.checking = false;
2289+
}
2290+
};
2291+
22462292
// 检测并自动填写 Embedding 维度
22472293
const detectEmbeddingDimension = async () => {
22482294
if (hasFiles.value) return;

scripts/start_all.sh

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ show_help() {
3030
echo " -r, --restart 重新构建并重启指定容器"
3131
echo " -l, --list 列出所有正在运行的容器"
3232
echo " -p, --pull 拉取最新的Docker镜像"
33+
echo " --no-pull 启动时不拉取镜像(默认会拉取)"
3334
echo " -v, --version 显示版本信息"
3435
exit 0
3536
}
@@ -333,8 +334,16 @@ start_docker() {
333334

334335
# 启动基本服务
335336
log_info "启动核心服务容器..."
336-
# 统一通过已检测到的 Compose 命令启动,添加 --pull always 确保使用最新镜像
337-
PLATFORM=$PLATFORM "$DOCKER_COMPOSE_BIN" $DOCKER_COMPOSE_SUBCMD up --build --pull always -d
337+
# 统一通过已检测到的 Compose 命令启动
338+
if [ "$NO_PULL" = true ]; then
339+
# 不拉取镜像,使用本地镜像
340+
log_info "跳过镜像拉取,使用本地镜像..."
341+
PLATFORM=$PLATFORM "$DOCKER_COMPOSE_BIN" $DOCKER_COMPOSE_SUBCMD up --build -d
342+
else
343+
# 拉取最新镜像
344+
log_info "拉取最新镜像..."
345+
PLATFORM=$PLATFORM "$DOCKER_COMPOSE_BIN" $DOCKER_COMPOSE_SUBCMD up --build --pull always -d
346+
fi
338347
if [ $? -ne 0 ]; then
339348
log_error "Docker容器启动失败"
340349
return 1
@@ -564,6 +573,7 @@ CHECK_ENVIRONMENT=false
564573
LIST_CONTAINERS=false
565574
RESTART_CONTAINER=false
566575
PULL_IMAGES=false
576+
NO_PULL=false
567577
CONTAINER_NAME=""
568578

569579
# 没有参数时默认启动所有服务
@@ -591,6 +601,10 @@ while [ "$1" != "" ]; do
591601
;;
592602
-p | --pull ) PULL_IMAGES=true
593603
;;
604+
--no-pull ) NO_PULL=true
605+
START_OLLAMA=true
606+
START_DOCKER=true
607+
;;
594608
-r | --restart ) RESTART_CONTAINER=true
595609
CONTAINER_NAME="$2"
596610
shift

0 commit comments

Comments
 (0)