Skip to content

Enjoy 使用示例 ​

渲染大模型提示词 ​

本示例展示如何使用 JFinal 的 Enjoy 模板引擎来渲染翻译提示词(Prompt)。通过配置 Enjoy 引擎并加载模板,可以动态生成翻译请求内容。

配置 Enjoy 引擎 ​

首先,创建一个配置类 EnjoyEngineConfig 来设置 Enjoy 引擎的基本参数。

java
package nexus.io.gpt.translator.config;

import com.jfinal.template.Engine;

public class EnjoyEngineConfig {

  private static final String RESOURCE_BASE_PATH = "/enjoy-templates/";

  public void config() {
    Engine engine = Engine.use();
    engine.setBaseTemplatePath(RESOURCE_BASE_PATH);
    engine.setToClassPathSourceFactory();

    // 支持模板热加载,生产环境中建议开启,除非在极端高性能的场景下
    engine.setDevMode(true);

    // 配置极速模式,提升性能约13%
    Engine.setFastMode(true);

    // 支持中文表达式、变量名、方法名及模板函数名(JFinal 4.9.02 新增)
    Engine.setChineseExpression(true);
  }
}
  • RESOURCE_BASE_PATH: 指定模板文件的基础路径。
  • setDevMode(true): 开启开发模式,支持模板热加载,适用于生产环境以便动态更新模板。
  • setFastMode(true): 启用极速模式,提升模板渲染性能。
  • setChineseExpression(true): 允许使用中文表达式和命名,增强中文开发体验。

创建模板文件 ​

在 src/main/resources/enjoy-templates/ 目录下创建模板文件 translator_prompt.txt,内容如下:

You are a helpful translator.
- Please provide the {target_lang} translation for this text.
- Do not provide any explanations or text apart from the translation.

{source_lang}: {source_text}

{target_lang}:

模板说明

  • {source_lang}: 源语言,例如 "Chinese"。
  • {target_lang}: 目标语言,例如 "English"。
  • {source_text}: 需要翻译的文本,例如 "良禽择木而栖"。

测试模板渲染 ​

创建一个测试类 EnjoyEngineConfigTest,用于验证模板渲染是否正确。

java
package nexus.io.gpt.translator.services;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import com.jfinal.template.Engine;
import com.jfinal.template.Template;
import nexus.io.gpt.translator.config.EnjoyEngineConfig;

public class EnjoyEngineConfigTest {

  @Test
  public void testTemplateRendering() {
    // 配置 Enjoy 引擎
    new EnjoyEngineConfig().config();
    Engine engine = Engine.use();

    // 加载模板文件
    Template template = engine.getTemplate("translator_prompt.txt");

    // 设置模板变量
    Map<String, String> values = new HashMap<>();
    values.put("source_lang", "Chinese");
    values.put("target_lang", "English");
    values.put("source_text", "良禽择木而栖");

    // 渲染模板
    String renderedOutput = template.renderToString(values);
    System.out.println(renderedOutput);
  }
}

运行测试 ​

执行上述测试类,将输出渲染后的模板内容:

You are a helpful translator.
- Please provide the English translation for this text.
- Do not provide any explanations or text apart from the translation.

Chinese: 良禽择木而栖

English:

注意事项 ​

  1. 模板变量替换: 确保模板文件中的变量名与传入的键名完全一致(区分大小写)。
  2. 模板路径配置: RESOURCE_BASE_PATH 必须正确指向模板文件所在目录,且路径格式需符合系统要求。

通过以上配置和示例,您可以使用 Enjoy 模板引擎动态生成翻译请求内容,适用于各种需要模板渲染的场景。

使用自定义模板字符串进行渲染 ​

Engine.getTemplateByString 方法允许您通过模板字符串直接创建 Template 对象,然后使用 Template.renderToString 方法进行渲染。

java
import com.jfinal.kit.Kv;
import com.jfinal.template.Engine;
import com.jfinal.template.Template;

public class EnjoyTemplateExample {

    public static void main(String[] args) {
        // 获取引擎实例
        Engine engine = Engine.use();

        // 模板字符串
        String templateContent = "您好,#(name)!\n欢迎使用 #(productName) 模板引擎。";

        // 创建模板对象
        Template template = engine.getTemplateByString(templateContent);

        // 准备数据
        Kv data = Kv.by("name", "张三").set("productName", "Enjoy");

        // 渲染模板
        String renderedContent = template.renderToString(data);

        // 输出渲染结果
        System.out.println(renderedContent);
    }
}

output

log
您好,张三!
欢迎使用 Enjoy 模板引擎。

界定符和引用符 ​

MIT Licensed