From d08f940336e7dc4161c670e552497a452ef67832 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Wed, 22 Mar 2023 10:48:38 -0700 Subject: [PATCH] principles list (#1888) --- langchain/chains/constitutional_ai/base.py | 12 +++++++++++- langchain/chains/constitutional_ai/principles.py | 5 +++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 langchain/chains/constitutional_ai/principles.py diff --git a/langchain/chains/constitutional_ai/base.py b/langchain/chains/constitutional_ai/base.py index b78aa3a0ab2..b3ff12f5ed3 100644 --- a/langchain/chains/constitutional_ai/base.py +++ b/langchain/chains/constitutional_ai/base.py @@ -1,8 +1,9 @@ """Chain for applying constitutional principles to the outputs of another chain.""" -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional from langchain.chains.base import Chain from langchain.chains.constitutional_ai.models import ConstitutionalPrinciple +from langchain.chains.constitutional_ai.principles import PRINCIPLES from langchain.chains.constitutional_ai.prompts import CRITIQUE_PROMPT, REVISION_PROMPT from langchain.chains.llm import LLMChain from langchain.prompts.base import BasePromptTemplate @@ -42,6 +43,15 @@ class ConstitutionalChain(Chain): critique_chain: LLMChain revision_chain: LLMChain + @classmethod + def get_principles( + cls, names: Optional[List[str]] = None + ) -> List[ConstitutionalPrinciple]: + if names is None: + return list(PRINCIPLES.values()) + else: + return [PRINCIPLES[name] for name in names] + @classmethod def from_llm( cls, diff --git a/langchain/chains/constitutional_ai/principles.py b/langchain/chains/constitutional_ai/principles.py new file mode 100644 index 00000000000..536bf32c2fc --- /dev/null +++ b/langchain/chains/constitutional_ai/principles.py @@ -0,0 +1,5 @@ +# flake8: noqa +from typing import Dict +from langchain.chains.constitutional_ai.models import ConstitutionalPrinciple + +PRINCIPLES: Dict[str, ConstitutionalPrinciple] = {}