forked from niuniu/llm-intelligence
fix: harden review and verifier governance
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
//go:build llm_script
|
||||
//go:build llm_script && !scripts_pkg
|
||||
|
||||
package main
|
||||
|
||||
@@ -46,6 +46,8 @@ var (
|
||||
sensenovaOverviewCardPattern = regexp.MustCompile(`(?s)<h4[^>]*>([^<]+)</h4>.*?调用次数限制</p><p[^>]*>每5小时([0-9]+)次</p>.*?MODEL ID</p><code[^>]*>([^<]+)</code>`)
|
||||
sensenovaModelsScriptPattern = regexp.MustCompile(`src="([^"]+/_next/static/chunks/[^"]+\.js|/_next/static/chunks/[^"]+\.js)"`)
|
||||
sensenovaPricingZeroPattern = regexp.MustCompile(`(?s)"pricing"\s*:\s*\{\s*"prompt"\s*:\s*"0"\s*,\s*"completion"\s*:\s*"0"\s*,\s*"image"\s*:\s*"0"\s*,\s*"request"\s*:\s*"0"`)
|
||||
sensenovaOverviewTableRowPattern = regexp.MustCompile(`(?s)<tr[^>]*>\s*<td[^>]*>([^<]+)</td>\s*<td[^>]*>.*?<code[^>]*>([^<]+)</code>.*?</td>\s*<td[^>]*>每5小时([0-9]+)次</td>\s*<td[^>]*>([^<]+)</td>\s*</tr>`)
|
||||
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -255,6 +257,9 @@ func parseSensenovaPricingCatalog(fixture sensenovaPricingFixture) ([]officialPr
|
||||
}
|
||||
|
||||
matches := sensenovaOverviewCardPattern.FindAllStringSubmatch(fixture.DocsHTML, -1)
|
||||
if len(matches) == 0 {
|
||||
matches = sensenovaOverviewTableRowPattern.FindAllStringSubmatch(fixture.DocsHTML, -1)
|
||||
}
|
||||
if len(matches) == 0 {
|
||||
return nil, fmt.Errorf("unexpected sensenova docs content: no model overview cards parsed")
|
||||
}
|
||||
@@ -263,11 +268,7 @@ func parseSensenovaPricingCatalog(fixture sensenovaPricingFixture) ([]officialPr
|
||||
records := make([]officialPricingRecord, 0, len(matches))
|
||||
seenModelIDs := make(map[string]struct{}, len(matches))
|
||||
for _, match := range matches {
|
||||
if len(match) != 4 {
|
||||
continue
|
||||
}
|
||||
modelName := strings.TrimSpace(match[1])
|
||||
modelID := strings.TrimSpace(match[3])
|
||||
modelName, modelID := normalizeSensenovaOverviewMatch(match)
|
||||
if modelName == "" || modelID == "" {
|
||||
continue
|
||||
}
|
||||
@@ -376,3 +377,25 @@ func sensenovaModality(modelID string, section string) string {
|
||||
return "text"
|
||||
}
|
||||
}
|
||||
|
||||
func normalizeSensenovaOverviewMatch(match []string) (string, string) {
|
||||
if len(match) < 3 {
|
||||
return "", ""
|
||||
}
|
||||
modelName := strings.TrimSpace(match[1])
|
||||
for i := len(match) - 1; i >= 2; i-- {
|
||||
candidate := strings.TrimSpace(match[i])
|
||||
if looksLikeSensenovaModelID(candidate) {
|
||||
return modelName, candidate
|
||||
}
|
||||
}
|
||||
return modelName, ""
|
||||
}
|
||||
|
||||
func looksLikeSensenovaModelID(value string) bool {
|
||||
value = strings.ToLower(strings.TrimSpace(value))
|
||||
if value == "" {
|
||||
return false
|
||||
}
|
||||
return strings.Contains(value, "-") && (strings.HasPrefix(value, "sensenova") || strings.HasPrefix(value, "deepseek"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user