Spaces:
Paused
Paused
import pytest | |
from kotaemon.base import Document | |
from kotaemon.llms import BasePromptComponent, PromptTemplate | |
from kotaemon.parsers import RegexExtractor | |
def test_set_attributes(): | |
template = PromptTemplate("str = {s}, int = {i}, doc = {doc}, comp = {comp}") | |
doc = Document(text="Helloo, Alice!") | |
comp = RegexExtractor( | |
pattern=r"\d+", output_map={"1": "One", "2": "Two", "3": "Three"} | |
) | |
comp.set_run(kwargs={"text": "This is a test. 1 2 3"}, temp=True) | |
prompt = BasePromptComponent(template=template, s="Alice", i=30, doc=doc, comp=comp) | |
assert prompt.s == "Alice" | |
assert prompt.i == 30 | |
assert prompt.doc == doc | |
assert prompt.comp == comp | |
def test_check_redundant_kwargs(): | |
template = PromptTemplate("Hello, {name}!") | |
prompt = BasePromptComponent(template=template, name="Alice") | |
with pytest.warns(UserWarning, match="Keys provided but not in template: age"): | |
prompt._BasePromptComponent__check_redundant_kwargs(name="Alice", age=30) | |
def test_check_unset_placeholders(): | |
template = PromptTemplate("Hello, {name}! I'm {age} years old.") | |
prompt = BasePromptComponent(template=template, name="Alice") | |
with pytest.raises(ValueError): | |
prompt._BasePromptComponent__check_unset_placeholders() | |
def test_validate_value_type(): | |
template = PromptTemplate("Hello, {name}!") | |
prompt = BasePromptComponent(template=template) | |
with pytest.raises(ValueError): | |
prompt._BasePromptComponent__validate_value_type(name={}) | |
def test_run(): | |
template = PromptTemplate("str = {s}, int = {i}, doc = {doc}, comp = {comp}") | |
doc = Document(text="Helloo, Alice!") | |
comp = RegexExtractor( | |
pattern=r"\d+", output_map={"1": "One", "2": "Two", "3": "Three"} | |
) | |
comp.set_run(kwargs={"text": "This is a test. 1 2 3"}, temp=True) | |
prompt = BasePromptComponent(template=template, s="Alice", i=30, doc=doc, comp=comp) | |
result = prompt() | |
assert result.text == "str = Alice, int = 30, doc = Helloo, Alice!, comp = ['One']" | |
def test_set_method(): | |
template = PromptTemplate("Hello, {name}!") | |
prompt = BasePromptComponent(template=template) | |
prompt.set_value(name="Alice") | |
assert prompt.name == "Alice" | |