From 26b4b17b4b1b0a9f67f65f3860bfb319b74647af Mon Sep 17 00:00:00 2001 From: Abirdcfly Date: Fri, 19 Jan 2024 13:50:34 +0800 Subject: [PATCH] fix: when no related doc is found, should return retriever.spec.docNullReturn Signed-off-by: Abirdcfly --- pkg/appruntime/retriever/knowledgebaseretriever.go | 11 +++++++++-- tests/example-test.sh | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pkg/appruntime/retriever/knowledgebaseretriever.go b/pkg/appruntime/retriever/knowledgebaseretriever.go index ab58fe252..ba5343d96 100644 --- a/pkg/appruntime/retriever/knowledgebaseretriever.go +++ b/pkg/appruntime/retriever/knowledgebaseretriever.go @@ -168,8 +168,15 @@ type KnowledgeBaseStuffDocuments struct { References []Reference } -var _ chains.Chain = &KnowledgeBaseStuffDocuments{} -var _ callbacks.Handler = &KnowledgeBaseStuffDocuments{} +func (c *KnowledgeBaseStuffDocuments) GetCallbackHandler() callbacks.Handler { + return c +} + +var ( + _ chains.Chain = &KnowledgeBaseStuffDocuments{} + _ callbacks.Handler = &KnowledgeBaseStuffDocuments{} + _ callbacks.HandlerHaver = &KnowledgeBaseStuffDocuments{} +) func (c *KnowledgeBaseStuffDocuments) joinDocuments(ctx context.Context, docs []langchaingoschema.Document) string { logger := klog.FromContext(ctx) diff --git a/tests/example-test.sh b/tests/example-test.sh index e1dc60869..c0374294c 100755 --- a/tests/example-test.sh +++ b/tests/example-test.sh @@ -365,12 +365,26 @@ kubectl apply -f config/samples/app_retrievalqachain_knowledgebase.yaml waitCRDStatusReady "Application" "arcadia" "base-chat-with-knowledgebase" sleep 3 getRespInAppChat "base-chat-with-knowledgebase" "arcadia" "旷工最小计算单位为多少天?" "" "true" +info "8.2.1.2 When no releated doc is found, return retriever.spec.docNullReturn info" +getRespInAppChat "base-chat-with-knowledgebase" "arcadia" "飞天的主演是谁?" "" "false" +expected=$(kubectl get knowledgebaseretrievers -n arcadia base-chat-with-knowledgebase -o json | jq -r .spec.docNullReturn) +if [[ $ai_data != $expected ]]; then + echo "when no releated doc is found, return retriever.spec.docNullReturn info should be:"$expected ", but resp:"$resp + exit 1 +fi info "8.2.2 QA app using knowledgebase base on pgvector" kubectl apply -f config/samples/app_retrievalqachain_knowledgebase_pgvector.yaml waitCRDStatusReady "Application" "arcadia" "base-chat-with-knowledgebase-pgvector" sleep 3 getRespInAppChat "base-chat-with-knowledgebase" "arcadia" "旷工最小计算单位为多少天?" "" "true" +info "8.2.2.2 When no releated doc is found, return retriever.spec.docNullReturn info" +getRespInAppChat "base-chat-with-knowledgebase" "arcadia" "飞天的主演是谁?" "" "false" +expected=$(kubectl get knowledgebaseretrievers -n arcadia base-chat-with-knowledgebase -o json | jq -r .spec.docNullReturn) +if [[ $ai_data != $expected ]]; then + echo "when no releated doc is found, return retriever.spec.docNullReturn info should be:"$expected ", but resp:"$resp + exit 1 +fi info "8.3 conversation chat app" kubectl apply -f config/samples/app_llmchain_chat_with_bot.yaml