Home / Class/ _StringImageMessagePromptTemplate Class — langchain Architecture

_StringImageMessagePromptTemplate Class — langchain Architecture

Architecture documentation for the _StringImageMessagePromptTemplate class in chat.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  894611e5_5039_7621_4673_821d0b9b6f17["_StringImageMessagePromptTemplate"]
  75bfc804_f68f_7b77_a169_0fd019f759a2["BaseMessagePromptTemplate"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|extends| 75bfc804_f68f_7b77_a169_0fd019f759a2
  a3097815_cadb_7ebc_b29a_72117ccf6e27["StringPromptTemplate"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|extends| a3097815_cadb_7ebc_b29a_72117ccf6e27
  6a465cb4_c33a_e368_ad81_def98b4d2da2["ImagePromptTemplate"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|extends| 6a465cb4_c33a_e368_ad81_def98b4d2da2
  99b61388_a110_30d7_e5b6_3ec6b66bc790["DictPromptTemplate"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|extends| 99b61388_a110_30d7_e5b6_3ec6b66bc790
  d735cdf0_4dd6_b10d_3d65_7f753809639d["chat.py"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|defined in| d735cdf0_4dd6_b10d_3d65_7f753809639d
  48373769_1ea6_b4a1_72e7_07082679631b["from_template()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 48373769_1ea6_b4a1_72e7_07082679631b
  2d45b52a_4608_cd37_32ee_8262977a52f4["from_template_file()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 2d45b52a_4608_cd37_32ee_8262977a52f4
  294ab761_8d23_d66d_6743_cc31d8ac0289["format_messages()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 294ab761_8d23_d66d_6743_cc31d8ac0289
  294ec36d_5c45_aa10_07c1_4936f16dc663["aformat_messages()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 294ec36d_5c45_aa10_07c1_4936f16dc663
  38070047_2980_adb7_da5a_e41ca211b874["input_variables()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 38070047_2980_adb7_da5a_e41ca211b874
  4d5e2501_6d84_a2a3_49d1_fa84af2fe2d1["format()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 4d5e2501_6d84_a2a3_49d1_fa84af2fe2d1
  12501cb5_f260_9904_b738_b5abce848eb3["aformat()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 12501cb5_f260_9904_b738_b5abce848eb3
  9774ca51_c1fb_c680_32ab_554a3b7f3c21["pretty_repr()"]
  894611e5_5039_7621_4673_821d0b9b6f17 -->|method| 9774ca51_c1fb_c680_32ab_554a3b7f3c21

Relationship Graph

Source Code

libs/core/langchain_core/prompts/chat.py lines 396–660

class _StringImageMessagePromptTemplate(BaseMessagePromptTemplate):
    """Human message prompt template. This is a message sent from the user."""

    prompt: (
        StringPromptTemplate
        | list[StringPromptTemplate | ImagePromptTemplate | DictPromptTemplate]
    )
    """Prompt template."""
    additional_kwargs: dict = Field(default_factory=dict)
    """Additional keyword arguments to pass to the prompt template."""

    _msg_class: type[BaseMessage]

    @classmethod
    def from_template(
        cls: type[Self],
        template: str
        | list[str | _TextTemplateParam | _ImageTemplateParam | dict[str, Any]],
        template_format: PromptTemplateFormat = "f-string",
        *,
        partial_variables: dict[str, Any] | None = None,
        **kwargs: Any,
    ) -> Self:
        """Create a class from a string template.

        Args:
            template: a template.
            template_format: format of the template.

                Options are: `'f-string'`, `'mustache'`, `'jinja2'`.
            partial_variables: A dictionary of variables that can be used too partially.

            **kwargs: Keyword arguments to pass to the constructor.

        Returns:
            A new instance of this class.

        Raises:
            ValueError: If the template is not a string or list of strings.
        """
        if isinstance(template, str):
            prompt: StringPromptTemplate | list = PromptTemplate.from_template(
                template,
                template_format=template_format,
                partial_variables=partial_variables,
            )
            return cls(prompt=prompt, **kwargs)
        if isinstance(template, list):
            if (partial_variables is not None) and len(partial_variables) > 0:
                msg = "Partial variables are not supported for list of templates."
                raise ValueError(msg)
            prompt = []
            for tmpl in template:
                if isinstance(tmpl, str) or (
                    isinstance(tmpl, dict)
                    and "text" in tmpl
                    and set(tmpl.keys()) <= {"type", "text"}
                ):
                    if isinstance(tmpl, str):
                        text: str = tmpl
                    else:
                        text = cast("_TextTemplateParam", tmpl)["text"]  # type: ignore[assignment]
                    prompt.append(
                        PromptTemplate.from_template(
                            text, template_format=template_format
                        )
                    )
                elif (
                    isinstance(tmpl, dict)
                    and "image_url" in tmpl
                    and set(tmpl.keys())
                    <= {
                        "type",
                        "image_url",
                    }
                ):
                    img_template = cast("_ImageTemplateParam", tmpl)["image_url"]
                    input_variables = []
                    if isinstance(img_template, str):
                        variables = get_template_variables(
                            img_template, template_format

Frequently Asked Questions

What is the _StringImageMessagePromptTemplate class?
_StringImageMessagePromptTemplate is a class in the langchain codebase, defined in libs/core/langchain_core/prompts/chat.py.
Where is _StringImageMessagePromptTemplate defined?
_StringImageMessagePromptTemplate is defined in libs/core/langchain_core/prompts/chat.py at line 396.
What does _StringImageMessagePromptTemplate extend?
_StringImageMessagePromptTemplate extends BaseMessagePromptTemplate, StringPromptTemplate, ImagePromptTemplate, DictPromptTemplate.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free