当前位置: 首页> 汽车> 维修 > 公众号开发设计费用_建立网站底线_如何制作网页游戏_什么是seo关键词

公众号开发设计费用_建立网站底线_如何制作网页游戏_什么是seo关键词

时间:2025/7/10 3:02:04来源:https://blog.csdn.net/hello_ejb3/article/details/146485718 浏览次数: 1次
公众号开发设计费用_建立网站底线_如何制作网页游戏_什么是seo关键词

本文主要研究一下langchain4j的Code Execution Engine

步骤

pom.xml

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-code-execution-engine-graalvm-polyglot</artifactId><version>1.0.0-beta2</version>
</dependency>

example

    @Testvoid should_execute_tool() {GraalVmJavaScriptExecutionTool tool = new GraalVmJavaScriptExecutionTool();Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(model).tools(tool).chatMemory(MessageWindowChatMemory.withMaxMessages(10)).build();String answer = assistant.chat("What is the square root of 485906798473894056 in scientific notation?");assertThat(answer).contains("6.97");}

这里给assistant设置GraalVmJavaScriptExecutionTool,输出示例:

2025-03-24T20:26:30.533+08:00 DEBUG 67097 --- [           main] d.l.service.tool.DefaultToolExecutor     : About to execute ToolExecutionRequest { id = null, name = "executeJavaScriptCode", arguments = "{"arg0" : "Math.sqrt(485906798473894056).toExponential()"
}" } for memoryId default
2025-03-24T20:26:31.686+08:00 DEBUG 67097 --- [           main] d.l.service.tool.DefaultToolExecutor     : Tool execution result: 6.97070153193991e+8

源码

CodeExecutionEngine

dev/langchain4j/code/CodeExecutionEngine.java

public interface CodeExecutionEngine {/*** Execute the given code.** @param code The code to execute.* @return The result of the execution.*/String execute(String code);
}

langchain4j定义了CodeExecutionEngine接口,该接口定义了execute方法用于执行指定的代码,langchain4j-code-execution-engine-graalvm-polyglot模块提供了两个实现,分别是GraalVmPythonExecutionEngine、GraalVmJavaScriptExecutionEngine

GraalVmPythonExecutionEngine

dev/langchain4j/code/graalvm/GraalVmPythonExecutionEngine.java

public class GraalVmPythonExecutionEngine implements CodeExecutionEngine {@Overridepublic String execute(String code) {OutputStream outputStream = new ByteArrayOutputStream();try (Context context = Context.newBuilder("python").sandbox(TRUSTED).allowHostAccess(UNTRUSTED).out(outputStream).err(outputStream).build()) {Object result = context.eval("python", code).as(Object.class);return String.valueOf(result);}}
}

GraalVmPythonExecutionEngine的execute方法使用GraalVM Polyglot/ Truffle来执行python代码

GraalVmJavaScriptExecutionEngine

dev/langchain4j/code/graalvm/GraalVmJavaScriptExecutionEngine.java

public class GraalVmJavaScriptExecutionEngine implements CodeExecutionEngine {@Overridepublic String execute(String code) {OutputStream outputStream = new ByteArrayOutputStream();try (Context context = Context.newBuilder("js").sandbox(CONSTRAINED).allowHostAccess(UNTRUSTED).out(outputStream).err(outputStream).build()) {Object result = context.eval("js", code).as(Object.class);return String.valueOf(result);}}
}

GraalVmJavaScriptExecutionEngine的execute方法使用GraalVM Polyglot/ Truffle来执行JavaScript代码

GraalVmPythonExecutionTool

dev/langchain4j/agent/tool/graalvm/GraalVmPythonExecutionTool.java

public class GraalVmPythonExecutionTool {private final CodeExecutionEngine engine = new GraalVmPythonExecutionEngine();@Tool("MUST be used for accurate calculations: math, sorting, filtering, aggregating, string processing, etc")public String executePythonCode(@P("Python code to execute, result MUST be returned by the code") String code) {return engine.execute(code);}
}

GraalVmPythonExecutionTool实例化了GraalVmPythonExecutionEngine,其executePythonCode方法标注了@Tool注解表示该tool用于精确的计算,比如数学计算、排序、过滤、聚合、字符串处理等

GraalVmJavaScriptExecutionTool

dev/langchain4j/agent/tool/graalvm/GraalVmJavaScriptExecutionTool.java

public class GraalVmJavaScriptExecutionTool {private final CodeExecutionEngine engine = new GraalVmJavaScriptExecutionEngine();@Tool("MUST be used for accurate calculations: math, sorting, filtering, aggregating, string processing, etc")public String executeJavaScriptCode(@P("JavaScript code to execute, result MUST be returned by the code") String code) {return engine.execute(code);}
}

GraalVmJavaScriptExecutionTool实例化了GraalVmJavaScriptExecutionEngine,其executeJavaScriptCode方法标注了@Tool注解表示该tool用于精确的计算,比如数学计算、排序、过滤、聚合、字符串处理等

小结

langchain4j定义了CodeExecutionEngine接口,该接口定义了execute方法用于执行指定的代码;langchain4j-code-execution-engine-graalvm-polyglot模块提供了两个实现,分别是GraalVmPythonExecutionEngine、GraalVmJavaScriptExecutionEngine,该模块提供了GraalVmPythonExecutionTool、GraalVmJavaScriptExecutionTool,通过@Tool注解来表示该tool用于精确的计算,比如数学计算、排序、过滤、聚合、字符串处理等。

doc

  • code-execution-engines/graalvm-polyglot
关键字:公众号开发设计费用_建立网站底线_如何制作网页游戏_什么是seo关键词

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: