Skip to content

Commit 4697144

Browse files
jacoblee93mdrxyCopilot
authored
fix(core): Filter empty content blocks from formatted prompts (#32519)
Co-authored-by: Mason Daugherty <mason@langchain.dev> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent d8b9400 commit 4697144

2 files changed

Lines changed: 361 additions & 14 deletions

File tree

libs/core/langchain_core/prompts/chat.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -587,14 +587,15 @@ def format(self, **kwargs: Any) -> BaseMessage:
587587
for prompt in self.prompt:
588588
inputs = {var: kwargs[var] for var in prompt.input_variables}
589589
if isinstance(prompt, StringPromptTemplate):
590-
formatted: str | ImageURL | dict[str, Any] = prompt.format(**inputs)
591-
content.append({"type": "text", "text": formatted})
590+
formatted_text: str = prompt.format(**inputs)
591+
if formatted_text != "":
592+
content.append({"type": "text", "text": formatted_text})
592593
elif isinstance(prompt, ImagePromptTemplate):
593-
formatted = prompt.format(**inputs)
594-
content.append({"type": "image_url", "image_url": formatted})
594+
formatted_image: ImageURL = prompt.format(**inputs)
595+
content.append({"type": "image_url", "image_url": formatted_image})
595596
elif isinstance(prompt, DictPromptTemplate):
596-
formatted = prompt.format(**inputs)
597-
content.append(formatted)
597+
formatted_dict: dict[str, Any] = prompt.format(**inputs)
598+
content.append(formatted_dict)
598599
return self._msg_class(
599600
content=content, additional_kwargs=self.additional_kwargs
600601
)
@@ -617,16 +618,15 @@ async def aformat(self, **kwargs: Any) -> BaseMessage:
617618
for prompt in self.prompt:
618619
inputs = {var: kwargs[var] for var in prompt.input_variables}
619620
if isinstance(prompt, StringPromptTemplate):
620-
formatted: str | ImageURL | dict[str, Any] = await prompt.aformat(
621-
**inputs
622-
)
623-
content.append({"type": "text", "text": formatted})
621+
formatted_text: str = await prompt.aformat(**inputs)
622+
if formatted_text != "":
623+
content.append({"type": "text", "text": formatted_text})
624624
elif isinstance(prompt, ImagePromptTemplate):
625-
formatted = await prompt.aformat(**inputs)
626-
content.append({"type": "image_url", "image_url": formatted})
625+
formatted_image: ImageURL = await prompt.aformat(**inputs)
626+
content.append({"type": "image_url", "image_url": formatted_image})
627627
elif isinstance(prompt, DictPromptTemplate):
628-
formatted = prompt.format(**inputs)
629-
content.append(formatted)
628+
formatted_dict: dict[str, Any] = prompt.format(**inputs)
629+
content.append(formatted_dict)
630630
return self._msg_class(
631631
content=content, additional_kwargs=self.additional_kwargs
632632
)

0 commit comments

Comments
 (0)