Home / Class/ OpenAIModerationChain Class — langchain Architecture

OpenAIModerationChain Class — langchain Architecture

Architecture documentation for the OpenAIModerationChain class in moderation.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  681be7b2_2ef1_3fa3_8051_488d0318bbe1["OpenAIModerationChain"]
  f3cef70e_11b0_61c9_7ec0_7308f4b45056["Chain"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|extends| f3cef70e_11b0_61c9_7ec0_7308f4b45056
  1388891d_a631_43c9_3da6_0b948ceab861["moderation.py"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|defined in| 1388891d_a631_43c9_3da6_0b948ceab861
  b02d796e_a2d3_88f9_c621_c1536b6151c8["validate_environment()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| b02d796e_a2d3_88f9_c621_c1536b6151c8
  a38b0ff7_52db_fa8a_ac48_2fff03d1fb20["input_keys()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| a38b0ff7_52db_fa8a_ac48_2fff03d1fb20
  09b692d9_a5d9_1198_3d75_e8ff1e849504["output_keys()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| 09b692d9_a5d9_1198_3d75_e8ff1e849504
  8f806073_b5ea_22ed_c6ce_442f9541f9ea["_moderate()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| 8f806073_b5ea_22ed_c6ce_442f9541f9ea
  06d68222_a4cc_adc7_f696_ec1e270c9c3a["_call()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| 06d68222_a4cc_adc7_f696_ec1e270c9c3a
  bca6ad32_d33f_9e17_5e1c_056f97df298e["_acall()"]
  681be7b2_2ef1_3fa3_8051_488d0318bbe1 -->|method| bca6ad32_d33f_9e17_5e1c_056f97df298e

Relationship Graph

Source Code

libs/langchain/langchain_classic/chains/moderation.py lines 16–129

class OpenAIModerationChain(Chain):
    """Pass input through a moderation endpoint.

    To use, you should have the `openai` python package installed, and the
    environment variable `OPENAI_API_KEY` set with your API key.

    Any parameters that are valid to be passed to the openai.create call can be passed
    in, even if not explicitly saved on this class.

    Example:
        ```python
        from langchain_classic.chains import OpenAIModerationChain

        moderation = OpenAIModerationChain()
        ```
    """

    client: Any = None
    async_client: Any = None
    model_name: str | None = None
    """Moderation model name to use."""
    error: bool = False
    """Whether or not to error if bad content was found."""
    input_key: str = "input"
    output_key: str = "output"
    openai_api_key: str | None = None
    openai_organization: str | None = None
    openai_pre_1_0: bool = Field(default=False)

    @model_validator(mode="before")
    @classmethod
    def validate_environment(cls, values: dict) -> Any:
        """Validate that api key and python package exists in environment."""
        openai_api_key = get_from_dict_or_env(
            values,
            "openai_api_key",
            "OPENAI_API_KEY",
        )
        openai_organization = get_from_dict_or_env(
            values,
            "openai_organization",
            "OPENAI_ORGANIZATION",
            default="",
        )
        try:
            import openai

            openai.api_key = openai_api_key
            if openai_organization:
                openai.organization = openai_organization
            values["openai_pre_1_0"] = False
            try:
                check_package_version("openai", gte_version="1.0")
            except ValueError:
                values["openai_pre_1_0"] = True
            if values["openai_pre_1_0"]:
                values["client"] = openai.Moderation
            else:
                values["client"] = openai.OpenAI(api_key=openai_api_key)
                values["async_client"] = openai.AsyncOpenAI(api_key=openai_api_key)

        except ImportError as e:
            msg = (
                "Could not import openai python package. "
                "Please install it with `pip install openai`."
            )
            raise ImportError(msg) from e
        return values

    @property
    def input_keys(self) -> list[str]:
        """Expect input key."""
        return [self.input_key]

    @property
    def output_keys(self) -> list[str]:
        """Return output key."""
        return [self.output_key]

    def _moderate(self, text: str, results: Any) -> str:
        condition = results["flagged"] if self.openai_pre_1_0 else results.flagged

Extends

Frequently Asked Questions

What is the OpenAIModerationChain class?
OpenAIModerationChain is a class in the langchain codebase, defined in libs/langchain/langchain_classic/chains/moderation.py.
Where is OpenAIModerationChain defined?
OpenAIModerationChain is defined in libs/langchain/langchain_classic/chains/moderation.py at line 16.
What does OpenAIModerationChain extend?
OpenAIModerationChain extends Chain.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free