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
Source
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