Spaces:
Sleeping
Sleeping
from api import Model | |
import os | |
def initial_prompt(list_of_articles, POSITIVE, NEGATIVE,cleaned_text): | |
return f""" | |
You are a senior data analyst with 15+ years of expertise in comparative analysis. Your task is to analyze multiple articles from the given list and generate a structured **JSON summary** that highlights key differences, patterns, and sentiment insights. | |
### **Input Data:** | |
- **Articles:** {list_of_articles} | |
### Complete contents of the articles: | |
{cleaned_text} | |
### **Task Requirements:** | |
1. **Identify Key Differences:** | |
- Highlight the **strongest contrasting viewpoints** or **highest topic overlap** among the articles. | |
2. **Generate a Structured JSON Output:** | |
- **Coverage Differences:** Identify variations in focus across articles. | |
- **Impact Analysis:** Explain how these differences affect audience perception. | |
3. **Perform Sentiment Analysis:** | |
- Generate a summary based on the sentiment distribution. | |
### **Sentiment Overview:** | |
- **Positive Mentions:** {POSITIVE} | |
- **Negative Mentions:** {NEGATIVE} | |
""" | |
prompt1 = """ | |
### **Expected JSON Output Format:** | |
{ | |
"Coverage Differences": [ | |
{ | |
"Comparison": "{Article_X} focuses on {Key_Topic_X}, while {Article_Y} highlights {Key_Topic_Y}.", | |
"Impact": "{Effect_of_the_different_focuses_on_audience_perception}." | |
}, | |
{ | |
"Comparison": "{Article_X} emphasizes {Aspect_X}, whereas {Article_Y} discusses {Aspect_Y}.", | |
"Impact": "{Potential_market_or_public_reaction}." | |
}, | |
{ | |
"Comparison": "{Article_X} presents {Perspective_X}, but {Article_Y} contrasts this with {Perspective_Y}.", | |
"Impact": "{Implications_of_the_conflicting_perspectives}." | |
} | |
], | |
"Topic Overlap": { | |
"Common Topics": ["{Common_Topic_1}", "{Common_Topic_2}"], | |
"Unique Topics in {Article_X}": ["{Unique_Topic_X_1}", "{Unique_Topic_X_2}"], | |
"Unique Topics in {Article_Y}": ["{Unique_Topic_Y_1}", "{Unique_Topic_Y_2}"] | |
}, | |
"Final Sentiment Analysis": "{Overall_sentiment_summary (Positive/Negative/Neutral) with a brief explanation}", | |
"Overall_Sentiment_Ssummarizing_Report" :"Complete contents of the articles content summarizing into give clean format." | |
} | |
### **Instructions:** | |
- **Strictly** follow this JSON structure in your output. | |
- Do **not** include any additional text besides the JSON. | |
""" | |
def generate_response(list_of_articles,POSITIVE,NEGATIVE,clean_text): | |
prompt = initial_prompt(list_of_articles,POSITIVE,NEGATIVE,clean_text) + "\n\n"+ prompt1 | |
answer_text= Model.OPENAI_MODEL(prompt) | |
start_index_square = answer_text.find('[') | |
start_index_curly = answer_text.find('{') | |
if start_index_square != -1 and (start_index_curly == -1 or start_index_square < start_index_curly): | |
start_index = start_index_square | |
end_char = ']' | |
elif start_index_curly != -1 and (start_index_square == -1 or start_index_curly < start_index_square): | |
start_index = start_index_curly | |
end_char = '}' | |
else: | |
return ("Error: JSON data not found.") | |
extracted_json = None | |
end_index = answer_text.rfind(end_char) | |
if start_index != -1 and end_index != -1: | |
extracted_json = answer_text[start_index:end_index + 1] | |
return (extracted_json) | |