package org.dromara.chat.service;

import org.dromara.chat.domain.vo.ChatMessageVo;
import org.dromara.chat.domain.vo.ChatSessionVo;

import java.util.List;

/**
 * 知识库聊天服务接口
 *
 * @author pengles
 */
public interface AiKnowledgeChatService {

    /**
     * 基于知识库进行智能问答
     *
     * @param sessionId   会话ID
     * @param userId      用户ID
     * @param question    用户问题
     * @param knowledgeId 知识库ID
     * @param modelName   使用的模型名称
     * @return 聊天回复消息
     */
    ChatMessageVo chatWithKnowledge(Long sessionId, Long userId, String question, Long knowledgeId, String modelName);

    /**
     * 创建知识库聊天会话
     *
     * @param userId       用户ID
     * @param knowledgeId  知识库ID
     * @param sessionTitle 会话标题
     * @return 聊天会话
     */
    ChatSessionVo createKnowledgeSession(Long userId, Long knowledgeId, String sessionTitle);

    /**
     * 搜索相关知识库内容
     *
     * @param knowledgeId 知识库ID
     * @param query       查询内容
     * @param limit       返回数量限制
     * @return 相关知识库内容列表
     */
    List<String> searchKnowledgeContent(Long knowledgeId, String query, Integer limit);

    /**
     * 构建知识库上下文
     *
     * @param knowledgeId 知识库ID
     * @param question    用户问题
     * @return 构建的上下文内容
     */
    String buildKnowledgeContext(Long knowledgeId, String question);

    /**
     * 获取知识库聊天历史
     *
     * @param sessionId 会话ID
     * @param limit     返回数量限制
     * @return 聊天历史消息列表
     */
    List<ChatMessageVo> getKnowledgeChatHistory(Long sessionId, Integer limit);

}