ML610's picture
Upload 515 files
1cf2abd
raw
history blame
1.77 kB
from ctransformers import LLM, Config
class MockLLM(LLM):
def __init__(self):
self._config = Config()
self._llm = None
@property
def config(self):
return self._config
def tokenize(self, prompt, **kwargs):
self.tokens = prompt.split(" ")
return range(len(self.tokens))
def generate(self, tokens, **kwargs):
return tokens
def detokenize(self, tokens, decode=True):
text = " " + self.tokens[tokens[0]]
if not decode:
text = text.encode()
return text
class TestLLM:
def test_stop(self):
llm = MockLLM()
prompt = "foo bar baz lorem ipsum\ndolor"
expected = [
([], " foo bar baz lorem ipsum\ndolor"),
(["dolor "], " foo bar baz lorem ipsum\ndolor"),
(["ipsum "], " foo bar baz lorem ipsum\ndolor"),
(["doloro"], " foo bar baz lorem ipsum\ndolor"),
(["ipsumo"], " foo bar baz lorem ipsum\ndolor"),
(["dolor"], " foo bar baz lorem ipsum\n"),
(["ipsum"], " foo bar baz lorem "),
(["olor"], " foo bar baz lorem ipsum\nd"),
(["olo"], " foo bar baz lorem ipsum\nd"),
(["psum"], " foo bar baz lorem i"),
(["psu"], " foo bar baz lorem i"),
(["z lor"], " foo bar ba"),
(["rem", "or"], " foo bar baz l"),
(["foo"], " "),
(["f"], " "),
([" "], ""),
(["\n"], " foo bar baz lorem ipsum"),
(["m\nd"], " foo bar baz lorem ipsu"),
]
for stop, response in expected:
assert llm(prompt, stop=stop) == response
if len(stop) == 1:
assert llm(prompt, stop=stop[0]) == response