mirror of
https://github.com/lightbroker/llmsecops-research.git
synced 2026-07-07 13:37:58 +02:00
more updates for reflexion
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user