package com.bruce.modelprovider.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bruce.common.domain.model.BaseEntity; import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; /** * 模型配置实体。 *

* 每条记录描述某个服务商下的一个具体模型,包含模型类型、能力、价格和默认参数。 */ @Data @EqualsAndHashCode(callSuper = true) @TableName(value = "model_config", autoResultMap = true) /** * ModelConfig,负责模型平台对应层的职责。 */ public class ModelConfig extends BaseEntity { /** 数据库字段:provider_id(关联的服务商ID)。 */ @TableField(value = "provider_id") private Long providerId; /** 数据库字段:model_code(模型编码,在同一服务商下唯一)。 */ @TableField(value = "model_code") private String modelCode; /** 数据库字段:model_name(模型展示名称)。 */ @TableField(value = "model_name") private String modelName; /** 数据库字段:upstream_model(上游真实模型名,例如 Qwen/Qwen3-Embedding-0.6B)。 */ @TableField(value = "upstream_model") private String upstreamModel; /** 数据库字段:model_type(模型类型,例如 CHAT / EMBEDDING / RERANK / MULTIMODAL)。 */ @TableField(value = "model_type") private String modelType; /** 数据库字段:context_window(上下文窗口大小)。 */ @TableField(value = "context_window") private Integer contextWindow; /** 数据库字段:max_output_tokens(单次输出 token 上限)。 */ @TableField(value = "max_output_tokens") private Integer maxOutputTokens; /** 数据库字段:embedding_dimension(向量维度,仅 EMBEDDING 模型使用)。 */ @TableField(value = "embedding_dimension") private Integer embeddingDimension; /** 数据库字段:input_price_per_1k(输入单价,每 1k token)。 */ @TableField(value = "input_price_per_1k") private BigDecimal inputPricePer1k; /** 数据库字段:output_price_per_1k(输出单价,每 1k token)。 */ @TableField(value = "output_price_per_1k") private BigDecimal outputPricePer1k; /** 数据库字段:local_model(是否本地模型,如自建 Ollama)。 */ @TableField(value = "local_model") private Boolean localModel; /** 数据库字段:default_model(是否该类型默认模型)。 */ @TableField(value = "default_model") private Boolean defaultModel; /** 数据库字段:capabilities_json(能力标签JSON,例如是否支持工具调用、视觉能力等)。 */ @TableField(value = "capabilities_json", typeHandler = PgJsonbStringTypeHandler.class) private String capabilitiesJson; /** 数据库字段:options_json(默认调用参数JSON,例如 temperature、dimensions)。 */ @TableField(value = "options_json", typeHandler = PgJsonbStringTypeHandler.class) private String optionsJson; /** 是否启用该模型。 */ private Boolean enabled; /** 备注信息。 */ private String remark; }