@@ -824,6 +824,41 @@ def test_chat_prompt_message_placeholder_tuple() -> None:
824824 assert optional_prompt .format_messages () == []
825825
826826
827+ def test_chat_prompt_message_placeholder_dict () -> None :
828+ prompt = ChatPromptTemplate ([{"role" : "placeholder" , "content" : "{convo}" }])
829+ assert prompt .format_messages (convo = [("user" , "foo" )]) == [
830+ HumanMessage (content = "foo" )
831+ ]
832+
833+ assert prompt .format_messages () == []
834+
835+ # Is optional = True
836+ optional_prompt = ChatPromptTemplate (
837+ [{"role" : "placeholder" , "content" : ["{convo}" , False ]}]
838+ )
839+ assert optional_prompt .format_messages (convo = [("user" , "foo" )]) == [
840+ HumanMessage (content = "foo" )
841+ ]
842+ with pytest .raises (KeyError ):
843+ assert optional_prompt .format_messages () == []
844+
845+
846+ def test_chat_prompt_message_dict () -> None :
847+ prompt = ChatPromptTemplate (
848+ [{"role" : "system" , "content" : "foo" }, {"role" : "user" , "content" : "bar" }]
849+ )
850+ assert prompt .format_messages () == [
851+ SystemMessage (content = "foo" ),
852+ HumanMessage (content = "bar" ),
853+ ]
854+
855+ with pytest .raises (ValueError ):
856+ ChatPromptTemplate ([{"role" : "system" , "content" : False }])
857+
858+ with pytest .raises (ValueError ):
859+ ChatPromptTemplate ([{"role" : "foo" , "content" : "foo" }])
860+
861+
827862async def test_messages_prompt_accepts_list () -> None :
828863 prompt = ChatPromptTemplate ([MessagesPlaceholder ("history" )])
829864 value = prompt .invoke ([("user" , "Hi there" )]) # type: ignore
0 commit comments