| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.ai.dto.AiPromptPreviewDto; |
| | | import com.vincent.rsf.server.ai.dto.AiPromptPreviewRequest; |
| | | import com.vincent.rsf.server.ai.entity.AiPrompt; |
| | | import com.vincent.rsf.server.ai.mapper.AiPromptMapper; |
| | | import com.vincent.rsf.server.ai.service.AiPromptService; |
| | | import com.vincent.rsf.server.system.enums.StatusType; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | @Service("aiPromptService") |
| | | @RequiredArgsConstructor |
| | | public class AiPromptServiceImpl extends ServiceImpl<AiPromptMapper, AiPrompt> implements AiPromptService { |
| | | |
| | | private final AiPromptRenderSupport aiPromptRenderSupport; |
| | | |
| | | @Override |
| | | public AiPrompt getActivePrompt(String code, Long tenantId) { |
| | |
| | | ensureUniqueCode(aiPrompt.getCode(), tenantId, aiPrompt.getId()); |
| | | } |
| | | |
| | | @Override |
| | | public AiPromptPreviewDto renderPreview(AiPromptPreviewRequest request, Long tenantId) { |
| | | ensureTenantId(tenantId); |
| | | if (request == null) { |
| | | throw new CoolException("Prompt 预览参数不能为空"); |
| | | } |
| | | if (!StringUtils.hasText(request.getSystemPrompt())) { |
| | | throw new CoolException("系统 Prompt 不能为空"); |
| | | } |
| | | return aiPromptRenderSupport.render( |
| | | request.getSystemPrompt(), |
| | | request.getUserPromptTemplate(), |
| | | request.getInput(), |
| | | request.getMetadata() |
| | | ); |
| | | } |
| | | |
| | | private void ensureRequiredFields(AiPrompt aiPrompt) { |
| | | if (!StringUtils.hasText(aiPrompt.getName())) { |
| | | throw new CoolException("Prompt 名称不能为空"); |