增加 defaultPromptTemplate 默认问题回答模板参数

This commit is contained in:
thinkgem
2025-05-12 11:24:04 +08:00
parent c3e2f6fabb
commit bc15521b3a
3 changed files with 41 additions and 16 deletions

View File

@@ -9,6 +9,8 @@ public class CmsAiProperties {
private String defaultSystem = ""; private String defaultSystem = "";
private String defaultPromptTemplate = "";
public Boolean getToolCalls() { public Boolean getToolCalls() {
return toolCalls; return toolCalls;
} }
@@ -24,4 +26,12 @@ public class CmsAiProperties {
public void setDefaultSystem(String defaultSystem) { public void setDefaultSystem(String defaultSystem) {
this.defaultSystem = defaultSystem; this.defaultSystem = defaultSystem;
} }
public String getDefaultPromptTemplate() {
return defaultPromptTemplate;
}
public void setDefaultPromptTemplate(String defaultPromptTemplate) {
this.defaultPromptTemplate = defaultPromptTemplate;
}
} }

View File

@@ -10,6 +10,7 @@ import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.DateUtils; import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.StringUtils; import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.BaseService; import com.jeesite.common.service.BaseService;
import com.jeesite.modules.cms.ai.properties.CmsAiProperties;
import com.jeesite.modules.sys.utils.UserUtils; import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.ChatClient;
@@ -21,6 +22,7 @@ import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.model.Generation; import org.springframework.ai.chat.model.Generation;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.SearchRequest;
import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -49,6 +51,8 @@ public class CmsAiChatService extends BaseService {
private ChatMemory chatMemory; private ChatMemory chatMemory;
@Autowired @Autowired
private VectorStore vectorStore; private VectorStore vectorStore;
@Autowired
private CmsAiProperties properties;
/** /**
* 获取聊天对话消息 * 获取聊天对话消息
@@ -116,7 +120,10 @@ public class CmsAiChatService extends BaseService {
) )
.advisors( .advisors(
new MessageChatMemoryAdvisor(chatMemory, conversationId, 1024), new MessageChatMemoryAdvisor(chatMemory, conversationId, 1024),
new QuestionAnswerAdvisor(vectorStore, SearchRequest.builder().similarityThreshold(0.6F).topK(6).build()) QuestionAnswerAdvisor.builder(vectorStore)
.searchRequest(SearchRequest.builder().similarityThreshold(0.6F).topK(6).build())
.promptTemplate(new PromptTemplate(properties.getDefaultPromptTemplate()))
.build()
) )
.stream() .stream()
.chatResponse() .chatResponse()

View File

@@ -5,18 +5,18 @@ spring:
# 在线大模型【请在 pom.xml 中打开 openai 的注释,并注释上其它模型】 # 在线大模型【请在 pom.xml 中打开 openai 的注释,并注释上其它模型】
openai: openai:
base-url: https://api.siliconflow.cn # base-url: https://api.siliconflow.cn
api-key: ${SFLOW_APP_KEY} # api-key: ${SFLOW_APP_KEY}
#base-url: https://ai.gitee.com # base-url: https://ai.gitee.com
#api-key: ${GITEE_APP_KEY} # api-key: ${GITEE_APP_KEY}
#base-url: https://dashscope.aliyuncs.com/compatible-mode base-url: https://dashscope.aliyuncs.com/compatible-mode
#api-key: ${BAILIAN_APP_KEY} api-key: ${BAILIAN_APP_KEY}
# 聊天对话模型 # 聊天对话模型
chat: chat:
options: options:
model: deepseek-ai/DeepSeek-R1-Distill-Qwen-7B # model: deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
#model: DeepSeek-R1-Distill-Qwen-14B # model: DeepSeek-R1-Distill-Qwen-14B
#model: deepseek-r1-distill-llama-8b model: deepseek-r1-distill-llama-8b
max-tokens: 1024 max-tokens: 1024
temperature: 0.6 temperature: 0.6
top-p: 0.9 top-p: 0.9
@@ -25,11 +25,11 @@ spring:
# 向量库知识库模型(注意:不同的模型维度不同) # 向量库知识库模型(注意:不同的模型维度不同)
embedding: embedding:
options: options:
model: BAAI/bge-m3 # model: BAAI/bge-m3
#model: bge-large-zh-v1.5 # model: bge-large-zh-v1.5
dimensions: 512 # dimensions: 512
#model: text-embedding-v3 model: text-embedding-v3
#dimensions: 1024 dimensions: 1024
# 本地大模型配置【请在 pom.xml 中打开 ollama 的注释,并注释上其它模型】 # 本地大模型配置【请在 pom.xml 中打开 ollama 的注释,并注释上其它模型】
ollama: ollama:
@@ -113,6 +113,14 @@ spring:
3. 可以用少量表情,避免过多表情。 3. 可以用少量表情,避免过多表情。
4. 增加互动,如 “您的看法如何?” 4. 增加互动,如 “您的看法如何?”
# 默认问题回答模板
default-prompt-template: |
上下文信息如下,用---------------------符号标出:
---------------------
{question_answer_context}
---------------------
在提供上下文和历史信息的基础上,并且不使用先前知识的前提下回答用户的问题。
如果问题的答案不在上下文中,请告知用户你无法回答该问题。
# ========= Postgresql 向量数据库数据源 ========= # ========= Postgresql 向量数据库数据源 =========