import sys
import os
import json
from ..gpt_providers.text_generation.openai_text_gen import openai_text_generation
from ..gpt_providers.text_generation.gemini_pro_text import gemini_text_generation
from loguru import logger
logger.remove()
logger.add(sys.stdout,
colorize=True,
format="{level}|{file}:{line}:{function}| {message}"
)
# FIXME: Provide num_blogs, num_faqs as inputs.
def get_blog_sections_from_websearch(search_keyword, search_results):
"""Combine the given online research and gpt blog content"""
gpt_providers = os.environ["GPT_PROVIDER"]
prompt = f"""
As a SEO expert and content writer, I will provide you with a search keyword and its google search result.
Your task is to write a blog title and 5 blog sub titles, from the given google search result.
The subtitles should be less than 40 characters and click worthy.
Do not explain, describe your response. Respond in json format, always name the key as 'blogSections'.
Web Research Keyword: "{search_keyword}"
Google search Result: "{search_results}"
"""
if 'gemini' in gpt_providers:
try:
response = gemini_text_response(prompt)
if '```' in response and '\n' in response:
response = response.strip().split('\n')
# Remove the first and last lines
response = '\n'.join(response[1:-1])
response = json.loads(response)
return response
except Exception as err:
logger.error(f"Failed to get response from gemini: {err}")
logger.error(f"Gemini Error: {response.prompt_feedback}")
raise err
elif 'openai' in gpt_providers:
try:
logger.info("Calling OpenAI LLM.")
response = openai_chatgpt(prompt)
return response
except Exception as err:
logger.error(f"Failed to get response from Openai: {err}")
raise err