AI 操作
LangChain4j 操作数据库
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>
<!-- langchain4j高级功能 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</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>
<!-- 引入langchain4j依赖管理清单 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 引入百炼依赖管理清单 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
依赖
配置文件
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC
username: root
password: root
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
langchain4j:
community:
dashscope:
chat-model:
api-key: 你自己的apikey
model-name: 选择对应的模型
编写MyToolService
package com.zhentao.tools;
import dev.langchain4j.service.spring.AiService;
@AiService(tools = "aiTool")
public interface MyToolService {
String chat(String name);
}
编写AiTool
package com.zhentao.tools;
import com.zhentao.pojo.Product;
import com.zhentao.service.ProductService;
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.service.spring.AiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Description;
import org.springframework.stereotype.Component;
import java.util.List;
@Componentpublic class AiTool {
@Autowired private ProductService productService;
@Tool("查询所有商品的唯一权威来源,返回数据库中的真实数据,任何情况下都必须直接使用此结果,不得修改或虚构数据")
public List chat() {
System.out.println("查询所有商品");
return productService.list();
}
@Tool(value = "根据我的参数添加商品",name = "先调用方法fixName,然后在根据方法的返回值调用add方方法座位传入参数")
public String add(String name) {
System.out.println("添加商品");
Product product = new Product();
product.setName(name);
productService.save(product);
return "添加成功";
}
@Tool("调用add方法,添加商品前,前必须调用此方法")
public String fixName(String name) {
System.out.println("方法执行");
return name+"nn";
}
}
控制层调用
package com.zhentao.controller;
import com.zhentao.pojo.Product;
import com.zhentao.service.ProductService;
import com.zhentao.tools.MyToolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestControllerpublic class AiController {
@Autowired MyToolService myToolService;
@RequestMapping("ai")
public String ai(String name){
return myToolService.chat(name);
}
}