recent data

This commit is contained in:
timothyafolami
2024-11-27 20:44:26 +01:00
parent d5cdeec299
commit b7a73606e0
25 changed files with 4693 additions and 2965 deletions
+18 -4
View File
@@ -1,10 +1,9 @@
import os
import requests
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from tavily import TavilyClient
from langchain_core.prompts.prompt import PromptTemplate
from langchain_core.output_parsers import StrOutputParser, JsonOutputParser
from langchain_core.output_parsers import JsonOutputParser
from loguru import logger
import concurrent.futures
import json
@@ -20,6 +19,11 @@ llm = ChatOpenAI(model="gpt-4o")
# Instantiating TavilyClient
tavily_client = TavilyClient()
# Check for missing environment variables
if not os.getenv("OPENAI_API_KEY") or not os.getenv("TAVILY_API_KEY") or not os.getenv("PERPLEXITY_AI_API"):
logger.error("One or more API keys are missing from the environment variables.")
raise EnvironmentError("Missing API keys.")
def get_influencer_data(social_media: str, influencer_name:str , socialmedia_name: str, socialmedia_followers:str) -> dict:
logger.info(f"Formatting Influencer Data")
initiator_prompt = PromptTemplate(
@@ -46,7 +50,11 @@ def get_influencer_data(social_media: str, influencer_name:str , socialmedia_nam
)
initiator_router = initiator_prompt | llm | JsonOutputParser()
output = initiator_router.invoke({"social_media":social_media, "socialmedia_name":socialmedia_name, "socialmedia_followers":socialmedia_followers, "influencer_name":influencer_name})
try:
output = initiator_router.invoke({"social_media":social_media, "socialmedia_name":socialmedia_name, "socialmedia_followers":socialmedia_followers, "influencer_name":influencer_name})
except Exception as e:
logger.error(f"Error extracting influencer data: {e}")
return {"influencer_name": influencer_name, "followers": None} # Return structured JSON
return output
def socialmedia_details(social_media:str, influencer_name:str, product_category:str):
@@ -94,7 +102,8 @@ def get_influencer_contact(influencer_name:str, contact:str, location:str) -> di
output = initiator_router.invoke({"contact":contact, "location":location, "influencer_name":influencer_name})
return output
def contact_details(influencer_name:str, product_category:str):
def contact_details(influencer_name: str, product_category: str) -> dict:
"""Fetch and format influencer contact details."""
logger.info(f"contact details search")
contact_question = f"What is the contact details or email of {influencer_name}, this person is a popular {product_category} influencer."
print(contact_question)
@@ -150,3 +159,8 @@ def get_all_influencer_data(influencer_names: list, category: str):
logger.error(f"{influencer} generated an exception: {exc}")
return all_influencers_data
# # data = get_all_influencer_data(influencer_names=['Kylie Swift'], category="Entertainment & Pop Culture")
# data = socialmedia_details("Facebook", "Kylie Swift", "Entertainment")
# print(data)