Async Evaluation

Async Evaluation (비동기 평가)

동기·비동기 평가 API에 대한 문서예요. 프로덕션 환경에서 이벤트 루프 충돌을 피하려면 aevaluate()를 사용하는 게 좋아요.

출처: 문서

본문

aevaluate()

import asyncio
from ragas import aevaluate

async def main():
    result = await aevaluate(dataset, metrics)
    print(result)

asyncio.run(main())

비동기 사용법

Ragas는 다양한 사용 사례에 맞춰 동기·비동기 평가 API를 모두 제공해요.

aevaluate() 사용 (프로덕션 권장)

프로덕션 비동기 애플리케이션에서는 aevaluate()를 사용해 이벤트 루프 충돌을 피하세요.

import asyncio
from ragas import aevaluate

async def evaluate_app():
    result = await aevaluate(dataset, metrics)
    return result

# In your async application
result = await evaluate_app()

evaluate()를 비동기 제어와 함께 사용

하위 호환성과 Jupyter 노트북 사용을 위해 evaluate()nest_asyncio 제어를 선택적으로 제공해요.

# Default behavior (Jupyter-compatible)
result = evaluate(dataset, metrics)  # allow_nest_asyncio=True

# Production-safe (avoids event loop patching)
result = evaluate(dataset, metrics, allow_nest_asyncio=False)

nest_asyncio 문제에서의 마이그레이션

프로덕션에서 nest_asyncio 관련 문제를 겪고 있다면 다음과 같이 해결해요.

Before (문제 발생):

# This may cause event loop conflicts
result = evaluate(dataset, metrics)

After (해결):

# Option 1: Use async API
result = await aevaluate(dataset, metrics)

# Option 2: Disable nest_asyncio
result = evaluate(dataset, metrics, allow_nest_asyncio=False)

더 알아보기 (Learn more)