tio-boot 整合Enjoy模版引擎拼接json文件

使用 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 进行推理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值