本次更新

在后端文件ArtifactControllermatchArtifact接口方法中,实现了针对不同用户模式对文物图片识别结果进行个性化润色的功能。

使用示例

假设用户上传了一张白釉加彩女俑的图片:

在这里插入图片描述

专业模式

在这里插入图片描述

在这里插入图片描述

普通模式

在这里插入图片描述

在这里插入图片描述

教育模式

在这里插入图片描述

在这里插入图片描述

AI润色超时:返回原始识别结果

在这里插入图片描述

主要流程

  1. 接收请求参数

    • 方法接收一个MatchRequest对象,包含imageUrl(图片URL)和mode(模式,默认为"normal")
    • 使用@RequestBody注解将JSON请求体自动映射到Java对象
  2. 调用Python服务进行文物匹配

    • 通过pythonService.matchArtifact()方法获取文物匹配结果
    • 如果匹配失败,直接返回错误信息
  3. 构建基础文本

    • 从匹配结果中提取文物名称、描述和匹配度分数
    • 使用String.format()构建基础响应文本,包含文物基本信息
  4. 根据模式生成不同提示词

    • 这是实现个性化润色的核心部分
    • 根据mode参数生成不同的AI提示词(prompt)
    • 支持三种模式:“professional”(专业)、“normal”(普通)、“education”(教育)
  5. 调用AI服务进行润色

    • 使用线程池和Future实现超时控制(1分钟超时)
    • 通过aiService.getAIResponse()获取AI生成的润色结果
  6. 处理结果返回

    • 优先返回AI润色后的结果
    • 如果AI服务超时或出错,返回原始文本作为备用
    • 确保线程池被正确关闭

个性化润色实现细节

模式处理逻辑

switch (mode) {
    case "professional":
        prompt = "你是一位专业的文物鉴定专家,请用专业术语对以下文物识别结果进行润色和补充说明:\n\n" + responseText;
        break;
    case "normal":
        prompt = "请用通俗易懂的语言,简单明了地解释以下文物信息,适合普通观众理解:\n\n" + responseText;
        break;
    case "education":
        prompt = "请将以下文物信息润色一下,使其适合向儿童或学生讲述(但是一定要正确说明文物的基本信息):\n\n" + responseText;
        break;
    default: // normal模式
        prompt = "请用通俗易懂的语言,简单明了地解释以下文物信息,适合普通观众理解:\n\n" + responseText;
        break;
}
  • 专业模式(professional):提示AI以文物鉴定专家的身份,使用专业术语进行说明
  • 普通模式(normal):提示AI使用通俗易懂的语言,适合普通观众理解
  • 教育模式(education):提示AI调整语言风格,适合儿童或学生理解

AI服务调用

AIService中,使用OpenAIChatCompletion API进行文本生成:

  • 使用"DeepSeek-R1"模型
  • 将构建好的提示词作为用户消息发送
  • 获取并返回AI生成的响应

容错处理

方法实现了完善的错误处理:

  1. 超时处理:1分钟超时后返回原始文本
  2. 异常处理:任何异常情况下都尝试返回原始文本
  3. 资源清理:确保线程池被正确关闭
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