diff --git a/langfuse/_client/observe.py b/langfuse/_client/observe.py index e37e91e99..ce4d862d5 100644 --- a/langfuse/_client/observe.py +++ b/langfuse/_client/observe.py @@ -1,4 +1,3 @@ -import asyncio import inspect import logging import os @@ -169,7 +168,7 @@ def decorator(func: F) -> F: capture_output=should_capture_output, transform_to_string=transform_to_string, ) - if asyncio.iscoroutinefunction(func) + if inspect.iscoroutinefunction(func) else self._sync_observe( func, name=name, @@ -355,6 +354,14 @@ def sync_wrapper(*args, **kwargs): result, transform_to_string, ) + elif inspect.isasyncgen(result): + is_return_type_generator = True + + return self._wrap_async_generator_result( + langfuse_span_or_generation, + result, + transform_to_string, + ) langfuse_span_or_generation.update(output=result)