springai-Tool Calling

springai-Tool Calling

起男 37 2025-04-19

springai-Tool Calling

依赖

    <properties>
        <spring-ai.version>1.0.0-M6</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

配置

spring:
  ai:
    openai:
      api-key: sk-xxxx
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat

Tool

public class MyTool {

    @Tool(description = "获取当前时间")
    public String getDate(){
        return LocalDateTime.now().toString();
    }

    @Tool(description = "设置时间",returnDirect=true)//直接返回
    public void setDate(@ToolParam(description = "用中文年月日形式,如2020年10月10日") String date){
        System.out.println("设置时间为:"+date);
    }
}

controller

@RestController
@RequestMapping("ai")
public class AIController {

    private final ChatClient client;

    public AIController(ChatClient.Builder builder) {
        this.client = builder
                .defaultTools(new MyTool())
                .build();
    }

    @GetMapping(value = "chat/{message}",produces = "text/stream;charset=utf-8")
    public Flux<String> chat(@PathVariable String message){
        return client.prompt()
                .user(message)
                .stream()
                .content();
    }
}