monk / generate_wisdom.py
hf-actions
Clean commit: remove virtualenv and large files
ca2863a
import os
import logging
import argparse
from dotenv import load_dotenv
try:
# new OpenAI v1 client
from openai import OpenAI
openai_client = OpenAI()
openai_legacy = None
except Exception:
try:
import openai as openai_legacy
openai_client = None
except Exception:
openai_client = None
openai_legacy = None
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
logger = logging.getLogger(__name__)
def generate_wisdom(prompt: str | None = None, max_tokens: int = 120) -> str:
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
logger.error("OPENAI_API_KEY not found in environment")
raise SystemExit(1)
base_prompt = (
"You are a concise Buddhist teacher. Provide a short (1-3 sentence) piece of wisdom"
" suitable for a social media post. Keep it insightful, non-denominational, and respectful."
)
if prompt:
user_prompt = f"{base_prompt}\nTopic: {prompt}\n"
else:
user_prompt = base_prompt
logger.info("Requesting wisdom from OpenAI (max_tokens=%s)", max_tokens)
if openai_client is not None:
# new OpenAI v1 client
resp = openai_client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You generate short Buddhist wisdom quotes."},
{"role": "user", "content": user_prompt},
],
max_tokens=max_tokens,
temperature=0.8,
)
# response shape: resp.choices[0].message.content
try:
text = resp.choices[0].message.content.strip()
except Exception:
# fallback to dict access
text = resp["choices"][0]["message"]["content"].strip()
elif openai_legacy is not None:
openai_legacy.api_key = api_key
resp = openai_legacy.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You generate short Buddhist wisdom quotes."},
{"role": "user", "content": user_prompt},
],
max_tokens=max_tokens,
temperature=0.8,
)
text = resp["choices"][0]["message"]["content"].strip()
else:
logger.error("No usable OpenAI client available (install openai package)")
raise SystemExit(1)
logger.info("Received wisdom: %s", text)
return text
def main():
parser = argparse.ArgumentParser(description="Generate short Buddhism wisdom via OpenAI")
parser.add_argument("-p", "--prompt", help="Optional topic prompt")
parser.add_argument("--post", action="store_true", help="Post generated wisdom to Facebook using FB_PAGE_ACCESS_TOKEN in .env")
parser.add_argument("--dry-run", action="store_true", help="Print but do not post")
args = parser.parse_args()
wisdom = generate_wisdom(args.prompt)
print("Generated wisdom:\n", wisdom)
if args.post:
if args.dry_run:
logger.info("Dry run enabled — not posting to Facebook")
return
from post_to_facebook import post_to_facebook
from dotenv import load_dotenv
load_dotenv()
page_id = os.getenv("FB_PAGE_ID")
token = os.getenv("FB_PAGE_ACCESS_TOKEN")
if not page_id or not token:
logger.error("FB_PAGE_ID or FB_PAGE_ACCESS_TOKEN missing in environment")
raise SystemExit(1)
logger.info("Posting wisdom to Facebook page %s", page_id)
res = post_to_facebook(page_id, token, wisdom)
logger.info("Facebook response: %s", res)
print("Posted. Response:", res)
if __name__ == "__main__":
main()