@@ -732,3 +732,73 @@ def test_chat_prompt_with_json_variables(self):
732732 assert len (formatted_messages ) == 2
733733 assert formatted_messages [0 ].content == expected_system
734734 assert formatted_messages [1 ].content == expected_user
735+
736+ def test_chat_prompt_with_placeholders_langchain (self ):
737+ """Test that chat prompts with placeholders work correctly with Langchain."""
738+ from langfuse .api .resources .prompts import Prompt_Chat
739+
740+ chat_messages = [
741+ ChatMessage (
742+ role = "system" ,
743+ content = "You are a {{role}} assistant with {{capability}} capabilities." ,
744+ ),
745+ {"type" : "placeholder" , "name" : "examples" },
746+ ChatMessage (
747+ role = "user" ,
748+ content = "Help me with {{task}}." ,
749+ ),
750+ ]
751+
752+ prompt_client = ChatPromptClient (
753+ Prompt_Chat (
754+ type = "chat" ,
755+ name = "chat_placeholder_langchain_test" ,
756+ version = 1 ,
757+ config = {},
758+ tags = [],
759+ labels = [],
760+ prompt = chat_messages ,
761+ ),
762+ )
763+
764+ placeholders = {
765+ "examples" : [
766+ {"role" : "user" , "content" : "Example: What is 2+2?" },
767+ {"role" : "assistant" , "content" : "2+2 equals 4." },
768+ ],
769+ }
770+
771+ # Test compile_with_placeholders with only placeholders (no variables)
772+ compiled_messages = prompt_client .compile_with_placeholders (
773+ placeholders = placeholders ,
774+ )
775+
776+ assert len (compiled_messages ) == 4
777+ assert (
778+ compiled_messages [0 ]["content" ]
779+ == "You are a {{role}} assistant with {{capability}} capabilities."
780+ )
781+ assert compiled_messages [1 ]["content" ] == "Example: What is 2+2?"
782+ assert compiled_messages [2 ]["content" ] == "2+2 equals 4."
783+ assert compiled_messages [3 ]["content" ] == "Help me with {{task}}."
784+
785+ compiled_messages = prompt_client .compile_with_placeholders (
786+ placeholders = placeholders , persist_compilation = True ,
787+ )
788+
789+ langchain_messages = prompt_client .get_langchain_prompt (
790+ role = "helpful" ,
791+ capability = "math" ,
792+ task = "addition" ,
793+ )
794+ langchain_prompt = ChatPromptTemplate .from_messages (langchain_messages )
795+ formatted_messages = langchain_prompt .format_messages ()
796+
797+ assert len (formatted_messages ) == 4
798+ assert (
799+ formatted_messages [0 ].content
800+ == "You are a helpful assistant with math capabilities."
801+ )
802+ assert formatted_messages [1 ].content == "Example: What is 2+2?"
803+ assert formatted_messages [2 ].content == "2+2 equals 4."
804+ assert formatted_messages [3 ].content == "Help me with addition."
0 commit comments