prompt-template textCleanRegex strips a leading or trailing quote that is part of the extracted message
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 80/100
Direzione di ricerca
Inizia nella policy prompt-template, in extractStringAtPath, dove textCleanRegex viene applicata alle stringhe restituite da ExtractStringValueFromJsonpath; l’issue include un test di regressione e il comando go test . -run TestExtractStringAtPathStripsBoundaryQuotes -v. Rimuovi la rimozione involontaria delle virgolette e conferma che le stringhe estratte conservino le virgolette ai bordi. Controlla escapeForJSONString separatamente per preservarne il comportamento previsto di incorporamento in JSON.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
prompt-template uses the same ^"|"$ cleaner as content-length-guardrail:
textCleanRegex = regexp.MustCompile(`^"|"$`)
In extractStringAtPath, after ExtractStringValueFromJsonpath already returns a Go string (quotes not part of JSON encoding), the cleaner runs:
extractedValue = textCleanRegex.ReplaceAllString(extractedValue, "")
So a user message whose text is "hello world" (quotes included), or that merely starts with ", loses those characters before template substitution. That corrupts prompts that intentionally begin or end with a quotation mark (dialogue, JSON snippets, quoted speech).
This is the same regex class of bug as content-length-guardrail (#3911), in a different policy (prompt-template), on the extract path used whenever jsonPath is set (default message content paths).
Steps to reproduce
- On gateway-controllers
main(4cf9570), inpolicies/prompt-template:
func TestExtractStringAtPathStripsBoundaryQuotes(t *testing.T) {
got := textCleanRegex.ReplaceAllString(`"hello world"`, "")
if got != "hello world" {
t.Fatalf("fully quoted message became %q", got)
}
got2 := textCleanRegex.ReplaceAllString(`"starts with quote`, "")
if got2 != "starts with quote" {
t.Fatalf("leading quote stripped: got %q", got2)
}
}
go test . -run TestExtractStringAtPathStripsBoundaryQuotes -v
(The same ReplaceAllString is what extractStringAtPath applies to every extracted string.)
Expected behavior
Extracted string content is left unchanged. JSON string encoding is already handled by ExtractStringValueFromJsonpath returning a string.
Actual behavior
fully quoted -> hello world (both boundary quotes removed)
leading-only -> starts with quote
Environment
- gateway-controllers commit:
main@4cf9570(filed against api-platform) - Policy:
prompt-template - OS: Linux x86_64
Related issues / PRs
#3911 documents the identical regex in content-length-guardrail. #695 is a generic "Prompt Template Policy Issue" pointer with no reproduction of quote stripping. No open/closed issue or open PR for prompt-template textCleanRegex.
Possible Solution
Remove textCleanRegex.ReplaceAllString from extractStringAtPath (and review escapeForJSONString, which strips the outer quotes of json.Marshal output — that path is intentional for embedding, but must not use a pattern that also deletes an interior boundary quote from non-Marshal input). Prefer json.Marshal + slicing s[1:len(s)-1] when stripping Marshal's outer quotes. Add the regression test above.
I'm happy to send a PR.
- Lingua principale
- Go
- Stelle
- 79
- Fork
- 130
- Merge medio
- 2g 2h
- PR unite (30g)
- 157
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di wso2/api-platform
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
wso2/api-platform#3916 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: ap gateway image build cannot find local policies on WindowsForse già presa @Jayzilva l’ha presa 2 giorni fa. ApertaAspect/Configuration Severity/Major
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
wso2/api-platform#3912 ·
I maintainer di solito rispondono entro 1 giorno
-
Severity/Major
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
wso2/api-platform#3910 ·
I maintainer di solito rispondono entro 1 giorno
-
Aspect/API Severity/Minor
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
wso2/api-platform#3909 ·
I maintainer di solito rispondono entro 1 giorno
-
Aspect/API Aspect/UI Severity/Minor Type/Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
wso2/api-platform#3904 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di wso2/api-platform
Issue simili
-
[flaky test] TestValidatorCommitterDropsEmptyStatusBatch: submits to the mock VC before its stream is registeredForse già presa @liran-funaro l’ha presa oggi. Apertacoordinator flaky-test race-condition testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
hyperledger/fabric-x-committer#876 ·
I maintainer di solito rispondono entro 1 giorno
-
kind/features
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
TencentBlueKing/bk-nodemgr#3804 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cloudnative-pg/plugin-barman-cloud#1187 ·
I maintainer di solito rispondono entro 1 giorno
-
[deliverclient] Remove the unused common/deliverclient packageForse già presa @liran-funaro l’ha presa oggi. Apertacode-hygiene
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
hyperledger/fabric-x-common#236 ·
I maintainer di solito rispondono entro 1 giorno
-
consensus feature I2 S4 U2
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno