more updates for reflexion

This commit is contained in:
Adam Wilson
2025-07-28 10:31:55 -06:00
parent 5bc9f480f9
commit 2659e6e43c
12 changed files with 439 additions and 340 deletions
@@ -12,9 +12,16 @@ class GuardrailsResult:
user_prompt: str,
completion_text: str,
full_prompt: dict[str, Any],
llm_config: dict
llm_config: dict,
cosine_similarity_score: float = -1.0,
cosine_similarity_risk_threshold: float = 0.0
):
self.user_prompt = user_prompt
self.completion_text = completion_text
self.full_prompt = full_prompt
self.llm_config = llm_config
self.llm_config = llm_config
self.cosine_similarity_score = cosine_similarity_score
self.cosine_similarity_risk_threshold = cosine_similarity_risk_threshold
def is_completion_malicious(self) -> bool:
return self.cosine_similarity_score >= self.cosine_similarity_risk_threshold
@@ -17,11 +17,11 @@ class GuidelinesResult(AbstractGuidelinesProcessedCompletion):
cosine_similarity_risk_threshold: float = 0.0
):
self.user_prompt = user_prompt
self.completion_text = completion_text
self.guidelines_completion_text = completion_text
self.full_prompt = full_prompt
self.llm_config = llm_config
self.cosine_similarity_score = cosine_similarity_score
self.cosine_similarity_risk_threshold = cosine_similarity_risk_threshold
def is_original_completion_malicious(self) -> bool:
def is_completion_malicious(self) -> bool:
return self.cosine_similarity_score >= self.cosine_similarity_risk_threshold
@@ -17,38 +17,62 @@ class TextGenerationCompletionResult(AbstractTextGenerationCompletionResult):
self,
original_result: OriginalCompletionResult,
guidelines_result: Optional[GuidelinesResult] = None,
guardrails_result: Optional[GuardrailsResult] = None
guardrails_result: Optional[GuardrailsResult] = None,
alternate_result: Optional[AlternateCompletionResult] = None
):
self.original_result = original_result
self.guidelines_result = guidelines_result
self.guardrails_result = guardrails_result
self.alternate_result = alternate_result
self.final_completion_text = ''
def finalize(self) -> str:
def finalize_completion_text(self) -> str:
"""
Returns the final completion text based on priority order:
Returns the current completion text based on priority order:
1. guardrails_result.completion_text (if not empty)
2. guidelines_result.completion_text (if not empty)
3. original_result.completion_text (if not empty)
"""
# Check guardrails_result.completion_text first
print(f'Finalized text was \"{self.final_completion_text}\"')
# Check alternate text first
if (self.alternate_result and
self.alternate_result.alterate_completion_text and
self.alternate_result.alterate_completion_text.strip()
):
self.final_completion_text = self.alternate_result.alterate_completion_text
print(f'Using alternate result. Finalized text is now \"{self.final_completion_text}\"')
return
# Check guardrails_result.completion_text next
if (self.guardrails_result and
self.guardrails_result.completion_text and
self.guardrails_result.completion_text.strip()):
return self.guardrails_result.completion_text
self.guardrails_result.completion_text.strip()
):
self.final_completion_text = self.guardrails_result.completion_text
print(f'Using guardrails result. Finalized text is now \"{self.final_completion_text}\"')
return
# Fall back to guidelines_result.completion_text
if (self.guidelines_result and
self.guidelines_result.completion_text and
self.guidelines_result.completion_text.strip()):
return self.guidelines_result.completion_text
self.guidelines_result.guidelines_completion_text and
self.guidelines_result.guidelines_completion_text.strip()
):
self.final_completion_text = self.guidelines_result.guidelines_completion_text
print(f'Using guidelines result. Finalized text is now \"{self.final_completion_text}\"')
return
# Fall back to original_result.completion_text
if (self.original_result and
self.original_result.completion_text and
self.original_result.completion_text.strip()):
return self.original_result.completion_text
self.original_result.completion_text.strip()
):
self.final_completion_text = self.original_result.completion_text
print(f'Using original. Finalized text is now \"{self.final_completion_text}\"')
return
# If all are empty, return empty string
return ""
self.final_completion_text = ""
print(f'Finalized text is now \"{self.final_completion_text}\"')
return