惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
U
Unit 42
T
Tailwind CSS Blog
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
云风的 BLOG
云风的 BLOG
博客园 - Franky
D
DataBreaches.Net
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Blog — PlanetScale
Blog — PlanetScale
Know Your Adversary
Know Your Adversary
宝玉的分享
宝玉的分享
V
Visual Studio Blog
AWS News Blog
AWS News Blog
NISL@THU
NISL@THU
I
Intezer
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
T
Tor Project blog
S
Securelist
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Recorded Future
Recorded Future
C
Cisco Blogs
P
Palo Alto Networks Blog
Hacker News: Ask HN
Hacker News: Ask HN
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Commits to openclaw:main
Recent Commits to openclaw:main
月光博客
月光博客
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
AI
AI
Cyberwarzone
Cyberwarzone
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
Scott Helme
Scott Helme
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Martin Fowler
Martin Fowler
量子位
L
LINUX DO - 热门话题
H
Heimdal Security Blog
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
博客园 - 【当耐特】

博客园 - cn2025

kubesphere-KDP 工具脚本【kubeSphere发布ruoyi-pro前端】20260720 HbuilderX 内置终端转为 gitBash 20260720 kubeSphere发布ruoyi-pro后端-用到脚本 kubeSphere发布ruoyi-web前端 20260711 kubeSphere发布ruoyi-pro后端 k8s集群-kubeShpere 20260710 安装Helm 20260710 k8s-portainer docker 镜像查询 k8集群一键重置 docker run OceanBase spring ai alibaba doc AI2.0 【多模态】 20260615 世界只有一个墨脱 AI2.0 【Mcp-client】 20260611 AI2.0 【Mcp-server】 20260611 GoLand 配Go SDK AI2.0 【redis向量-Rag】 问答顾问器QuestionAnswerAdvisor 20260608 AI2.0 【redis向量】redis-stack 20260608 AI2.0 【Embedding】嵌入模型 20260606 AI 工具 AI2.0 Tool调用20260604 AI2.0 对话chatMemory20260601 AI2.0 模型输出结构化【POJO、Record、List、Map 】20260530 AI2.0 Prompt【模板、流式 API、系统提示词】 20260529 AI2.0 自定义Advisor 20260528 AI2.0 ollama 20260528 AI2.0 dashscope-openai 20260527 ps 配Claude 20260527 spring-ai-alibaba-agent 260526 票务 Tool+Spring Security【动态tooLs:toolCallbacks】 20260525 spring-ai-alibaba-agent 260525 spring-ai-alibaba-agent 260523 票务 Tool参数幻觉 20260521 spring-ai-alibaba-agent 260521 ToolTemperature 温度过低,AI推算缺失自由度20260520 spring-ai-alibaba-agent 260520 票务Tool 20260519 票务助手 -多模型20260518 结构化输出 -原理【structuredconverter】20260518 spring-ai-alibaba-agent 260518 Dify 添加Ollma模型qwen2:0.5b 应用 20260516 docker 部【dify-api】/【dify-web】 20260514 Chatclient 结构化输出20260514 spring-ai-alibaba-agent 260514 Chatmemory 多层(近、中、长期)20260513 ChatmemoryRedis 历史对话存【REDIS】20260512 ChatmemoryJdbc 历史对话存【JDBC】20260511 spring-ai-alibaba-agent 260511 ChatmemoryConversationId 多用户对话记忆 20260508 spring-ai-alibaba-agent 260508 ChatmemoryMax 历史对话长度20260507 2026SE Chatmemory 对话记忆20260506 spring-ai-alibaba-agent 260506 ChatClientPrompt 自定义拦截器【ReReadingAdvisor】重读提示词 20260430 docker-apache/kafka:4.1.2部暑 集群20260423 ChatClientPrompt Template.st20260428 ChatClientPrompt Template20260427 sb-KafkaListener 20260425 docker-apache/kafka:4.1.2部暑 20260425 dashscope-sb ChatClientPrompt20260425 SBAI-MultiPlatformAndModel 20260424 PlatformModel SB-ChatClient-DeepSeekDashScopeOllamaModel 20260424 dashscope-sb ChatClient20260420 ollama-sb 多态 图转文 20260418 【gemma3:4b 解析慢】 dashscope-sb 多模态(图片、语音识别) 文生视频 ollama-sb 20260414 dashscope-sb 阿里百炼-文生图20260413 dashscope-sb20260413 dashscope-sb20260411 docker-zabbix 20260410 deepseek-sb20260408 MQTT20260403 spring-ai-alibaba-agent 260403 MqttTest 20260401 spring-ai-alibaba-agent 260401 docker安装 EMQX spring-ai-alibaba-agent 260331 MQTT 20260331 spring-ai-alibaba-agent 三大 Java 生态 AI Agent 框架 CentOS7-静态 IP centos-stream10 安装 百炼-工作流-sb sb-flink1.13.1-jdk8-分隔字符串 20260125
票务 Tool接口 / 方法 / 参数【无意义、可读、业务化、参数数量过多】 20260521
cn2025 · 2026-05-22 · via 博客园 - cn2025
    • 接口 / 方法 / 参数必须可读、业务化
      • AI 大模型是通过方法名、参数名、注释 / 描述来理解工具用途的,可读性差会导致它根本不会调用,或者调用时传错参数。
      • 避免乱码、无意义缩写(比如 dsadsafdasfda 这种),否则大模型无法理解参数含义。
    • 方法参数数量不宜过多
      • 建议单个工具方法的参数 ≤5 个,参数越多,大模型越难正确理解和填充,出错率指数级上升。

