@@ -885,6 +885,49 @@ def handler(request: httpx.Request) -> httpx.Response:
885885 "config" : {"request_timeout_seconds" : 8.0 },
886886 }
887887
888+ @pytest .mark .asyncio
889+ async def test_client_omits_record_when_step_has_no_pinned_version (self ) -> None :
890+ from agent_control_evaluator_galileo .luna import GalileoLunaClient
891+
892+ captured : dict [str , object ] = {}
893+
894+ def handler (request : httpx .Request ) -> httpx .Response :
895+ captured ["body" ] = json .loads (request .content .decode ())
896+ return httpx .Response (200 , json = {"score" : 0.5 , "status" : "success" })
897+
898+ step = Step (
899+ type = "llm" ,
900+ name = "answer" ,
901+ input = "complete prompt" ,
902+ output = "complete response" ,
903+ tools = [{"name" : "search" , "input_schema" : {}}],
904+ ground_truth = "expected answer" ,
905+ )
906+ with patch .dict (os .environ , LUNA_ENV , clear = True ):
907+ client = GalileoLunaClient ()
908+ client ._client = httpx .AsyncClient (transport = httpx .MockTransport (handler ))
909+
910+ try :
911+ await client .invoke (
912+ scorer_id = SCORER_ID ,
913+ input = "selected prompt" ,
914+ output = "selected response" ,
915+ step = step ,
916+ )
917+ finally :
918+ await client .close ()
919+
920+ assert captured ["body" ] == {
921+ "scorer_id" : SCORER_ID ,
922+ "inputs" : {
923+ "query" : "selected prompt" ,
924+ "response" : "selected response" ,
925+ "ground_truth" : "expected answer" ,
926+ "tools" : [{"name" : "search" , "input_schema" : {}}],
927+ },
928+ "config" : {"request_timeout_seconds" : 8.0 },
929+ }
930+
888931 @pytest .mark .asyncio
889932 async def test_client_omits_record_for_step_type_orbit_does_not_support (self ) -> None :
890933 from agent_control_evaluator_galileo .luna import GalileoLunaClient
@@ -946,6 +989,7 @@ def handler(request: httpx.Request) -> httpx.Response:
946989 try :
947990 await client .invoke (
948991 scorer_id = "scorer-123" ,
992+ scorer_version_id = SCORER_VERSION_ID ,
949993 input = "selected input" ,
950994 output = "selected output" ,
951995 step = step ,
@@ -1000,6 +1044,7 @@ def handler(request: httpx.Request) -> httpx.Response:
10001044 try :
10011045 await client .invoke (
10021046 scorer_id = "scorer-123" ,
1047+ scorer_version_id = SCORER_VERSION_ID ,
10031048 input = {"query" : "selected" },
10041049 output = {"answer" : "selected" },
10051050 step = step ,
@@ -1262,7 +1307,12 @@ async def test_client_rejects_hierarchy_fields_from_step_context(self, field: st
12621307
12631308 try :
12641309 with pytest .raises (RecordFactoryError , match = "Step.context cannot define" ):
1265- await client .invoke (scorer_id = "scorer-123" , input = "selected" , step = step )
1310+ await client .invoke (
1311+ scorer_id = "scorer-123" ,
1312+ scorer_version_id = SCORER_VERSION_ID ,
1313+ input = "selected" ,
1314+ step = step ,
1315+ )
12661316 finally :
12671317 await client .close ()
12681318
0 commit comments