Marketeer / core_logic /rewrite_tools.py
KPrashanth's picture
Upload 47 files
85ba912 verified
from typing import List
from langchain_core.tools import tool
from langchain_core.tools import BaseTool
@tool
def shorten_copy(text: str, max_words: int = 40) -> str:
"""Shorten the given marketing copy while preserving core meaning and CTA."""
# simple baseline implementation; the LLM will often rewrite again
words = text.split()
if len(words) <= max_words:
return text
return " ".join(words[:max_words]) + "..."
@tool
def remove_emojis(text: str) -> str:
"""Remove emojis and overly playful styling from the copy."""
# naive implementation – works fine as a starting point
import re
emoji_pattern = re.compile(
"["
"\U0001F600-\U0001F64F"
"\U0001F300-\U0001F5FF"
"\U0001F680-\U0001F6FF"
"\U0001F1E0-\U0001F1FF"
"]+",
flags=re.UNICODE,
)
no_emoji = emoji_pattern.sub("", text)
return " ".join(no_emoji.split())
def get_rewrite_tools() -> List[BaseTool]:
"""
Return the list of tools the agent can use.
Add tone_shift, expand, etc. here over time.
"""
return [shorten_copy, remove_emojis]