当前位置: 首页 > news >正文

【LangChain4J】Tools (Function Calling)工具调用

git地址

Tools官网介绍

https://docs.langchain4j.dev/tutorials/tools

底层API使用ToolSpecification

@Beanpublic FunctionAssistant functionAssistant(ChatModel chatModel){ToolSpecification specification = ToolSpecification.builder().name("开具发票助手").description("根据用户提供的开票信息,开具发票").parameters(JsonObjectSchema.builder().addStringProperty("name", "公司名称").addStringProperty("dutyNumber", "税号序列").addStringProperty("amount", "开票金额,保留2位有效数字").build()).build();ToolExecutor toolExecutor = (toolExecutionRequest,memoryId) -> {log.info("执行工具ID:{}",toolExecutionRequest.id());log.info("执行工具Name:{}",toolExecutionRequest.name());log.info("工具参数:{}",toolExecutionRequest.arguments());return "开具成功";};return AiServices.builder(FunctionAssistant.class).chatModel(chatModel).tools(Map.of(specification,toolExecutor)).build();}

高阶Api 实现访问互联网天气接口

 @Beanpublic WeatherAssistant weatherAssistant(ChatModel chatModel){return AiServices.builder(WeatherAssistant.class).chatModel(chatModel).tools(new WeatherTool()).build();}public interface WeatherAssistant {@SystemMessage("你是一个天气查询小助手,根据用户输入的天气问题,调用对应的function回答用户所问题天气,注意:你只回答天气相关的问题,其他问题直接回答'我只回答天气相关问题’")Result<String> ask(String question);
}public class WeatherTool {private static final String API_KEY = System.getenv("weather_api");private static final String BASE_URL = "https://nf2k5nq7wu.re.qweatherapi.com";@Tool(name = "实时天气", value = "获取中国3000+市县区和海外20万个城市实时天气数据,包括实时温度、体感温度、风力风向、相对湿度、大气压强、降水量、能见度、露点温度、云量等。")public JsonNode getWeatherV2(@P(value ="需要查询地区的LocationID或以英文逗号分隔的经度,纬度坐标(十进制,最多支持小数点后两位),LocationID可通过 城市搜索function获取。例如 location=101010100 或 location=116.41,39.92") String location) throws Exception {//1 传入调用地址url 和apikeyString url = String.format(BASE_URL+"/v7/weather/now?location=%s&key=%s", location, API_KEY);//2 使用默认配置创建HttpClient实例CloseableHttpClient httpClient = HttpClients.createDefault();//3 创建请求工厂并将其设置给RestTemplate,开启微服务调用和风天气开发服务HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);//4 RestTemplate微服务调用String response = new RestTemplate(factory).getForObject(url, String.class);//5 解析JSON响应获得第3方和风天气返回的天气预报信息JsonNode jsonNode = new ObjectMapper().readTree(response);//6 想知道具体信息和结果请查看https://dev.qweather.com/docs/api/weather/weather-now/#responsereturn jsonNode;}
}
http://www.jsqmd.com/news/125452/

相关文章:

  • nanoMODBUS 库
  • 【课程设计/毕业设计】基于springboot社区旧物回收系统基于springboot的旧物回收商城系统的设计与实现【附源码、数据库、万字文档】
  • VMware Workstation Pro 25H2的linux版本,免费分享,下载:全新命名体系 + 深度适配 Linux 内核,虚拟化效率拉满
  • NanoPB库:轻量级Protobuf实现
  • Vue核心特性01,Vue 组件基础:从定义到使用的完整指南
  • 贪心(一步步进阶)
  • YOLOv11 改进 - 注意力机制 | Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印
  • 基于RS-485的奇偶校验应用完整指南
  • 软件工程实践总结 —— 郑标铭
  • vxe-table 按多个列进行分组和按多个字段进行分组的使用方式
  • 站点回复管理系统
  • RNN/LSTM时序数据处理,从文本生成到股价预测
  • PyTorch在树莓派5上的人脸追踪实战应用详解
  • Eclipse JDT Core for Java Code Formatter
  • 102302136林伟杰_综合实践个人博客
  • ChatGPT可手动调温、谷歌推出 A2UI 标准、通义千问推出 Qwen-Image-Layered 模型、多智能体可信标准在ITU立项
  • 存储器介绍(2)
  • L298N如何提升智能小车运动精度?全面讲解
  • 哪些领域或行业可能会因为 AI 技术的应用而迎来爆发性的增长?
  • AI报告审核助手:首批数字员工的核心落地形态与技术演进
  • AI报告审核助手:首批数字员工的核心落地形态与技术演进
  • 102302110_高悦_综合实践个人总结报告
  • Java 将 PowerPoint 转换为 HTML:实现跨平台展示与Web集成
  • Windows Defender永久禁用:系统优化终极解决方案
  • SMC磁耦合式无杆缸清洁
  • 如何通过ERP系统提升服装公司的管理效率?
  • I2S硬件连接:入门必看的引脚分配说明
  • Hotkey Detective终极指南:3步解决Windows热键冲突难题
  • Java代码
  • 使用 Git LFS 管理大文件