当前位置: 首页 > 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.zskr.cn/news/137879.html

相关文章:

  • 基于RS-485的奇偶校验应用完整指南
  • Vue核心特性01,Vue 组件基础:从定义到使用的完整指南
  • vxe-table 按多个列进行分组和按多个字段进行分组的使用方式
  • 软件工程实践总结 —— 郑标铭
  • Eclipse JDT Core for Java Code Formatter
  • 哪些领域或行业可能会因为 AI 技术的应用而迎来爆发性的增长?
  • Java 将 PowerPoint 转换为 HTML:实现跨平台展示与Web集成
  • SMC磁耦合式无杆缸清洁
  • I2S硬件连接:入门必看的引脚分配说明
  • 基于java的SpringBoot/SSM+Vue+uniapp的新能源汽车服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 2025写文盘点:为了不被日更逼疯,我亲测了10款主流【ai写小说】工具
  • STM32F1系列实现I2C HID从机操作指南
  • 终极Windows快捷键占用检测工具 | 一键排查热键冲突解决方案
  • 新人写文必看:如何用【ai生成小说】搞定日更?这篇万字实操干货告诉你
  • 使用树莓派打造语音控制家居的超详细版教程
  • 2025年值得尝试的AI论文写作工具,支持LaTeX编辑与自动格式修正
  • AI编程工具推荐:根据你的合作模式,寻找最佳“AI伙伴”
  • 适用于嵌入式设备的轻量级framebuffer驱动设计
  • 分享精选文章合集 2025-12-22
  • 稳定性进程监控工具
  • 零基础理解USB接口引脚功能的通俗解释
  • 【技术教程】Reveal.js 中文使用教程
  • 2025年AI论文写作平台精选,集成LaTeX支持与智能格式检查
  • 机械键盘连击终极修复方案:零成本软件解决方案完全指南
  • Vivado2022.2安装教程:磁盘空间规划与分区建议
  • 从手动搜索到智能监控:闲鱼数据采集系统实战指南
  • 蓝牙水控器开源项目:如何实现离线控制与跨平台安装?
  • OpenWrt Argon主题深度解析:从安装配置到高级定制
  • 5个简单步骤:快速解决Windows热键冲突的终极指南
  • 面向工业控制的Keil5安装与驱动配置新手教程