프로덕션 트래픽에서 에이전트의 품질을 모니터링하는 방법
Important
이 기능은 공개 미리 보기 상태입니다.
이 문서에서는 Mosaic AI 에이전트 평가를 사용하여 프로덕션 트래픽에 배포된 에이전트의 품질을 모니터링하는 방법을 설명합니다.
온라인 모니터링은 에이전트가 실제 요청에서 의도한 대로 작동하는지 확인하는 중요한 측면입니다. 아래에 제공된 Notebook을 사용하여 에이전트 서비스 엔드포인트를 통해 제공되는 요청에 대해 에이전트 평가를 지속적으로 실행할 수 있습니다. Notebook은 프로덕션 요청에 대한 에이전트의 출력에 대한 사용자 피드백(엄지 또는 엄지 손가락 👍 아래로👎)뿐만 아니라 품질 메트릭을 표시하는 대시보드를 생성합니다. 이 피드백은 관련자의 검토 앱 또는 최종 사용자 반응을 캡처할 수 있는 프로덕션 엔드포인트에 대한 피드백 API를 통해 도착할 수 있습니다. 대시보드를 사용하면 시간별, 사용자 피드백, 통과/실패 상태 및 입력 요청의 토픽을 포함하여 다양한 차원으로 메트릭을 분할할 수 있습니다(예: 특정 토픽이 낮은 품질의 출력과 상관 관계가 있는지 여부를 이해). 또한 품질이 낮은 응답을 사용하여 개별 요청에 대해 자세히 알아보고 추가로 디버그할 수 있습니다. 대시보드와 같은 모든 아티팩트에서는 완전히 사용자 지정할 수 있습니다.
요구 사항
에이전트 평가를 통해 프로덕션 트래픽을 지속적으로 처리
다음 예제 Notebook에서는 엔드포인트를 제공하는 에이전트의 요청 로그에서 에이전트 평가를 실행하는 방법을 보여 줍니다. Notebook을 실행하려면 다음 단계를 수행합니다.
- 작업 영역에서 Notebook을 가져옵니다(지침). 아래의 "가져오기용 링크 복사" 단추를 클릭하여 가져오기에 대한 URL을 가져올 수 있습니다.
- 가져온 전자 필기장의 맨 위에 필요한 매개 변수를 입력합니다.
- 배포된 에이전트의 서비스 엔드포인트의 이름입니다.
- 샘플 요청에 대한 샘플 속도는 0.0에서 1.0 사이입니다. 트래픽이 많은 엔드포인트에 대해 더 낮은 속도를 사용합니다.
- (선택 사항) 생성된 아티팩트(예: 대시보드)를 저장할 작업 영역 폴더입니다. 기본값은 홈 폴더입니다.
- (선택 사항) 입력 요청을 분류할 항목 목록입니다. 기본값은 단일 catch-all 토픽으로 구성된 목록입니다.
- 가져온 전자 필기장에서 모두 실행을 클릭합니다. 이렇게 하면 30일 기간 내에 프로덕션 로그를 초기 처리하고 품질 메트릭을 요약하는 대시보드를 초기화합니다.
- 일정을 클릭하여 Notebook을 주기적으로 실행하는 작업을 만듭니다. 작업은 프로덕션 로그를 증분 방식으로 처리하고 대시보드를 최신 상태로 유지합니다.
Notebook에는 서버리스 컴퓨팅 또는 Databricks Runtime 15.2 이상을 실행하는 클러스터가 필요합니다. 요청 수가 많은 엔드포인트에서 프로덕션 트래픽을 지속적으로 모니터링하는 경우 더 빈번한 일정을 설정하는 것이 좋습니다. 예를 들어 시간당 일정은 시간당 요청이 10,000개 이상이고 샘플 속도가 10%인 엔드포인트에서 잘 작동합니다.
프로덕션 트래픽 Notebook에서 에이전트 평가 실행
평가 메트릭에 대한 경고 만들기
Notebook이 주기적으로 실행되도록 예약한 후 품질 메트릭이 예상보다 낮아질 때 알림을 받을 경고를 추가할 수 있습니다. 이러한 경고는 다른 Databricks SQL 경고와 동일한 방식으로 만들어지고 사용됩니다. 먼저 예제 Notebook에서 생성된 평가 요청 로그 테이블에 Databricks SQL 쿼리를 만듭니다. 다음 코드는 지난 1시간 동안의 요청을 필터링하는 평가 요청 테이블에 대한 예제 쿼리를 보여 줍니다.
SELECT
`date`,
AVG(pass_indicator) as avg_pass_rate
FROM (
SELECT
*,
CASE
WHEN `response/overall_assessment/rating` = 'yes' THEN 1
WHEN `response/overall_assessment/rating` = 'no' THEN 0
ELSE NULL
END AS pass_indicator
-- The eval requests log table is generated by the example notebook
FROM {eval_requests_log_table_name}
WHERE `date` >= CURRENT_TIMESTAMP() - INTERVAL 1 DAY
)
GROUP BY ALL
그런 다음 Databricks SQL 경고를 만들어 원하는 빈도로 쿼리를 평가하고 경고가 트리거되면 알림을 보냅니다. 다음 이미지는 전체 통과율이 80% 미만으로 떨어질 때 경고를 보내는 예제 구성을 보여줍니다.
기본적으로 이메일 알림이 전송됩니다. 웹후크를 설정하거나 Slack 또는 PagerDuty와 같은 다른 애플리케이션에 알림을 보낼 수도 있습니다.
사용자 검토를 위해 선택한 프로덕션 로그를 검토 앱에 추가
사용자가 요청에 대한 피드백을 제공하므로 주제 전문가에게 부정적인 피드백(응답 또는 검색에 대한 엄지 손가락이 있는 요청)을 검토하도록 요청할 수 있습니다. 이렇게 하려면 검토 앱에 특정 로그를 추가하여 전문가 검토를 요청합니다.
다음 코드는 요청 ID 및 원본 ID당 가장 최근의 사용자 평가를 검색하는 평가 로그 테이블에 대한 예제 쿼리를 보여 줍니다.
with ranked_logs as (
select
`timestamp`,
request_id,
source.id as source_id,
text_assessment.ratings["answer_correct"]["value"] as text_rating,
retrieval_assessment.ratings["answer_correct"]["value"] as retrieval_rating,
retrieval_assessment.position as retrieval_position,
row_number() over (
partition by request_id, source.id, retrieval_assessment.position order by `timestamp` desc
) as rank
from {assessment_log_table_name}
)
select
request_id,
source_id,
text_rating,
retrieval_rating
from ranked_logs
where rank = 1
order by `timestamp` desc
다음 코드에서 위의 쿼리와 유사한 쿼리로 줄 human_ratings_query = "..."
에서 바꿉 ...
다. 그런 다음, 다음 코드는 부정적인 피드백으로 요청을 추출하고 검토 앱에 추가합니다.
from databricks import agents
human_ratings_query = "..."
human_ratings_df = spark.sql(human_ratings_query).toPandas()
# Filter out the positive ratings, leaving only negative and "IDK" ratings
negative_ratings_df = human_ratings_df[
(human_ratings_df["text_rating"] != "positive") | (human_ratings_df["retrieval_rating"] != "positive")
]
negative_ratings_request_ids = negative_ratings_df["request_id"].drop_duplicates().to_list()
agents.enable_trace_reviews(
model_name=YOUR_MODEL_NAME,
request_ids=negative_ratings_request_ids,
)
검토 앱에 대한 자세한 내용은 에이전트 애플리케이션의 품질에 대한 피드백 가져오기를 참조하세요.