# Note: This example uses Python SDK v7
from arize.pandas.logger import Client
# Rename columns to match Arize AX schema
tool_eval_results = tool_eval_results.rename(columns={
"label": "ToolEvaluation.label",
"explanation": "ToolEvaluation.explanation",
})[["ToolEvaluation.label", "ToolEvaluation.explanation"]]
relevance_eval_results = relevance_eval_results.rename(columns={
"label": "RecommendationRelevance.label",
"explanation": "RecommendationRelevance.explanation",
})[["RecommendationRelevance.label", "RecommendationRelevance.explanation"]]
# Combine evaluation results
combined_eval_results = tool_eval_results \
.join(relevance_eval_results, how="outer")
# Merge with trace data
merged_df = pd.merge(trace_df, combined_eval_results, left_index=True, right_index=True)
merged_df.rename(
columns={
"ToolEvaluation.label": "trace_eval.ToolEvaluation.label",
"ToolEvaluation.explanation": "trace_eval.ToolEvaluation.explanation",
"RecommendationRelevance.label": "trace_eval.RecommendationRelevance.label",
"RecommendationRelevance.explanation": "trace_eval.RecommendationRelevance.explanation",
},
inplace=True,
)
# Get root spans for logging
root_spans = primary_df[primary_df["parent_id"].isna()][["context.trace_id", "context.span_id"]]
log_df = merged_df.merge(root_spans, on="context.trace_id", how="left")
# Log evaluations back to Arize AX
arize_client = Client(
space_id = os.environ["ARIZE_SPACE_ID"],
api_key = os.environ["ARIZE_API_KEY"],
)
resp = arize_client.log_evaluations_sync(
dataframe = log_df,
model_id = model_id,
)