Files
claude-relay-service/src/utils/text-similarity.js
千羽 9c3914bf79 feat: enhance Claude Code client detection with similarity matching
- Add string-similarity library for robust prompt comparison
- Extract Claude Code system prompts to separate contents module
- Implement similarity-based validation with configurable thresholds
- Support different validation logic for Haiku vs other Claude models
- Fix validation to properly handle array format system prompts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 11:31:44 +09:00

19 lines
572 B
JavaScript

import stringSimilarity from 'string-similarity'
function normalize(value) {
return value.replace(/\s+/g, ' ').trim()
}
export function simple(actual, expected, threshold) {
if (typeof expected !== 'string' || !expected.trim()) {
throw new Error('Expected prompt text must be a non-empty string')
}
if (typeof actual !== 'string' || !actual.trim()) {
return { score: 0, threshold, passed: false }
}
const score = stringSimilarity.compareTwoStrings(normalize(actual), normalize(expected))
return { score, threshold, passed: score >= threshold }
}