Spaces:
Running
Running
Update chatbot_prompts.py
Browse files- chatbot_prompts.py +28 -41
chatbot_prompts.py
CHANGED
|
@@ -1,82 +1,70 @@
|
|
| 1 |
# chatbot_prompts.py
|
| 2 |
import logging
|
| 3 |
|
| 4 |
-
def
|
| 5 |
"""
|
| 6 |
-
Generates an initial
|
| 7 |
Args:
|
| 8 |
plot_id (str): The unique identifier for the plot.
|
| 9 |
plot_label (str): The display label for the plot.
|
| 10 |
plot_data_summary (str, optional): A textual summary of the data for the plot.
|
| 11 |
Returns:
|
| 12 |
-
tuple: (
|
| 13 |
"""
|
| 14 |
-
logging.info(f"Generating initial insight for plot_id: {plot_id}, label: {plot_label}")
|
| 15 |
-
# logging.debug(f"Data summary for initial insight of '{plot_label}':\n{plot_data_summary}")
|
| 16 |
|
|
|
|
|
|
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
|
|
|
| 24 |
else:
|
| 25 |
-
|
| 26 |
|
| 27 |
-
# Default suggestions
|
| 28 |
suggestions = [
|
| 29 |
f"What are the key drivers for {plot_label.lower()} based on the data?",
|
| 30 |
f"How can I improve my {plot_label.lower()} according to these trends?",
|
| 31 |
f"What does good performance look like for {plot_label.lower()}?"
|
| 32 |
]
|
| 33 |
|
| 34 |
-
# Customize
|
| 35 |
-
# These specific insights can now refer to the data summary provided above.
|
| 36 |
if plot_id == "followers_count":
|
| 37 |
-
insight_text += ("Tracking your 'Numero di Follower nel Tempo' is crucial. A steady increase, as potentially shown in the data snapshot, indicates growing brand reach and influence. "
|
| 38 |
-
"If you observe stagnation or decline, it might be time to review your content strategy, posting frequency, or engagement tactics with your target audience. "
|
| 39 |
-
"Consider running campaigns or promoting your LinkedIn page on other channels.")
|
| 40 |
suggestions = [
|
| 41 |
"Based on the follower data, what was our peak growth period?",
|
| 42 |
-
"How often should I post to maximize follower growth
|
| 43 |
-
"What content typically resonates most with potential followers
|
| 44 |
]
|
| 45 |
elif plot_id == "engagement_rate":
|
| 46 |
-
insight_text += ("Your 'Tasso di Engagement nel Tempo' is a vital indicator of how compelling your audience finds your content. Higher rates, reflected in the data, signify that your posts are sparking meaningful interactions. "
|
| 47 |
-
"If engagement is low, re-evaluate content relevance, the types of media used, and the clarity of your calls to action. Experiment with questions, polls, and interactive content.")
|
| 48 |
suggestions = [
|
| 49 |
"What does the engagement trend tell us about recent content performance?",
|
| 50 |
-
"What types of posts typically get the highest engagement
|
| 51 |
-
"Can you give me examples of strong calls to action
|
| 52 |
]
|
| 53 |
elif plot_id == "reach_over_time":
|
| 54 |
-
insight_text += ("The 'Copertura nel Tempo' (Reach) shows how many unique LinkedIn members are seeing your posts. Expanding reach is fundamental for brand awareness. "
|
| 55 |
-
"If this metric is flat or declining in the provided data, explore content sharing strategies, encourage employees to share company posts, utilize relevant hashtags, and consider targeted LinkedIn advertising.")
|
| 56 |
suggestions = [
|
| 57 |
"What does the reach data suggest about our content visibility?",
|
| 58 |
-
"What are effective organic strategies to increase post reach
|
| 59 |
-
"How do hashtags and tagging strategies impact reach
|
| 60 |
]
|
| 61 |
elif plot_id == "impressions_over_time":
|
| 62 |
-
insight_text += ("'Visualizzazioni nel Tempo' (Impressions) indicates the total number of times your posts have been seen. "
|
| 63 |
-
"High impressions are good, but also analyze them in conjunction with engagement (check the engagement rate chart) to ensure visibility translates to interaction.")
|
| 64 |
suggestions = [
|
| 65 |
"How do current impressions compare to previous periods based on the data?",
|
| 66 |
-
"What's the difference between reach and impressions
|
| 67 |
-
"Does LinkedIn's algorithm favor certain
|
| 68 |
]
|
| 69 |
elif plot_id == "comments_sentiment":
|
| 70 |
-
insight_text += ("Analyzing the 'Ripartizione Commenti per Sentiment' provides qualitative insights. The data snapshot should show the distribution. "
|
| 71 |
-
"A high volume of positive sentiment is ideal. Pay close attention to neutral and negative comments to understand concerns or areas for improvement.")
|
| 72 |
suggestions = [
|
| 73 |
"What does the sentiment breakdown indicate about audience perception?",
|
| 74 |
-
"How can I encourage more positive comments
|
| 75 |
-
"What's the best way to respond to negative comments
|
| 76 |
]
|
| 77 |
-
|
| 78 |
-
insight_text += (f"This chart on '{plot_label}' provides valuable data. Analyzing its trends, peaks, and troughs, as seen in the snapshot, can help you refine your LinkedIn strategy. "
|
| 79 |
-
f"Look for patterns and correlate them with your activities or external events to understand performance drivers.")
|
| 80 |
|
| 81 |
# Ensure exactly 3 suggestions
|
| 82 |
while len(suggestions) < 3:
|
|
@@ -84,5 +72,4 @@ def get_initial_insight_and_suggestions(plot_id: str, plot_label: str, plot_data
|
|
| 84 |
if len(suggestions) > 3:
|
| 85 |
suggestions = suggestions[:3]
|
| 86 |
|
| 87 |
-
|
| 88 |
-
return initial_chat_message, suggestions
|
|
|
|
| 1 |
# chatbot_prompts.py
|
| 2 |
import logging
|
| 3 |
|
| 4 |
+
def get_initial_insight_prompt_and_suggestions(plot_id: str, plot_label: str, plot_data_summary: str = None):
|
| 5 |
"""
|
| 6 |
+
Generates an initial prompt for the LLM to provide insights on a plot and suggested questions.
|
| 7 |
Args:
|
| 8 |
plot_id (str): The unique identifier for the plot.
|
| 9 |
plot_label (str): The display label for the plot.
|
| 10 |
plot_data_summary (str, optional): A textual summary of the data for the plot.
|
| 11 |
Returns:
|
| 12 |
+
tuple: (prompt_for_llm_str, list_of_suggestion_strings)
|
| 13 |
"""
|
| 14 |
+
logging.info(f"Generating initial insight prompt for plot_id: {plot_id}, label: {plot_label}")
|
|
|
|
| 15 |
|
| 16 |
+
base_persona_prompt = "You are an expert in Employer Branding and LinkedIn social media strategy. Analyze the following data for the chart '{plot_label}' and provide key insights and actionable advice. Focus on interpreting the provided data snapshot."
|
| 17 |
+
prompt_text = f"{base_persona_prompt.format(plot_label=plot_label)}\n\n"
|
| 18 |
|
| 19 |
+
if plot_data_summary and plot_data_summary.strip() and \
|
| 20 |
+
"No data summary available" not in plot_data_summary and \
|
| 21 |
+
"Error generating data summary" not in plot_data_summary and \
|
| 22 |
+
"Accesso negato" not in plot_data_summary and \
|
| 23 |
+
f"Nessun sommario dati specifico disponibile per '{plot_label}'" not in plot_data_summary : # Added check for this specific no data message
|
| 24 |
+
prompt_text += f"Data Snapshot for '{plot_label}':\n```text\n{plot_data_summary}\n```\n\n"
|
| 25 |
+
prompt_text += "Based on this data and your expertise, what are the most important observations and what steps can be taken to improve or capitalize on these trends? Please provide a concise initial analysis."
|
| 26 |
else:
|
| 27 |
+
prompt_text += f"No specific data snapshot is available for '{plot_label}'. Provide general insights and advice for improving performance related to '{plot_label}' on LinkedIn, assuming typical scenarios. Please provide a concise initial analysis."
|
| 28 |
|
| 29 |
+
# Default suggestions
|
| 30 |
suggestions = [
|
| 31 |
f"What are the key drivers for {plot_label.lower()} based on the data?",
|
| 32 |
f"How can I improve my {plot_label.lower()} according to these trends?",
|
| 33 |
f"What does good performance look like for {plot_label.lower()}?"
|
| 34 |
]
|
| 35 |
|
| 36 |
+
# Customize suggestions per plot_id
|
|
|
|
| 37 |
if plot_id == "followers_count":
|
|
|
|
|
|
|
|
|
|
| 38 |
suggestions = [
|
| 39 |
"Based on the follower data, what was our peak growth period?",
|
| 40 |
+
"How often should I post to maximize follower growth?",
|
| 41 |
+
"What content typically resonates most with potential followers?"
|
| 42 |
]
|
| 43 |
elif plot_id == "engagement_rate":
|
|
|
|
|
|
|
| 44 |
suggestions = [
|
| 45 |
"What does the engagement trend tell us about recent content performance?",
|
| 46 |
+
"What types of posts typically get the highest engagement?",
|
| 47 |
+
"Can you give me examples of strong calls to action?"
|
| 48 |
]
|
| 49 |
elif plot_id == "reach_over_time":
|
|
|
|
|
|
|
| 50 |
suggestions = [
|
| 51 |
"What does the reach data suggest about our content visibility?",
|
| 52 |
+
"What are effective organic strategies to increase post reach?",
|
| 53 |
+
"How do hashtags and tagging strategies impact reach?"
|
| 54 |
]
|
| 55 |
elif plot_id == "impressions_over_time":
|
|
|
|
|
|
|
| 56 |
suggestions = [
|
| 57 |
"How do current impressions compare to previous periods based on the data?",
|
| 58 |
+
"What's the difference between reach and impressions?",
|
| 59 |
+
"Does LinkedIn's algorithm favor certain content for impressions?"
|
| 60 |
]
|
| 61 |
elif plot_id == "comments_sentiment":
|
|
|
|
|
|
|
| 62 |
suggestions = [
|
| 63 |
"What does the sentiment breakdown indicate about audience perception?",
|
| 64 |
+
"How can I encourage more positive comments?",
|
| 65 |
+
"What's the best way to respond to negative comments?"
|
| 66 |
]
|
| 67 |
+
# Add more plot_id specific suggestions if needed
|
|
|
|
|
|
|
| 68 |
|
| 69 |
# Ensure exactly 3 suggestions
|
| 70 |
while len(suggestions) < 3:
|
|
|
|
| 72 |
if len(suggestions) > 3:
|
| 73 |
suggestions = suggestions[:3]
|
| 74 |
|
| 75 |
+
return prompt_text, suggestions
|
|
|