概括

都是通过调用外部接口实现moderation

在langchain包中,支持调用OpenAI和EdenAi的moderation接口实现文本的安全审查

在langchain_experiment包中,通过调用aws comprehend的Toxicity detection,Personally Identifiable Information (PII)和prompt safety接口,对输入输出的内容做内容安全识别。

针对PII问题,业内还有一个技术叫做:**data_anonymizer ,**通过这项技术,可以实现用户信息的替换,隐藏或者加密。langchain_experiment中提供了相关实现

langchain中的实现

OpenAIModerationChain

OpenAI的文档:https://platform.openai.com/docs/guides/moderation/overview

model = (OpenAI())
prompt = ChatPromptTemplate()
moderated_chain = prompt | model | moderation
response = moderated_chain.invoke({"user_input": user_input})

EdenAiTextModerationTool

EdenAI的文档:https://docs.edenai.co/reference/image_explicit_content_create

可以放到react agent中作为一种工具使用

from langchain_community.tools.edenai import (
    EdenAiTextModerationTool,
)
llm = EdenAI(
    feature="text", provider="openai",
    params={"temperature": 0.2, "max_tokens": 250}
)

tools = [
    EdenAiTextModerationTool(providers=["openai"], language="en")
]
agent_chain = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    return_intermediate_steps=True,
)

langchain-experiment中的实现

包含aws comprehend的Toxicity detection,Personally Identifiable Information (PII)和prompt safety三个接口