ReturnError attaches an error message to the answer's metadata whenever it receives input.

ReturnError is particularly useful in pipelines designed to detect prompt injection. You can use it together with a QueryClassifier. The pipeline starts with the QueryClassifier, which categorizes queries into genuine queries and prompt injections. When a query is identified as a prompt injection, it's redirected to the branch with the ReturnError node. This node generates an error message and attaches it to the answer's metadata. This message is visible in the search API. The pipeline ends at this point, ensuring the prompt never reaches the PromptNode. Users see an automatically generated message saying no answer was found.

If a query is classified as genuine, it's sent further down the pipeline to the branch with PromptNode.

Basic Information

  • Pipeline type: Used in query pipelines
  • Nodes that can precede it in a pipeline: Used after QueryClassifier
  • Nodes that can follow it in a pipeline: Used as the last node in the branch.
  • Input: Query, error message
  • Output: Answer (with the error message added to its metadata)
  • Available node classes: ReturnError

Usage Example

Here's how to use ReturnError in a pipeline. ReturnError takes output_2 of QueryClassifier (the output classified as "INJECTION"), and if it receives it, it attaches an error message informing that there has been a prompt injection attempt to the answer's metadata.

   - name: DocumentStore
      type: DeepsetCloudDocumentStore
        embedding_dim: 768
        similarity: cosine
    - name: QueryClassifier
        model_name_or_path: deepset/deberta-v3-base-injection 
        labels: ['LEGIT','INJECTION']
      type: TransformersQueryClassifier
    - name: ErrorNode 
      type: ReturnError
        error_message: "Prompt injection detected. No response is generated." 
  - name: query
       - name: QueryClassifier
         inputs: [Query]
       - name: EmbeddingRetriever
         inputs: [QueryClassifier.output_1]
       - name: BM25Retriever
         inputs: [QueryClassifier.output_1]
       - name: ErrorNode
         inputs: [QueryClassifier.output_2]
       - name: JoinResults
         inputs: [BM25Retriever, EmbeddingRetriever]
       - name: Reranker
         inputs: [JoinResults]
       - name: PromptNode
         inputs: [Reranker]


Here are the parameters you can pass to ReturnError in pipeline YAML:

ParameterTypePossible ValuesDescription
error_messageStringThe error message to return.