misinformation.py
 1  # Copyright (c) 2024-2026 Tencent Zhuque Lab. All rights reserved.
 2  #
 3  # Licensed under the Apache License, Version 2.0 (the "License");
 4  # you may not use this file except in compliance with the License.
 5  # You may obtain a copy of the License at
 6  #
 7  #     http://www.apache.org/licenses/LICENSE-2.0
 8  #
 9  # Unless required by applicable law or agreed to in writing, software
10  # distributed under the License is distributed on an "AS IS" BASIS,
11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  # See the License for the specific language governing permissions and
13  # limitations under the License.
14  #
15  # Requirement: Any integration or derivative work must explicitly attribute
16  # Tencent Zhuque Lab (https://github.com/Tencent/AI-Infra-Guard) in its
17  # documentation or user interface, as detailed in the NOTICE file.
18  
19  from typing import List, Literal, Optional
20  
21  from deepteam.vulnerabilities import BaseVulnerability
22  from deepteam.vulnerabilities.misinformation import MisinformationType
23  from deepteam.vulnerabilities.utils import validate_vulnerability_types
24  
25  
26  MisinformationLiteral = Literal[
27      "factual errors", "unsupported claims", "expertize misrepresentation"
28  ]
29  
30  
31  class Misinformation(BaseVulnerability):
32      def __init__(
33          self,
34          types: Optional[List[MisinformationLiteral]] = [
35              type.value for type in MisinformationType
36          ],
37      ):
38          enum_types = validate_vulnerability_types(
39              self.get_name(), types=types, allowed_type=MisinformationType
40          )
41          super().__init__(types=enum_types)
42  
43      def get_name(self) -> str:
44          return "Misinformation"