使用 Enjoy 模版引擎拼接 JSON
场景描述
在大模型开发过程中我们需要大模型返送 prompt,如果使用 java 中的 map 对象生成这个 prompt 费时费力,下面介绍,如何使用 Enjoy 返回这个 prompt 的完整 json
开发
添加依赖
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>enjoy</artifactId>
<version>5.1.3</version>
</dependency>
- EnjoyEngineConfig 加载模版文件
import com.jfinal.template.Engine;
public class EnjoyEngineConfig {
private final String RESOURCE_BASE_PATH = "/prompt/";
public void config() {
Engine engine = Engine.use();
engine.setBaseTemplatePath(RESOURCE_BASE_PATH);
engine.setToClassPathSourceFactory();
// 支持模板热加载,绝大多数生产环境下也建议配置成 true,除非是极端高性能的场景
engine.setDevMode(true);
// 配置极速模式,性能提升 13%
Engine.setFastMode(true);
// jfinal 4.9.02 新增配置:支持中文表达式、中文变量名、中文方法名、中文模板函数名
Engine.setChineseExpression(true);
}
}
- EnjoyEngineConfigTest 读取 json 文件
package com.litongjava.ai.db.assistant.config;
import java.util.HashMap;
import java.util.Map;
import org.junit.BeforeClass;
import org.junit.Test;
import com.jfinal.template.Engine;
import com.jfinal.template.Template;
public class EnjoyEngineConfigTest {
@BeforeClass
public static void beforeClass() {
new EnjoyEngineConfig().config();
}
@Test
public void test() {
Engine engine = Engine.use();
Template template = engine.getTemplate("init_prompt.txt");
Map<String, String> values = new HashMap<>();
values.put("value", "postgresql");
String renderToString = template.renderToString(values);
System.out.println(renderToString);
}
}
init_prompt.txt
{
"messages":
[
{
"role": "system",
"content": "#include("init_prompt_message.txt")"
}
],
"functions":
[
{
"name": "find",
"description": "根据sql查询数据库",
"parameters":
{
"type": "object",
"properties":
{
"sql":
{
"description": "需要执行的sql语句",
"type": "string"
}
},
"required":
[
"sql"
]
}
}
]
}
init_prompt_message.txt
你是一名优秀的sql工程师,你可以根据用户的需求执行任何sql命令,你连接的数据库是 #(value)
最终返回 json 内容
{
"messages": [
{
"role": "system",
"content": "你是一名优秀的sql工程师,你可以根据用户的需求执行任何sql命令,你连接的数据库是 postgresql"
}
],
"functions": [
{
"name": "find",
"description": "根据sql查询数据库",
"parameters": {
"type": "object",
"properties": {
"sql": {
"description": "需要执行的sql语句",
"type": "string"
}
},
"required": ["sql"]
}
}
]
}
获取到上面的 json 之后就可以直接发送 json 到 chatgpt 进行推理