c1a894ad50
Frontend (frontend/app.js): - Add textarea for improvement feedback - Add submit button with loading state - Handle API response and display improved content Backend (backend/copywriter.py): - Add improve_copy() method using Cohere API - Integrate retry mechanism for API calls Backend (backend/main.py): - Add /improve-content POST endpoint - Implement error handling and return improved content with metadata Testing: - Verified feedback submission flow - Confirmed improved content generation - Tested error scenarios and loading states
95 lines
2.6 KiB
Python
95 lines
2.6 KiB
Python
"""
|
|
Configuration module for the Marketing Assistant AI.
|
|
Handles environment variables and application settings.
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
# Base paths
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
DATA_DIR = BASE_DIR / "data"
|
|
|
|
# Ensure data directories exist
|
|
(DATA_DIR / "past_campaigns").mkdir(exist_ok=True)
|
|
(DATA_DIR / "user_queries").mkdir(exist_ok=True)
|
|
(DATA_DIR / "style_guidelines").mkdir(exist_ok=True)
|
|
|
|
# API configuration
|
|
API_HOST = os.getenv("API_HOST", "localhost")
|
|
API_PORT = int(os.getenv("API_PORT", 8000))
|
|
|
|
# LLM configuration
|
|
LLM_MODEL = os.getenv("LLM_MODEL")
|
|
LLM_API_KEY = os.getenv("LLM_API_KEY")
|
|
|
|
# Cohere configuration
|
|
COHERE_API_KEY = os.getenv("COHERE_API_KEY")
|
|
|
|
# Vector database configuration
|
|
VECTOR_DB_PATH = os.getenv("VECTOR_DB_PATH", str(DATA_DIR / "vector_store"))
|
|
|
|
# Brand configuration
|
|
BRAND_NAME = os.getenv("BRAND_NAME", "Adriana James")
|
|
|
|
# Content types
|
|
CONTENT_TYPES = [
|
|
"website_copy",
|
|
"email",
|
|
"social_media",
|
|
"blog_post",
|
|
"sales_copy",
|
|
"ad_copy",
|
|
"video_script",
|
|
"case_study",
|
|
"product_description",
|
|
"landing_page",
|
|
"press_release",
|
|
"newsletter"
|
|
]
|
|
|
|
# Tone options - specifically matching Adriana James' communication style
|
|
TONE_OPTIONS = [
|
|
"empowering",
|
|
"assertive",
|
|
"inspirational",
|
|
"direct"
|
|
]
|
|
|
|
# Content length options
|
|
LENGTH_OPTIONS = [
|
|
"short", # < 100 words
|
|
"medium", # 100-300 words
|
|
"long", # > 300 words
|
|
]
|
|
|
|
# Default brand style guidelines - fixed to match Adriana James' distinct communication style
|
|
DEFAULT_BRAND_STYLE = {
|
|
"tone": ["empowering", "assertive", "inspirational", "direct"],
|
|
"voice_characteristics": ["clear", "confident", "conversational", "teaching"],
|
|
"writing_patterns": ["direct commands", "personal pronouns", "repetitive rhythms", "embedded commands", "cause-effect statements"],
|
|
"taboo_words": ["cheap", "discount", "bargain", "failure", "impossible", "difficult", "might", "try", "consider"],
|
|
"preferred_terms": {
|
|
"problems": "challenges",
|
|
"try": "take action",
|
|
"difficult": "ready for growth",
|
|
"failure": "learning opportunity",
|
|
"hope": "know",
|
|
"maybe": "will",
|
|
"might help you": "you can do this",
|
|
"consider doing this": "decide now to change your thinking",
|
|
"this could work": "this works because"
|
|
}
|
|
}
|
|
|
|
# Logging configuration
|
|
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
|
|
LOG_FILE = os.getenv("LOG_FILE", str(BASE_DIR / "logs" / "app.log"))
|
|
|
|
# Create logs directory if it doesn't exist
|
|
(BASE_DIR / "logs").mkdir(exist_ok=True)
|