feat: 按模型上下文自动配置智能体压缩阈值

- 从 llm.json 解析上下文与输出上限,并增强短模型 ID 匹配

- 切换模型、保存和试运行时按预算公式重算,目录缺失时回退 30K

- 修复模型列表接口未返回能力元数据
This commit is contained in:
2026-07-30 14:20:10 +08:00
parent 5f11219226
commit c78074a969
14 changed files with 410 additions and 23 deletions

View File

@@ -0,0 +1,41 @@
package tech.easyflow.admin.controller.ai;
import org.testng.Assert;
import org.testng.annotations.Test;
import tech.easyflow.ai.entity.Model;
import tech.easyflow.ai.service.ModelService;
import tech.easyflow.common.domain.Result;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
* 模型列表控制器测试。
*/
public class ModelControllerTest {
/**
* 验证模型列表使用包含目录能力元数据的服务查询。
*/
@Test
public void listShouldReturnCapabilityDecoratedModels() {
ModelService service = mock(ModelService.class);
Model query = new Model();
Model decoratedModel = new Model();
decoratedModel.setContextWindowTokens(1_000_000L);
decoratedModel.setMaxOutputTokens(64_000L);
when(service.listSelectableModels(query, false, "id", "desc"))
.thenReturn(List.of(decoratedModel));
ModelController controller = new ModelController(service);
Result<List<Model>> result = controller.list(query, false, "id", "desc");
Assert.assertSame(decoratedModel, result.getData().get(0));
Assert.assertEquals(Long.valueOf(1_000_000L),
result.getData().get(0).getContextWindowTokens());
verify(service).listSelectableModels(query, false, "id", "desc");
}
}