fix: harden rag answerability gate

This commit is contained in:
mlogclub
2026-05-02 14:14:31 +08:00
parent 9e30167eaf
commit 0230e05dce
5 changed files with 68 additions and 5 deletions
@@ -106,6 +106,15 @@ func (c *RuntimeTraceCollector) SetRetrieverSummary(summary RetrieverTraceSummar
c.Data.Retriever.Policies = append([]RetrieverPolicyTraceItem(nil), summary.Policies...)
}
func (c *RuntimeTraceCollector) AddRetrieverItems(items []RetrieverTraceItem) {
if len(items) == 0 {
return
}
c.mu.Lock()
defer c.mu.Unlock()
c.Data.Retriever.Items = append(c.Data.Retriever.Items, items...)
}
func (c *RuntimeTraceCollector) SetAnswerability(data AnswerabilityTraceData) {
c.mu.Lock()
defer c.mu.Unlock()
@@ -0,0 +1,20 @@
package callbacks
import "testing"
func TestRuntimeTraceCollectorAddRetrieverItems(t *testing.T) {
collector := NewRuntimeTraceCollector()
collector.AddRetrieverItems([]RetrieverTraceItem{
{KnowledgeBaseID: 1, DocumentID: 10, DocumentTitle: "doc-1"},
{KnowledgeBaseID: 2, DocumentID: 20, DocumentTitle: "doc-2"},
})
collector.AddRetrieverItems(nil)
if got := len(collector.Data.Retriever.Items); got != 2 {
t.Fatalf("expected two retriever items, got %d", got)
}
if collector.Data.Retriever.Items[0].DocumentTitle != "doc-1" || collector.Data.Retriever.Items[1].DocumentTitle != "doc-2" {
t.Fatalf("unexpected retriever items: %#v", collector.Data.Retriever.Items)
}
}