Skip to content

Commit 5e0d758

Browse files
committed
fix(ModelGatewayMapper): enhance model retrieval by adding model type filtering
1 parent 268cbfc commit 5e0d758

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

backend/magic-service/app/Application/ModelGateway/Mapper/ModelGatewayMapper.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use App\Domain\Provider\Entity\ProviderEntity;
1616
use App\Domain\Provider\Entity\ProviderModelEntity;
1717
use App\Domain\Provider\Entity\ValueObject\Category;
18+
use App\Domain\Provider\Entity\ValueObject\ModelType;
1819
use App\Domain\Provider\Entity\ValueObject\ProviderDataIsolation;
1920
use App\Domain\Provider\Entity\ValueObject\Query\ProviderModelQuery;
2021
use App\Domain\Provider\Entity\ValueObject\Status;
@@ -137,7 +138,7 @@ public function getOrganizationEmbeddingModel(string $model, ?string $orgCode =
137138
*/
138139
public function getChatModels(string $organizationCode): array
139140
{
140-
return $this->getModelsByType($organizationCode, 'chat');
141+
return $this->getModelsByType($organizationCode, 'chat', ModelType::LLM);
141142
}
142143

143144
/**
@@ -146,7 +147,7 @@ public function getChatModels(string $organizationCode): array
146147
*/
147148
public function getEmbeddingModels(string $organizationCode): array
148149
{
149-
return $this->getModelsByType($organizationCode, 'embedding');
150+
return $this->getModelsByType($organizationCode, 'embedding', ModelType::EMBEDDING);
150151
}
151152

152153
protected function loadEnvModels(): void
@@ -331,13 +332,28 @@ protected function loadApiModels(): void
331332
* @param string $type 模型类型(chat|embedding)
332333
* @return OdinModel[]
333334
*/
334-
private function getModelsByType(string $organizationCode, string $type): array
335+
private function getModelsByType(string $organizationCode, string $type, ?ModelType $modelType = null): array
335336
{
336337
$list = [];
337338

338339
// 获取已持久化的配置
339340
$models = $this->getModels($type);
340341
foreach ($models as $name => $model) {
342+
switch ($modelType) {
343+
case ModelType::LLM:
344+
if ($model instanceof AbstractModel && ! $model->getModelOptions()->isChat()) {
345+
continue 2;
346+
}
347+
break;
348+
case ModelType::EMBEDDING:
349+
if ($model instanceof AbstractModel && ! $model->getModelOptions()->isEmbedding()) {
350+
continue 2;
351+
}
352+
break;
353+
default:
354+
// 如果没有指定类型,则全部添加
355+
break;
356+
}
341357
$list[$name] = new OdinModel(key: $name, model: $model, attributes: $this->attributes[$name]);
342358
}
343359

@@ -346,6 +362,7 @@ private function getModelsByType(string $organizationCode, string $type): array
346362
$providerModelQuery = new ProviderModelQuery();
347363
$providerModelQuery->setStatus(Status::Enabled);
348364
$providerModelQuery->setCategory(Category::LLM);
365+
$providerModelQuery->setModelType($modelType);
349366
$providerModelData = di(ProviderModelDomainService::class)->queries($providerDataIsolation, $providerModelQuery, Page::createNoPage());
350367
$providerConfigIds = [];
351368
foreach ($providerModelData['list'] as $providerModel) {

backend/magic-service/app/Domain/Provider/Entity/ValueObject/Query/ProviderModelQuery.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
namespace App\Domain\Provider\Entity\ValueObject\Query;
99

1010
use App\Domain\Provider\Entity\ValueObject\Category;
11+
use App\Domain\Provider\Entity\ValueObject\ModelType;
1112
use App\Domain\Provider\Entity\ValueObject\Status;
1213

1314
class ProviderModelQuery extends Query
@@ -16,6 +17,8 @@ class ProviderModelQuery extends Query
1617

1718
protected ?Category $category = null;
1819

20+
protected ?ModelType $modelType = null;
21+
1922
public function getCategory(): ?Category
2023
{
2124
return $this->category;
@@ -36,4 +39,14 @@ public function setStatus(?Status $status): self
3639
$this->status = $status;
3740
return $this;
3841
}
42+
43+
public function getModelType(): ?ModelType
44+
{
45+
return $this->modelType;
46+
}
47+
48+
public function setModelType(?ModelType $modelType): void
49+
{
50+
$this->modelType = $modelType;
51+
}
3952
}

backend/magic-service/app/Domain/Provider/Repository/Persistence/ProviderModelRepository.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ public function queries(ProviderDataIsolation $dataIsolation, ProviderModelQuery
8787
if ($query->getCategory()) {
8888
$builder->where('category', $query->getCategory()->value);
8989
}
90+
if ($query->getModelType()) {
91+
$builder->where('model_type', $query->getModelType()->value);
92+
}
9093

9194
$result = $this->getByPage($builder, $page, $query);
9295

0 commit comments

Comments
 (0)