mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-26 06:26:13 +00:00
fix(core): better error message for empty var names (#32073)
Previously, we hit an index out of range error with empty variable names (accessing tag[0]), now we through a slightly nicer error --------- Co-authored-by: Mason Daugherty <mason@langchain.dev>
This commit is contained in:
parent
427d2d6397
commit
98bfd57a76
@ -150,6 +150,11 @@ def parse_tag(template: str, l_del: str, r_del: str) -> tuple[tuple[str, str], s
|
|||||||
msg = f"unclosed tag at line {_CURRENT_LINE}"
|
msg = f"unclosed tag at line {_CURRENT_LINE}"
|
||||||
raise ChevronError(msg) from e
|
raise ChevronError(msg) from e
|
||||||
|
|
||||||
|
# Check for empty tags
|
||||||
|
if not tag.strip():
|
||||||
|
msg = f"empty tag at line {_CURRENT_LINE}"
|
||||||
|
raise ChevronError(msg)
|
||||||
|
|
||||||
# Find the type meaning of the first character
|
# Find the type meaning of the first character
|
||||||
tag_type = tag_types.get(tag[0], "variable")
|
tag_type = tag_types.get(tag[0], "variable")
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ from functools import partial
|
|||||||
from inspect import isclass
|
from inspect import isclass
|
||||||
from typing import Any, Union, cast
|
from typing import Any, Union, cast
|
||||||
|
|
||||||
|
import pytest
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from langchain_core.language_models import FakeListChatModel
|
from langchain_core.language_models import FakeListChatModel
|
||||||
@ -10,6 +11,7 @@ from langchain_core.load.load import loads
|
|||||||
from langchain_core.messages import HumanMessage
|
from langchain_core.messages import HumanMessage
|
||||||
from langchain_core.prompts.structured import StructuredPrompt
|
from langchain_core.prompts.structured import StructuredPrompt
|
||||||
from langchain_core.runnables.base import Runnable, RunnableLambda
|
from langchain_core.runnables.base import Runnable, RunnableLambda
|
||||||
|
from langchain_core.utils.mustache import ChevronError
|
||||||
from langchain_core.utils.pydantic import is_basemodel_subclass
|
from langchain_core.utils.pydantic import is_basemodel_subclass
|
||||||
|
|
||||||
|
|
||||||
@ -128,3 +130,8 @@ def test_structured_prompt_template_format() -> None:
|
|||||||
assert prompt.invoke({"person": {"name": "foo"}}).to_messages() == [
|
assert prompt.invoke({"person": {"name": "foo"}}).to_messages() == [
|
||||||
HumanMessage("hi foo")
|
HumanMessage("hi foo")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_structured_prompt_template_empty_vars() -> None:
|
||||||
|
with pytest.raises(ChevronError, match="empty tag"):
|
||||||
|
StructuredPrompt([("human", "hi {{}}")], schema={}, template_format="mustache")
|
||||||
|
Loading…
Reference in New Issue
Block a user