xinli/xinlidsj/ai_intent_fix.txt
2026-02-26 18:18:03 +08:00

78 lines
2.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

修复AI意图识别的JSON解析问题
找到这段代码大约在1330-1355行
console.log('AI意图识别原始响应:', content)
// 提取JSON可能被markdown代码块包裹
let jsonStr = content.trim()
const jsonMatch = jsonStr.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/)
if (jsonMatch) {
jsonStr = jsonMatch[1]
}
const intent = JSON.parse(jsonStr)
console.log('AI意图识别解析结果:', intent)
// 验证置信度
if (intent.confidence < 0.6) {
console.log('AI意图识别置信度过低忽略结果')
return null
}
替换为:
console.log('AI意图识别原始响应:', content)
// 检查是否有内容
if (!content || !content.trim()) {
console.log('AI意图识别响应为空')
return null
}
// 提取JSON
let jsonStr = content.trim()
// 移除markdown代码块
jsonStr = jsonStr.replace(/```(?:json)?\s*/g, '').replace(/```\s*/g, '')
// 提取第一个完整的JSON对象
const jsonMatch2 = jsonStr.match(/\{[\s\S]*?\}/)
if (jsonMatch2) {
jsonStr = jsonMatch2[0]
}
console.log('AI意图识别提取的JSON字符串:', jsonStr.substring(0, 200))
// 解析JSON
let intent = null
try {
intent = JSON.parse(jsonStr)
} catch (parseError) {
console.error('AI意图识别JSON解析失败', parseError.message)
return null
}
console.log('AI意图识别解析结果:', intent)
// 验证intent结构
if (!intent || typeof intent !== 'object') {
console.log('AI意图识别intent不是对象')
return null
}
// 验证置信度
const confidence = parseFloat(intent.confidence)
if (isNaN(confidence) || confidence < 0.6) {
console.log('AI意图识别置信度过低或无效', confidence)
return null
}
主要改进:
1. 添加了空内容检查
2. 改进了JSON提取逻辑使用replace而不是match
3. 添加了try-catch包裹JSON.parse
4. 添加了更详细的错误日志
5. 验证intent对象结构
6. 改进了置信度验证逻辑