yc-action-server
yc-action-server
What Is yc-action-server?
yc-action-server is a simple backend application. It is for function-call definition method implementation.
Feature Overview
1.yc-action-server adopts the java + groovy method. Except for the interface and class definitions, which are all java, the implementation methods of function-call are all completed by groovy scripts. The advantage of using a groovy script instead of a class is that the methods in the groovy script can be dynamically called at any time, so that you can respond to the continuously added methods of the upper-layer service function-call at any time.
2.yc-action-server now is a dependent jar. It can be used in any java project.
3.yc-action-server-example as a simple example. README
Change Log
- 2024-02-22
package yc-action-server as a dependent jar. And make an example yc-action-server-example.README
modify the pom file in yc-action-server and make a AutoConfiguration.
- First version
Start Up
1. execute sql, sql/20231016/yucong.sql
2. The configuration file is configured according to your own environment
3. Start Spring
Explanation
1.Table yc_function_groovy saves the groovy script name and script storage location corresponding to the function name. When the application reads the function defined by the function-call of the upper-layer service, Find the groovy script and call it.
2.The data table yc_function_execute_record records the records of function calls, including input parameters and returns.
3.When this application starts, ApplicationListener is set, reads the scripts under resources (including all groovy scripts) and places them at the specified groovy address (groovy_url of yc_function_groovy).
4.The original java class calling method is also retained in the application.
How To Use?
- Save groovy script definition
- Method: POST
- URL:
http://localhost:8180/yc/function/groovy/save - Headers: Content-Type:application/json
- Body:
{
"functionName": "get_current_weather",
"groovyName": "Weather.groovy",
"groovyUrl": "/home/scripts/weather/",
"userName": "yao"
}
- Response:
{
"success": true,
"code": null,
"msg": null,
"data": null
}
{
"success": false,
"code": null,
"msg": "data has existed",
"data": null
}
- Upload groovy script file to groovy url
- Method: POST
- URL:
http://localhost:8180/yc/function/groovy/scripts/upload - Headers: Content-Type:multipart/form-data
- Form-data:
file@
groovyUrl=/home/scripts/weather/
- Response:
{
"success": true,
"code": null,
"msg": null,
"data": null
}
{
"success": false,
"code": null,
"msg": "Groovy scripts not exist in yc_function_groovy, Weather.groovy",
"data": null
}
3.call execute
- Method: POST
- URL:
http://localhost:8180/yc/function/openai/execute - Headers:
Content-Type:application-json
userName: yao
accountId:
deviceId:
- Body:
{
"name": "get_current_weather",
"arguments": "{\"location\":\"Los Angeles\"}"
}
- Response:
{
"role": "function",
"content": "{\"Weather\":\"Sunny\",\"Temperature\":\"32\",\"UV index\":\"5\",\"Wind speed\":\"5m/s\",\"Air Quality Index\":\"30\",\"location\":\"Los Angeles\"}",
"name": "get_current_weather"
}
{
"role": "function",
"content": "{\"Error\":\"No location is provided, the user is required to specify the location.\"}",
"name": "get_current_weather"
}
