PPT全方位辅助系统-项目记录7

实现了在小组的spring boot项目中使用Java项目的对话功能。

原本想的是把对话的Java项目整个改成spring boot的代码,但是我对spring boot还不是很熟悉,进行起来很艰难。然后想到了把Java对话项目打个jar包,再在spring boot项目里导入这个jar包,去调用它。具体步骤如下:

1.打包:在Java对话项目的maven中以此运行Lifecircle的clean和package。

2.加入依赖:

在Java项目源码文件夹找到target,把生成的jar包复制到spring boot源码文件夹的libs文件夹下,并在pom.xml添加依赖。

<dependency>
    <groupId>top.pulselink</groupId>
    <artifactId>bluechatglm</artifactId>
    <version>0.1.1-Beta</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/lib/bluechatglm-0.1.1-Beta-jar-with-dependencies.jar</systemPath>
</dependency>

这里的${project.basedir}是pom文件所在的目录。

3.创建服务类并调用Jar包中的类

@Service
public class ChatService {

    private ChatClient chatClient;

    // 初始化 ChatClient
    public ChatService() {
        String apiKey = loadApiKey();
        if (apiKey == null) {
            throw new IllegalStateException("API key is required");
        }
        this.chatClient = new ChatClient(apiKey);
        this.chatClient.registerShutdownHook();
    }

    private String loadApiKey() {
        // 从文件中加载 API key 的逻辑
        // 请确保 API key 文件的路径正确,并且文件存在
        try (BufferedReader reader = new BufferedReader(new FileReader("chatglm_api_key.txt"))) {
            return reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public String sendAsyncMessage(String message) {
        chatClient.registerShutdownHook();
        chatClient.AsyncInvoke(message);
        return chatClient.getResponseMessage();
    }

    public String sendSyncMessage(String message) {
        chatClient.SyncInvoke(message);
        return chatClient.getResponseMessage();
    }

    public String sendSSEMessage(String message) {
        chatClient.SSEInvoke(message);
        return chatClient.getResponseMessage();
    }
}

4.创建控制器

创建一个Spring Boot控制器来处理HTTP请求,并通过服务类调用现有的Java代码。

@RestController
@RequestMapping("/chat")
public class ChatController {

    @Autowired
    private ChatService chatService;

    @PostMapping("/async")
    public String sendAsyncMessage(@RequestBody String message) {
        return chatService.sendAsyncMessage(message);
    }

    @PostMapping("/sync")
    public String sendSyncMessage(@RequestBody String message) {
        return chatService.sendSyncMessage(message);
    }

    @PostMapping("/sse")
    public String sendSSEMessage(@RequestBody String message) {
        return chatService.sendSSEMessage(message);
    }
}

5.运行Spring Boot应用

运行Spring Boot应用后,可以通过HTTP请求与现有的Java项目进行交互。例如,可以使用curl发送请求进行对话:

其中“--data-urlencode”是为了使cmd能够正确处理中文编码,进行中文对话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值