diff --git a/langfuse/decorators/langfuse_decorator.py b/langfuse/decorators/langfuse_decorator.py index 9145e83c..b5671c80 100644 --- a/langfuse/decorators/langfuse_decorator.py +++ b/langfuse/decorators/langfuse_decorator.py @@ -423,6 +423,7 @@ def _finalize_call( observation, result, capture_output, transform_to_string ) elif inspect.isasyncgen(result): + #_observation_stack_context.set(stack) return self._wrap_async_generator_result( observation, result, capture_output, transform_to_string ) @@ -567,11 +568,21 @@ async def _wrap_async_generator_result( items = [] try: - async for item in generator: - items.append(item) - - yield item + stack = _observation_stack_context.get() + try: + while True: + stack = _observation_stack_context.get() + _observation_stack_context.set(stack + [observation]) + + item = await anext(generator) + items.append(item) + _observation_stack_context.set(stack) + yield item + except StopAsyncIteration: + pass + finally: + _observation_stack_context.set(stack) finally: output = items