package com.rj.service; import com.alibaba.dashscope.aigc.generation.GenerationResult; import com.rj.common.AudioAnalysisSceneType; import com.rj.common.LocalLlmSummaryResult; import com.rj.entity.AudioTextAnalysisFurniture; /** * 音频文本分析 - 大模型通用服务 *

* 封装不同业务场景下的大模型调用逻辑(提示词加载、模型选择等), * 控制层只需要关心场景类型和原始录音文本。 *

*/ public interface IAudioTextAnalysisLlmService { /** * 调用大模型生成总结/结构化结果(通用方法) * * @param sceneType 业务场景类型(家具、会议、房产等) * @param recordingText 录音转写文本 * @return 大模型返回的原始内容(一般是 JSON 字符串或结构化文本) */ GenerationResult generateSummaryByLLM(AudioAnalysisSceneType sceneType, String recordingText); /** * 与 {@link #generateSummaryByLLM} 相同的提示词与场景逻辑,但通过本地 OpenAI 兼容接口调用大模型 * (配置项与客户问答本地模型一致:{@code ai.qa.local.chat-url}、{@code ai.qa.local.default-model}、{@code ai.qa.local.max-tokens}; * 另支持 {@code ai.qa.local.context-length}、{@code ai.qa.local.token-margin}、{@code ai.qa.local.min-output-tokens}、{@code ai.qa.local.input-tokens-per-char} 以避免超出本地模型上下文。) * * @param sceneType 业务场景类型 * @param recordingText 录音转写文本 * @return 大模型返回的原始内容及 token 用量(若接口未返回 usage 则对应字段可能为 null) */ LocalLlmSummaryResult generateSummaryByLocalLLM(AudioAnalysisSceneType sceneType, String recordingText); /** * 处理完整的业务逻辑:调用大模型生成总结,解析JSON,保存数据 * 此方法用于家具场景的完整业务处理 * * @param sceneType 业务场景类型 * @param recordingText 录音转写文本 * @param parentId 父ID(AudioManagement的ID) * @param ownerName 所属人姓名 * @param ownerPhone 所属人电话 * @param customerName 客户姓名 * @param customerPhone 客户电话 * @return 保存后的AudioTextAnalysisFurniture对象,如果处理失败返回null */ AudioTextAnalysisFurniture generateSummaryAndSave( AudioAnalysisSceneType sceneType, String recordingText, String parentId, String ownerName, String ownerPhone, String customerName, String customerPhone); /** * 处理完整的业务逻辑:调用大模型生成总结,解析JSON,保存数据 * 此方法用于家具场景的完整业务处理 * * @param sceneType 业务场景类型 * @param recordingText 录音转写文本 * @param parentId 父ID(AudioManagement的ID) * @param ownerName 所属人姓名 * @param ownerPhone 所属人电话 * @param customerName 客户姓名 * @param customerPhone 客户电话 * @return 保存后的AudioTextAnalysisFurniture对象,如果处理失败返回null */ AudioTextAnalysisFurniture generateSummaryAndSave_V2( AudioAnalysisSceneType sceneType, String recordingText, String parentId, String ownerName, String ownerPhone, String customerName, String customerPhone); AudioTextAnalysisFurniture generateSummaryAndSaveForDetail( AudioAnalysisSceneType sceneType, String recordingText, String parentId, String ownerName, String ownerPhone, String customerName, String customerPhone); }