Capture and safely recover shared LLM responses with bounded field repairs
This commit is contained in:
1 parent
c6f4ea9877
commit
da1ea9c3a3
25 files changed
+1002
-46
No files matched your search
@@ -0,0 +1,31 @@
|
||||
import copy
|
||||
import json
|
||||
from test_case_builder import case_setup
|
||||
from test_case_interpreter import built_case, gateway
|
||||
from test_hypothesis_builder import interpreted_case, ProposalAdapter, run
|
||||
from viano_bug_analysis.analysis import HypothesisBuilder
|
||||
from viano_bug_analysis.llm import ProviderResponse
|
||||
from viano_bug_analysis.llm.answer_recovery import PATCH_PROMPT
|
||||
from viano_bug_analysis.package import PackageReader
|
||||
|
||||
|
||||
def test_duplicate_title_reuses_full_proposals_and_passes_registry_replay(interpreted_case):
|
||||
store,*_=interpreted_case
|
||||
class Adapter(ProposalAdapter):
|
||||
async def generate(self,config,request,**kwargs):
|
||||
if request['prompt_version']==PATCH_PROMPT:
|
||||
self.requests.append(copy.deepcopy(request))
|
||||
return ProviderResponse({'replacement':'Stored state after interaction'},'fixture',10,5)
|
||||
return await super().generate(config,request,**kwargs)
|
||||
def duplicate(payload,context):payload['hypotheses'][1]['title']=payload['hypotheses'][0]['title']
|
||||
adapter=Adapter(duplicate);builder=HypothesisBuilder(store,gateway(adapter))
|
||||
result=run(builder)
|
||||
assert result.status=='COMPLETED' and len(adapter.requests)==2
|
||||
old_size=sum(len(m['content']) for m in adapter.requests[0]['messages'])
|
||||
patch_size=sum(len(m['content']) for m in adapter.requests[1]['messages'])
|
||||
assert patch_size < old_size / 2
|
||||
with PackageReader(result.package) as reader:
|
||||
document=json.loads(reader.read_bytes(result.hypotheses_ref))
|
||||
assert document['hypotheses'][1]['proposal']['title']=='Stored state after interaction'
|
||||
assert len(document['hypotheses'])==3
|
||||
assert run(builder).reused and len(adapter.requests)==2
|
||||
Reference in new issue
Block a user