Skip to content

Commit

Permalink
Add strftime_now to Jijnja2 to use with Granite3 models
Browse files Browse the repository at this point in the history
Granite3 default template uses strftime_now function.
Currently Jinja2 raises an exception because strftime_now is undefined and /v1/chat/completions endpoint doesn't work with these models when a template from the model metadata is used.
  • Loading branch information
mefich authored Feb 13, 2025
1 parent 2e49147 commit 3b482d8
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions common/templating.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
from jinja2.sandbox import ImmutableSandboxedEnvironment
from loguru import logger
from packaging import version
from datetime import datetime


from common.utils import unwrap

Expand Down Expand Up @@ -95,10 +97,16 @@ async def render(self, template_vars: dict):
def compile(self, template_str: str):
"""Compiles and stores a jinja2 template"""

# Some models require strftime_now, e.g. Granite3
def strftime_now(format):
current_time = datetime.now()
return current_time.strftime(format)

# Exception handler
def raise_exception(message):
raise TemplateError(message)

self.environment.globals["strftime_now"] = strftime_now
self.environment.globals["raise_exception"] = raise_exception

return self.environment.from_string(template_str)
Expand Down

0 comments on commit 3b482d8

Please sign in to comment.