enable support for large context fallback

This commit is contained in:
LUIS NOVO 2024-10-30 15:39:45 -03:00
parent f64897fbf8
commit 2aa453f73f

View file

@ -1,8 +1,10 @@
from langchain.output_parsers import OutputFixingParser
from loguru import logger
from open_notebook.config import DEFAULT_MODELS
from open_notebook.models import get_model
from open_notebook.prompter import Prompter
from open_notebook.utils import token_count
def run_pattern(
@ -13,7 +15,22 @@ def run_pattern(
parser=None,
output_fixing_model_name=None,
) -> dict:
if not model_name:
system_prompt = Prompter(prompt_template=pattern_name, parser=parser).render(
data=state
)
tokens = token_count(str(system_prompt) + str(messages))
if tokens > 105_000 and DEFAULT_MODELS.large_context_model:
model_name = DEFAULT_MODELS.large_context_model
logger.debug(
f"Using large context model ({model_name}) because the content has {tokens} tokens"
)
logger.warning(system_prompt)
elif tokens > 105_000 and not DEFAULT_MODELS.large_context_model:
logger.critical(
f"Content has {tokens} tokens, but no large context model is configured"
)
elif not model_name:
model_name = DEFAULT_MODELS.default_transformation_model
chain = get_model(model_name, model_type="language")
@ -27,10 +44,6 @@ def run_pattern(
llm=output_fix_model,
)
system_prompt = Prompter(prompt_template=pattern_name, parser=parser).render(
data=state
)
if len(messages) > 0:
response = chain.invoke([system_prompt] + messages)
else: