多轮对话

This commit is contained in:
huangge1199 2025-05-17 15:55:09 +08:00
parent 5d06d1c264
commit 9ee7dcde3b
4 changed files with 62 additions and 2 deletions

View File

@ -19,4 +19,6 @@ public interface InvokeService {
String getMsgBySpringAi(String question);
String getMsgBySpringAiOllam(String question);
void moreMessages();
}

View File

@ -1,6 +1,8 @@
package com.huangge1199.aiagent.Service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
@ -16,6 +18,9 @@ import com.alibaba.dashscope.exception.NoApiKeyException;
import com.huangge1199.aiagent.Service.InvokeService;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Qualifier;
@ -121,4 +126,42 @@ public class InvokeServiceImpl implements InvokeService {
.getOutput();
return output.getText();
}
@Override
public void moreMessages() {
List<org.springframework.ai.chat.messages.Message> messages = new ArrayList<>();
//第零轮对话
messages.add(new SystemMessage("你是一个旅游规划师"));
messages.add(new UserMessage("你是谁?"));
ChatResponse response = ollamaChatModel.call(new Prompt(messages));
String content = response.getResult().getOutput().getText();
System.out.printf("第零轮: %s\n", content);
messages.add(new AssistantMessage(content));
//第一轮对话
messages.add(new UserMessage("我想去新疆"));
response = ollamaChatModel.call(new Prompt(messages));
content = response.getResult().getOutput().getText();
System.out.printf("第一轮: %s\n", content);
messages.add(new AssistantMessage(content));
//第二轮对话
messages.add(new UserMessage("能帮我推荐一些旅游景点吗?"));
response = ollamaChatModel.call(new Prompt(messages));
content = response.getResult().getOutput().getText();
System.out.printf("第二轮: %s\n", content);
messages.add(new AssistantMessage(content));
//第三轮对话
messages.add(new UserMessage("那里这两天的天气如何?"));
response = ollamaChatModel.call(new Prompt(messages));
content = response.getResult().getOutput().getText();
System.out.printf("第三轮: %s\n", content);
}
}

View File

@ -71,4 +71,10 @@ public class InvokeController {
return R.fail(e.getMessage());
}
}
@PostMapping("/moreMessages")
@Operation(summary = "多轮对话")
public void moreMessages() {
invokeService.moreMessages();
}
}

View File

@ -11,7 +11,7 @@ spring:
ollama:
base-url: http://192.168.188.2:11435
chat:
model: gemma3:1b
model: DeepSeek-R1-Distill-Qwen-1.5B:latest
server:
port: 8123
servlet:
@ -32,4 +32,13 @@ springdoc:
knife4j:
enable: true
setting:
language: zh_cn
language: zh_cn
logging:
level:
org:
springframework:
ai:
chat:
client:
advisor: DEBUG