Skip to content

Commit bdba159

Browse files
committed
Move hydrate_input to utils
1 parent ce88176 commit bdba159

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed

llmstack/common/utils/utils.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
run_sitemap_spider_in_process,
2222
run_url_spider_in_process,
2323
)
24+
from llmstack.common.utils.liquid import render_template
2425

2526
logger = logging.getLogger(__name__)
2627

@@ -515,3 +516,28 @@ def vectorize_text(text):
515516

516517
vectors = embedding_functions.DefaultEmbeddingFunction()([text])
517518
return vectors[0]
519+
520+
521+
def hydrate_input(input, values):
522+
def render(value):
523+
if isinstance(value, str):
524+
try:
525+
return render_template(value, values)
526+
except Exception:
527+
logger.exception("Error rendering template when hydrating input")
528+
529+
return value
530+
531+
def traverse(obj):
532+
if isinstance(obj, dict):
533+
return {key: traverse(render(value)) for key, value in obj.items()}
534+
elif isinstance(obj, list):
535+
return [traverse(render(item)) for item in obj]
536+
elif isinstance(obj, BaseModel):
537+
cls = obj.__class__
538+
return cls.model_validate(traverse(obj.model_dump()))
539+
elif isinstance(obj, str):
540+
return render(obj)
541+
return obj
542+
543+
return traverse(input)

llmstack/processors/providers/api_processor_interface.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
ProcessorInterface,
1717
)
1818
from llmstack.common.blocks.base.schema import BaseSchema as _Schema
19-
from llmstack.common.utils.liquid import render_template
2019
from llmstack.common.utils.provider_config import get_matched_provider_config
20+
from llmstack.common.utils.utils import hydrate_input
2121
from llmstack.play.actor import Actor, BookKeepingData
2222
from llmstack.play.actors.agent import ToolInvokeInput
2323
from llmstack.play.utils import extract_jinja2_variables
@@ -36,31 +36,6 @@
3636
FILE_WIDGET_NAME = "file"
3737

3838

39-
def hydrate_input(input, values):
40-
def render(value):
41-
if isinstance(value, str):
42-
try:
43-
return render_template(value, values)
44-
except Exception:
45-
logger.exception("Error rendering template when hydrating input")
46-
47-
return value
48-
49-
def traverse(obj):
50-
if isinstance(obj, dict):
51-
return {key: traverse(render(value)) for key, value in obj.items()}
52-
elif isinstance(obj, list):
53-
return [traverse(render(item)) for item in obj]
54-
elif isinstance(obj, BaseModel):
55-
cls = obj.__class__
56-
return cls.model_validate(traverse(obj.model_dump()))
57-
elif isinstance(obj, str):
58-
return render(obj)
59-
return obj
60-
61-
return traverse(input)
62-
63-
6439
class ApiProcessorSchema(_Schema):
6540
pass
6641

0 commit comments

Comments
 (0)