feat: Limit Trump mentions based on previous titles
Some checks are pending
Create and publish a Docker image / build-and-push-image (push) Waiting to run

This commit is contained in:
Marty Oehme 2025-07-22 05:49:29 +02:00
parent a8958c76fb
commit 2da0b90b1b
Signed by: Marty
GPG key ID: 4E535BC19C61886E
2 changed files with 21 additions and 6 deletions

View file

@ -5,7 +5,9 @@ from prophet.domain.original import Original
class LLMClient(Protocol):
def rewrite(self, original: Original) -> Improvement:
def rewrite(
self, original: Original, previous_titles: list[str] | None = None
) -> Improvement:
raise NotImplementedError
def rewrite_title(

View file

@ -21,7 +21,9 @@ class GroqClient(LLMClient):
self.client = client if client else Groq(api_key=self.config_ai.API_KEY)
@override
def rewrite(self, original: Original) -> Improvement:
def rewrite(
self, original: Original, previous_titles: list[str] | None = None
) -> Improvement:
suggestions = self.get_alternative_title_suggestions(original.title)
new_title = self.rewrite_title(original.title, suggestions)
new_summary = self.rewrite_summary(original, new_title)
@ -30,18 +32,22 @@ class GroqClient(LLMClient):
@override
def get_alternative_title_suggestions(
self, original_content: str, custom_prompt: str | None = None
self,
original_content: str,
previous_titles: list[str] | None = None,
custom_prompt: str | None = None,
) -> str:
prompt = (
custom_prompt
if custom_prompt
else """
else f"""
Political context: We are in the year 2025, Donald Trump is
President of the United States again. There has been a crackdown on
'illegal' immigration, with controversial disappearings happening
almost every day. Many are calling the United States an
increasingly fascist state.
almost every day by masked ICE agents. Many view the United States
as an increasingly fascist state, and the disappearings fueled by
racism.
You are a comedy writer at a left-leaning satirical newspaper.
Improve on the following satirical headline. Your new headline is
@ -49,6 +55,13 @@ class GroqClient(LLMClient):
It should be roughly the length of the original headline. Print
only new suggestions, with one suggestion on each line.
Do not create a headline naming Trump if more than 2 of the
previous headlines already do so and he is not specifically
referenced in the original headline.
{"The previous 5 headlines you created are the following:\n- " if previous_titles else ""}
{"\n- ".join(previous_titles) if previous_titles else ""}
"""
)
suggestions = self.client.chat.completions.create(