Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
poc-api
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
poc
poc-api
Commits
7a9c34cc
Commit
7a9c34cc
authored
Mar 21, 2025
by
alex yao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: Function新增计算器
parent
42957881
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
90 additions
and
1 deletion
+90
-1
pom.xml
pom.xml
+6
-0
RedisKeyExpiredListener.java
...a/cn/com/poc/common/listener/RedisKeyExpiredListener.java
+1
-1
CalculatorFunction.java
...rce/demand/ai/function/calculator/CalculatorFunction.java
+58
-0
AviatorFunctionTest.java
...arty/resource/demand/ai/function/AviatorFunctionTest.java
+25
-0
No files found.
pom.xml
View file @
7a9c34cc
...
...
@@ -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>
...
...
src/main/java/cn/com/poc/common/listener/RedisKeyExpiredListener.java
View file @
7a9c34cc
...
...
@@ -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
());
...
...
src/main/java/cn/com/poc/thirdparty/resource/demand/ai/function/calculator/CalculatorFunction.java
0 → 100644
View file @
7a9c34cc
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
();
}
}
src/test/java/cn/com/poc/thirdparty/resource/demand/ai/function/AviatorFunctionTest.java
0 → 100644
View file @
7a9c34cc
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
());
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment