AI+LangChain4j简单操作数据库全攻略

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);
    }

}
### 如何在Spring Boot项目中集成LangChain4J LangChain4J 是一种用于构建语言模型应用程序的框架,它提供了丰富的工具来处理自然语言生成、对话管理和其他相关功能。要在 Spring Boot 项目中集成 LangChain4J,可以按照以下方法实现。 #### 创建一个新的 Spring Boot 项目 如果尚未创建 Spring Boot 项目,则可以通过命令行使用 `spring init` 工具快速初始化一个新项目[^3]: ```bash spring init -d=web,actuator -n=langchain4j-springboot-integration langchain4j-springboot-integration ``` 此命令会生成一个基础的 Spring Boot 项目结构,并包含 Web 和 Actuator 功能模块。 #### 添加依赖项 为了支持 LangChain4J 的功能,在项目的 `pom.xml` 文件中添加必要的 Maven 或 Gradle 依赖项。以下是基于 Maven 的配置示例: ```xml <dependency> <groupId>com.langchain4j</groupId> <artifactId>langchain4j-core</artifactId> <version>0.1.0</version> <!-- 替换为最新版本 --> </dependency> <!-- 如果需要额外的功能,比如 OpenAI 集成 --> <dependency> <groupId>com.langchain4j</groupId> <artifactId>langchain4j-openai</artifactId> <version>0.1.0</version> <!-- 替换为最新版本 --> </dependency> ``` 对于 Gradle 用户,可以在 `build.gradle` 中添加类似的依赖项: ```gradle implementation 'com.langchain4j:langchain4j-core:0.1.0' // 替换为最新版本 implementation 'com.langchain4j:langchain4j-openai:0.1.0' // 可选,替换为最新版本 ``` #### 初始化 LangChain4J 组件 在 Spring Boot 应用程序中,通过定义 Bean 来初始化 LangChain4J 所需的核心组件。例如,假设要使用 OpenAI API 进行文本生成操作,可以这样设置: ```java import com.langchain4j.llm.openai.OpenAiLlm; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class LangChainConfig { @Bean public OpenAiLlm openAiLlm() { return OpenAiLlm.builder() .apiKey(System.getenv("OPENAI_API_KEY")) // 使用环境变量传递密钥 .modelName("gpt-3.5-turbo") // 设置使用的模型名称 .build(); } } ``` 在此配置类中,我们注入了一个名为 `openAiLlm` 的 Bean,该对象负责与 OpenAI 提供的语言模型交互。 #### 构建控制器以暴露 REST 接口 为了让外部客户端能够调用 LangChain4J 的功能,通常会在 Spring Boot 中设计一个 RESTful 控制器。下面是一个简单的例子,展示如何接收用户输入并返回由 AI 模型生成的结果: ```java import com.langchain4j.chain.ConversationChain; import com.langchain4j.memory.chat.ChatMemoryBuffer; import com.langchain4j.model.output.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/langchain") public class LangChainController { private final ConversationChain conversationChain; @Autowired public LangChainController(OpenAiLlm llm) { ChatMemoryBuffer memory = new ChatMemoryBuffer(); // 定义聊天记忆缓冲区 this.conversationChain = ConversationChain.from(llm).withChatMemory(memory); } @PostMapping("/generate") public String generateText(@RequestBody String input) { Response<String> response = conversationChain.call(input); // 调用链路生成响应 return response.getOutput(); } } ``` 上述代码片段展示了如何利用 LangChain4J 的 `ConversationChain` 类建立持续性的对话机制,并将其封装到 `/api/langchain/generate` HTTP POST 请求路径下。 #### 测试应用 完成以上步骤后,启动 Spring Boot 应用程序并通过 Postman 或其他工具发送请求测试接口是否正常工作。确保已正确设置了 OPENAI_API_KEY 环境变量以便访问远程服务。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值