springboot openai 调用functioncall

引入alibaba百炼

复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>

配置文件

复制代码
spring.ai.openai.api-key=sk-b344XXXX
spring.ai.openai.chat.options.model=qwen3-max
spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode
logging.level.org.springframework.ai=debug

注意baseurl跟aliyun给的不太一样,去掉v1

写一个tool交由ioc容器管理

复制代码
package com.example.demo;

import cn.hutool.core.map.MapUtil;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
public class FunctionTool {

    @Tool(description = "根据姓名获取用户的分数,输入姓名,返回分数,没查询到用户返回-1")
    public Integer getScore(@ToolParam(description = "用户姓名")String name) {

        Map<String, Integer> map = MapUtil.<String,Integer>builder().put("zhangsan", 11).put("lisi", 12).build();
        if(map.containsKey(name))
            return map.get(name);


        return -1;
    }
}

写个测试接口

复制代码
    public String index(String prompt,FunctionTool functionTool){
        return chatClient.prompt(prompt)
                .tools(functionTool)
                .call()
                .content();
    }

有bug 不要用flux返回流式

测试

成功

相关推荐
Full Stack Developme2 分钟前
Apache Tika 教程
java·开发语言·python·apache
鹅城剑仙7 分钟前
Spring Boot 微服务架构设计与最佳实践
spring boot·后端·微服务
鹅城剑仙17 分钟前
Java线程池完全指南
java
李白的天不白19 分钟前
SmartAdmin(基于 Spring Boot 框架)中配置跨域请求 VUE3 设置请求头
java·前端
橙子进阶之路21 分钟前
Java线程(CompletableFuture)
java·开发语言
鹅城剑仙29 分钟前
Java CompletableFuture 异步编程完全指南
java
2601_9618752432 分钟前
法考备考计划表|学习计划|资料已整理
java·开发语言·学习·eclipse·tomcat·c#·hibernate
重生之我是Java开发战士42 分钟前
【Java SE】多线程(三):单例模式,阻塞队列,线程池与定时器
java·javascript·单例模式
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第115题】【并发篇】第15题:说一下悲观锁和乐观锁的区别?
java·开发语言·面试
无聊的老谢1 小时前
基于 Spring Batch 的电信 MR 数据亿级记录清洗实战
spring·batch·mr