enable support for large context fallback
This commit is contained in:
parent
f64897fbf8
commit
2aa453f73f
1 changed files with 18 additions and 5 deletions
|
|
@ -1,8 +1,10 @@
|
||||||
from langchain.output_parsers import OutputFixingParser
|
from langchain.output_parsers import OutputFixingParser
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
from open_notebook.config import DEFAULT_MODELS
|
from open_notebook.config import DEFAULT_MODELS
|
||||||
from open_notebook.models import get_model
|
from open_notebook.models import get_model
|
||||||
from open_notebook.prompter import Prompter
|
from open_notebook.prompter import Prompter
|
||||||
|
from open_notebook.utils import token_count
|
||||||
|
|
||||||
|
|
||||||
def run_pattern(
|
def run_pattern(
|
||||||
|
|
@ -13,7 +15,22 @@ def run_pattern(
|
||||||
parser=None,
|
parser=None,
|
||||||
output_fixing_model_name=None,
|
output_fixing_model_name=None,
|
||||||
) -> dict:
|
) -> 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
|
model_name = DEFAULT_MODELS.default_transformation_model
|
||||||
|
|
||||||
chain = get_model(model_name, model_type="language")
|
chain = get_model(model_name, model_type="language")
|
||||||
|
|
@ -27,10 +44,6 @@ def run_pattern(
|
||||||
llm=output_fix_model,
|
llm=output_fix_model,
|
||||||
)
|
)
|
||||||
|
|
||||||
system_prompt = Prompter(prompt_template=pattern_name, parser=parser).render(
|
|
||||||
data=state
|
|
||||||
)
|
|
||||||
|
|
||||||
if len(messages) > 0:
|
if len(messages) > 0:
|
||||||
response = chain.invoke([system_prompt] + messages)
|
response = chain.invoke([system_prompt] + messages)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue