Commit 7a9c34cc authored by alex yao's avatar alex yao

feat: Function新增计算器

parent 42957881
......@@ -353,6 +353,12 @@
<version>0.62.2</version>
</dependency>
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>aviator</artifactId>
<version>5.0.1</version>
</dependency>
</dependencies>
......
......@@ -20,7 +20,7 @@ import java.util.List;
* @author Helen
* @date 2021/11/12 14:46
*/
@Component
//@Component
public class RedisKeyExpiredListener extends KeyExpirationEventMessageListener {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
......
package cn.com.poc.thirdparty.resource.demand.ai.function.calculator;
import cn.com.poc.agent_application.entity.Variable;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.thirdparty.resource.demand.ai.function.AbstractFunctionResult;
import cn.com.poc.thirdparty.resource.demand.ai.function.AbstractLargeModelFunction;
import cn.com.poc.thirdparty.resource.demand.ai.function.entity.FunctionLLMConfig;
import cn.com.poc.thirdparty.resource.demand.ai.function.entity.Parameters;
import cn.com.poc.thirdparty.resource.demand.ai.function.entity.Properties;
import cn.hutool.core.collection.ListUtil;
import com.alibaba.fastjson.JSONObject;
import com.googlecode.aviator.AviatorEvaluator;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author alex.yao
* @date 2025/3/21
*/
@Component
public class CalculatorFunction extends AbstractLargeModelFunction {
private final String DESC = "该方法是计算算术表达式,如 12/(7-1.0)";
private final FunctionLLMConfig functionLLMConfig = new FunctionLLMConfig.FunctionLLMConfigBuilder()
.name("calculator")
.description(DESC)
.parameters(new Parameters("object")
.addProperties("arithmetic_expression", new Properties("string", "算术表达式,需要精确的算术表达式如6的平方为 6^2")))
.build();
@Override
public AbstractFunctionResult<String> doFunction(String content, String identifier) {
JSONObject jsonObject = JSONObject.parseObject(content);
String arithmeticExpression = jsonObject.getString("arithmetic_expression");
String answer = AviatorEvaluator.compile(arithmeticExpression).execute().toString();
AbstractFunctionResult<String> result = new AbstractFunctionResult<String>();
result.setPromptContent(answer);
result.setFunctionResult(answer);
return result;
}
@Override
public String getDesc() {
return DESC;
}
@Override
public List<String> getLLMConfig() {
return ListUtil.toList(JsonUtils.serialize(functionLLMConfig));
}
@Override
public List<String> getLLMConfig(List<Variable> variableStructure) {
return this.getLLMConfig();
}
}
package cn.com.poc.thirdparty.resource.demand.ai.function;
import cn.com.poc.thirdparty.resource.demand.ai.function.calculator.CalculatorFunction;
import cn.com.yict.framemax.core.spring.SingleContextInitializer;
import com.googlecode.aviator.AviatorEvaluator;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
/**
* @author alex.yao
* @date 2025/3/21
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(initializers = SingleContextInitializer.class)
@WebAppConfiguration
public class AviatorFunctionTest {
@Test
public void test_aviator() {
System.out.println(AviatorEvaluator.compile("6^2").execute().toString());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment