From 0957473bd307c0865e0b61559bf37c2b48ce25c6 Mon Sep 17 00:00:00 2001 From: Kiran Gopinathan Date: Mon, 26 Jan 2026 14:00:41 -0500 Subject: [PATCH] implements a more integrated weave.op integration --- effectful/handlers/llm/completions.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/effectful/handlers/llm/completions.py b/effectful/handlers/llm/completions.py index d0771665..babf7921 100644 --- a/effectful/handlers/llm/completions.py +++ b/effectful/handlers/llm/completions.py @@ -26,6 +26,11 @@ from effectful.ops.syntax import ObjectInterpretation, defop, implements from effectful.ops.types import Operation +try: + import weave +except ImportError: + weave = None # type: ignore + class _OpenAIPromptFormatter(string.Formatter): def format_as_messages( @@ -419,6 +424,15 @@ def _completion(self, *args, **kwargs): def _call[**P, T]( self, template: Template[P, T], *args: P.args, **kwargs: P.kwargs ) -> T: - model_input = format_model_input(template, *args, **kwargs) - resp = compute_response(template, model_input) - return decode_response(template, resp) + op: Callable = lambda f: f + if weave: + op = weave.op + + @op + @functools.wraps(template) + def wrapper(*args, **kwargs): + model_input = format_model_input(template, *args, **kwargs) + resp = compute_response(template, model_input) + return decode_response(template, resp) + + return wrapper(*args, **kwargs)