xinli/xinlidsj/ai_intent_fix.txt

78 lines
2.1 KiB
Plaintext
Raw Normal View History

2026-02-26 18:18:03 +08:00
修复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. 改进了置信度验证逻辑