fix: models with system message and prompt input fail (#2984)

This commit is contained in:
Nicolò Boschi 2024-07-26 23:03:13 +02:00 • committed by GitHub
commit 06d25a9e56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -143,20 +143,24 @@ class LCModelComponent(Component):
messages: list[Union[BaseMessage]] = [] messages: list[Union[BaseMessage]] = []
if not input_value and not system_message: if not input_value and not system_message:
raise ValueError("The message you want to send to the model is empty.") raise ValueError("The message you want to send to the model is empty.")
if system_message: system_message_added = False
messages.append(SystemMessage(content=system_message))
if input_value: if input_value:
if isinstance(input_value, Message): if isinstance(input_value, Message):
with warnings.catch_warnings(): with warnings.catch_warnings():
warnings.simplefilter("ignore") warnings.simplefilter("ignore")
if "prompt" in input_value: if "prompt" in input_value:
prompt = input_value.load_lc_prompt() prompt = input_value.load_lc_prompt()
if system_message:
prompt.messages = [SystemMessage(content=system_message)] + prompt.messages
system_message_added = True
runnable = prompt | runnable runnable = prompt | runnable
else: else:
messages.append(input_value.to_lc_message()) messages.append(input_value.to_lc_message())
else: else:
messages.append(HumanMessage(content=input_value)) messages.append(HumanMessage(content=input_value))
if system_message and not system_message_added:
messages.append(SystemMessage(content=system_message))
inputs: Union[list, dict] = messages or {} inputs: Union[list, dict] = messages or {}
try: try:
runnable = runnable.with_config( # type: ignore runnable = runnable.with_config( # type: ignore