from langchain.messages import AIMessage, HumanMessage, SystemMessage, ToolMessage from langchain_core.language_models.fake_chat_models import FakeListChatModel def print_history(label: str, messages: list) -> None: print(label) for position, message in enumerate(messages, start=1): if isinstance(message, dict): role = message["role"] content = message["content"] else: role = message.type content = message.content print(f"{position}. {role}: {content}") object_messages = [ SystemMessage("You answer support questions with concise status updates."), HumanMessage("Check order A1001 and answer with the shipping status."), AIMessage( content="I will look up the order before answering.", tool_calls=[ { "name": "lookup_order", "args": {"order_id": "A1001"}, "id": "call_lookup_order", } ], ), ToolMessage( content='{"order_id": "A1001", "status": "shipped"}', tool_call_id="call_lookup_order", ), HumanMessage("Reply to the customer in one sentence."), ] dict_messages = [ {"role": "system", "content": "You classify support requests."}, {"role": "user", "content": "The customer says they cannot reset a password."}, {"role": "assistant", "content": "Ask for the account email before changing credentials."}, {"role": "user", "content": "Account email confirmed."}, ] model = FakeListChatModel( responses=[ "Order A1001 shipped and is ready for delivery tracking.", "The account email is confirmed for support replies.", ] ) print_history("message objects", object_messages) print() print_history("dictionary messages", dict_messages) object_response = model.invoke(object_messages) dict_response = model.invoke(dict_messages) print() print(f"object response: {type(object_response).__name__}: {object_response.content}") print(f"dict response: {type(dict_response).__name__}: {dict_response.content}")