1、pom

  • <properties>
    <java.version>17</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>3.2.0</spring-boot.version>
    <spring-ai.version>1.0.0</spring-ai.version>
    <spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version>
    <jedis.version>5.2.0</jedis.version>
    </properties>
    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 阿里云通义千问(DashScope)starter -->
    <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    </dependency>
    <!--对话记忆 chat-memory-->
    <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-autoconfigure-model-chat-memory</artifactId>
    </dependency>
    </dependencies>
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <!-- 统一管理Spring AI依赖版本 -->
    <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-bom</artifactId>
    <version>${spring-ai.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-bom</artifactId>
    <version>${spring-ai-alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <!-- Spring AI 里程碑/快照仓库(必须配置,否则依赖无法下载) -->
    <repositories>
    <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
    <enabled>false</enabled>
    </releases>
    </repository>
    </repositories>

    2、yml

    server:
    port: 18086
    spring:
    ai:
    dashscope:
    api-key: sk-8718a83408d7443xxxxxxxxx
    3、service
    import org.springframework.stereotype.Service;

    //票务服务
    @Service
    public class TicketService {

    //退票
    public void cancel(String ticketNumber, String name) {
    // 实际业务逻辑:调用数据库/API执行退票
    System.out.println("退票成果");
    }
    }

     
    import org.springframework.ai.tool.annotation.Tool;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    @Service
    public class ToolService {

    @Autowired
    private TicketService ticketService;

    record cancelParam(String dsadsa,String fdasfda){}

    @Tool(description = "退票")
    public String cancel(cancelParam param) {
    ticketService.cancel(param.dsadsa(), param.fdasfda());
    return "退票成功!";
    }

    // record cancelParam(String mmmmmmmmmmqweqweqw,String oooooooooodsfsdds){}
    //
    // // @Tool告诉大模型提供了什么工具
    // @Tool(description = "根据订单号和乘客姓名办理机票退票业务,退票成功后会返还票款")
    // public String cancel(
    // //@ToolParam告诉大模型参数描述
    // cancelParam param) {
    // //先查询--->先校验
    // ticketService.cancel(param.mmmmmmmmmmqweqweqw(), param.oooooooooodsfsdds());
    // return "退票成功!";
    // }

    // record cancelParam(String ticketNumber,String name){}
    //
    // // @Tool告诉大模型提供了什么工具
    // @Tool(description = "退票")
    // public String cancel(
    // //@ToolParam告诉大模型参数描述
    // cancelParam param) {
    // //先查询--->先校验
    // ticketService.cancel(param.ticketNumber(), param.name());
    // return "退票成功!";
    // }

    // // @Tool告诉大模型提供了什么工具
    // @Tool(description = "退票")
    // public String cancel(
    // //@TooLParam告诉大模型参数的描述 加严参数描述与校验
    // @ToolParam(description = "预定号,可以是纯数字") String ticketNumber,
    // @ToolParam(description = "真实人名(必填,必须为人的真实姓名,严禁用其他信息代替如缺失请传null)") String name) {
    // // 后端代码加强校验和兜底保护
    // //先查询--->先校验
    // ticketService.cancel(ticketNumber, name);
    // return "退票成功!";
    // }

    }

    
    

    4、controller
    import com.sb.dashscope18086.service.ToolService;
    import org.springframework.ai.chat.client.ChatClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;

    /**
    * @author Administrator
    */
    @RequestMapping("/openai")
    @ResponseBody
    @Controller
    public class ChatclientToolController {

    @Autowired
    private ChatClient.Builder chatClientBuilder;
    //
    @Autowired
    private ToolService toolService;

    // ChatClient chatClient;
    //
    // public ChatclientToolController(ChatClient.Builder chatClientBuilder, ToolService toolService) {
    // chatClient= chatClientBuilder
    // .defaultTools(toolService)
    // .build();
    // }

    @GetMapping("/simple/tool5")
    public String tool5(
    @RequestParam(value = "message",
    defaultValue = "讲个笑话") String message
    ) {
    // // 构建ChatClient并调用
    ChatClient chatClient = chatClientBuilder
    //
    //系统Prompt设定限制
    .build();
    String content = chatClient.prompt()
    .user(message)
    .tools(toolService)//用 .tools() 替代 defaultTools()
    .call()
    .content();

    System.out.println(content);
    return content;
    }
    }

    
    

      http://localhost:18086/openai/simple/tool5?message=退票,12131231.李奇

    无意义参数

    image

    5.2
    http://localhost:18086/openai/simple/tool5?message=退票,12131231.李奇

    image

     

posted on 2026-05-22 10:35  cn2025  阅读(7)  评论()    收藏  举报