def llm_rerank( query, candidate_df, text_column="child_text", top_k=3, ): candidates = [ { "candidate_id": i, "text": row[text_column], } for i, (_, row) in enumerate( candidate_df.iterrows(), start=1, ) ] payload = { "query": query, "instruction": ( "Rank candidates by how directly " "and completely they help answer " f"the query. Return the best {top_k} IDs." ), "candidates": candidates, } response = client.responses.create( model=RERANK_MODEL, input=[ { "role": "system", "content": ( 'Return valid JSON only: ' '{"ranked_candidate_ids":[1,2,3]}' ), }, { "role": "user", "content": json.dumps(payload), }, ], ) ranked_ids = json.loads( response.output_text )["ranked_candidate_ids"][:top_k] rows = [] for new_rank, candidate_id in enumerate( ranked_ids, start=1, ): if 1 <= candidate_id <= len(candidate_df): row = candidate_df.iloc[ candidate_id - 1 ].copy() row["initial_rank"] = candidate_id row["reranked_rank"] = new_rank rows.append(row) return pd.DataFrame(rows) __ __