Comme les ensembles de données propres et LLM avec open source peuvent transformer le bruit social en données digestibles.

Avec une récente AI et un fourreau d’applications, j’ai décidé de travailler sur un projet de contenu amusant en temps réel qui réalise les messages à la mode de Reddit et X (auparavant Twitter), les mène via un modèle linguistique local (LLM) et crée des fouilles modestes.
La partie la plus difficile de ce projet serait de collecter des données; Le nettoyage a ressenti trop de stress et nécessite trop de travail, d’autant plus qu’il était nécessaire de nettoyer. Heureusement, j’ai trouvé et utilisé des ensembles de données structurés pour Reddit et X, ce qui m’a donné un contenu pur, qualitatif et moderne sans points de douleur ordinaires tels que la limitation de la vitesse ou la logique de grattage fragile.
Ainsi, dans cet article, je vous dépenserai sur la façon dont j’ai créé cet outil à l’aide d’ensembles de données prêts à prêter, Langchain, Olllama et Streamlit.
L’idée était simple: créer un outil qui obtient du contenu à cette connexion et le transforme en un coffre-fort rapide et digestible.
Considérez-le comme un digestage de bot personnel. Il attrape les derniers messages de Reddit et X, en les poursuivant par le biais d’un LLM local via Langchain, puis en renversant pur, vous avez généralisé, avec lequel vous pouvez réellement suivre. L’objectif n’était pas d’inventer la roue – c’était juste pour voir jusqu’où je pouvais aller en connectant les outils nécessaires et, plus important encore, pour leur nourrir les données nécessaires.
Tout fonctionne à l’intérieur de l’application Streamlit, ce qui facilite l’interaction et la répétition. Vous le chargez et le boom – des curriculum vitae frais prêts à l’emploi.
Rien de fou. Juste un petit projet utile montrant à quel point les bonnes données et quelques outils bien sélectionnés sont puissants.
J’ai gardé la pile minimum, exactement ce dont j’avais besoin pour obtenir du contenu brut aux curriculum vitae digestibles sans rien dépasser.
- Ensembles de données lumineux: C’était la base du projet. Au lieu de faire face à la complexité du rétrécissement d’Internet, j’ai utilisé des données Reddit structurées et des données brillantes. Ils ont offert une préoccupation de renom pure, moderne et fiable concernant les restrictions sur le HTML et la consommation de temps.
- Lubriole: Il a fait face à l’ensemble du pipeline LLM. Cela a facilité la structure de l’indice, transmettre le contenu et obtenir des curriculum vitae propres du modèle.
- Alam: Je voulais garder tout local, alors j’ai utilisé Olllama pour lancer LLM. C’était rapide, facile et vous n’aviez pas besoin d’une clé d’API cloud pour commencer. Idéal pour les CV réels.
- Rationaliser: Pour l’interface utilisateur, Streamlit l’a fait presque trop simple. Plusieurs lignes de code, et j’avais un tableau de bord fonctionnel et propre pour l’affichage.
Chacun de ces outils a joué un rôle, mais encore une fois, aucun d’eux n’aura une valeur sans données structurées pures à partir de données lumineuses. C’est vraiment ce qui a fait tout presse.
Voici comment j’ai reçu des données pour Reddit et X (auparavant Twitter):
Étape 1: Connectez-vous à des données lumineuses
Accédez aux données brillantes et signez sur le tableau de bord. Si vous n’avez pas de compte, vous pouvez le créer gratuitement.
Étape 2: Ouvrez l’ensemble de données
Dans la barre latérale, le tableau de bord clique sur le Web de données, puis sélectionnez le marché des données.
Étape 3: Recherchez un ensemble de données Reddit
Dans la barre de recherche, cadran “Reddit – messages”. Cliquez sur le résultat qui correspond, examinez l’ensemble de données et accédez à l’achat.
Après avoir acheté, téléchargez un ensemble de données à CSV Format.
Étape 4: Faites de même pour x (auparavant Twitter)
Répétez le même processus – cette recherche de temps “X (auparavant Twitter) – Messages”.
Achetez et téléchargez également cet ensemble de données. Vous pouvez essayer leurs données exemplaires, voir à quoi elles ressemblent et jouer avec avant d’acheter.
De plus, vous pouvez également obtenir des données pures de Reddit, X et d’autres plates-formes à l’aide de vos gratteaux Web disponibles à la fois dans le code et dans les options de code.
Étape 5: Apprenez les fichiers CSV
Chaque CSV vous donne une structure pure avec des champs tels qu’un titre de message, un texte, une étiquette temporaire, des mesures d’interaction et plus – parfait pour l’alimentation dans LLM.
Maintenant que nous avons des données et nos outils, découvrons comment tout est plus proche. Cette partie couvre la création d’un projet à partir de zéro, établissant la dépendance et promouvant le LLM local avec Olllama.
Configuration du projet
Commençons les choses en structurant le projet. J’aime garder les choses simples et modulaires, surtout avec des expériences.
- Créer un dossier de projet
mkdir real-time-content-digest
cd real-time-content-digest
2. Définissez l’environnement virtuel
Si vous utilisez Python:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
C’est ce dont nous avons besoin:
- rationaliser – pour l’interface utilisateur
- panda – pour travailler avec des ensembles de données
- Lubriole – Build Networks LLM
- Alam – Pour exécuter le modèle local
- Openai – Si vous souhaitez basculer entre les modèles locaux et situés
Définissez tout en même temps
pip install streamlit pandas langchain langchain_community openai
Vous aurez également besoin ollama
installé sur votre voiture. En savoir plus à ce sujet ci-dessous.
4. Définir la structure du projet
Voici la structure simple du dossier dont vous avez besoin pour travailler:
real-time-content-digest/
├── data/
│ ├── reddit_posts.csv
│ └── x_posts.csv
├── main.py
Installation et gestion du modèle Olllama Llava-Llama3
Pour la conclusion locale que j’ai utilisée llava-llama3
Modèle avec Olllama. Ceci est léger et fonctionne très bien pour les tâches réelles.
1. Installer ALAM
Vous pouvez installer Olllama en suivant les instructions à: (Disponible pour MacOS, Windows et Linux)
2. Tirez le modèle llava-llama3
Une fois le olllama défini, exécutez la commande suivante:
ollama pull llava-llama3:latest
Cela obtient la dernière version de Llava-Llama3.
3. Exécutez le modèle localement
Exécutez le modèle en fonctionnant:
ollama run llava-llama3
Par défaut, il tord l’API dans laquelle vous pouvez obtenir localement http: // localhost: 11434.
C’est tout. Avec le modèle de démarrage, nous sommes prêts à commencer à télécharger des données, à créer un curriculum vitae et à tout connecter avec Streamlit.
Créer les composants de l’application
Maintenant que notre environnement est créé, mettons en œuvre chaque partie du contenu de notre bot Botarizer main.py
Déposer.
1. Couche de traitement des données
Le premier composant dont nous avons besoin est une couche de traitement des données qui gérera le téléchargement et la préparation des données CSV:
def process_reddit_data(file):
try:
df = pd.read_csv(file)
required_columns = ["post_id", "title", "description", "num_comments",
"date_posted", "community_name", "num_upvotes", "comments"]# Check if the required columns exist
for col in required_columns:
if col not in df.columns:
missing = [c for c in required_columns if c not in df.columns]
st.warning(f"Warning: Missing columns in Reddit data: {missing}")
break
# Return the processed dataframe
return df
except Exception as e:
st.error(f"Error processing Reddit data: {e}")
return None
def process_twitter_data(file):
try:
df = pd.read_csv(file)
required_columns = ["id", "user_posted", "name", "description",
"date_posted", "replies", "reposts", "likes"]
# Check if the required columns exist
for col in required_columns:
if col not in df.columns:
missing = [c for c in required_columns if c not in df.columns]
st.warning(f"Warning: Missing columns in Twitter/X data: {missing}")
break
# Return the processed dataframe
return df
except Exception as e:
st.error(f"Error processing Twitter/X data: {e}")
return None
def clean_text(text):
if pd.isna(text):
return ""
# Remove URLs
text = re.sub(r'http\S+', '', text)
# Remove special characters and extra whitespace
text = re.sub(r'\s+', ' ', text).strip()
return text
Ces fonctionnalités traitent le téléchargement du fichier CSV, confirmant qu’ils contiennent les colonnes nécessaires et le contenu textuel. La fonction Clean_text supprime l’URL et normalise le texte pour améliorer la qualité du traitement.
2. Intégration de LLM
Ensuite, nous mettons en œuvre l’intégration avec le modèle Olllama pour générer des contenus:
@st.cache_resource
def get_llm():
try:
return Ollama(model="llama3")
except Exception as e:
st.error(f"Error initializing Ollama model: {e}")
return Nonellm = get_llm()
Nous utilisons le décorateur Streamlit Cache_Resource pour nous assurer que nous n’initialisons le modèle Olllama qu’une seule fois, ce qui augmente les performances.
3. Résumé le contenu
Nous implémentons maintenant les fonctionnalités de base pour généraliser le contenu des deux plates-formes:
def summarize_reddit_post(post_data):
prompt_template = PromptTemplate(
input_variables=["title", "description", "community", "comments", "upvotes"],
template="""
Summarize the following Reddit post:Title: {title}
Community: {community}
Upvotes: {upvotes}
Content: {description}
Key comments (if available): {comments}
Please provide:
1. A concise TL;DR (2-3 sentences)
2. 3-5 key takeaways
3. The most insightful quote from the post
4. Sentiment analysis (positive, negative, neutral)
"""
)
# Extract relevant info from post data
title = post_data.get('title', 'No title available')
description = post_data.get('description', 'No description available')
community = post_data.get('community_name', 'Unknown community')
# Process comments
comments_list = post_data.get('comments', '')
if isinstance(comments_list, str) and comments_list:
comments = comments_list[:500] + "..." if len(comments_list) > 500 else comments_list
else:
comments = "No comments available"
upvotes = post_data.get('num_upvotes', '0')
chain = LLMChain(llm=llm, prompt=prompt_template)
return chain.run(title=title, description=description, community=community, comments=comments, upvotes=upvotes)
La fonction de contenu du contenu Twitter (x) passe par une image similaire, mais adaptée à différentes structures de données.
4. La fonction de conversion du format
Ensuite, nous implémentons des fonctionnalités pour convertir le CV en différents formats de sortie:
def convert_to_newsletter(summary, source_type, source_data):
if source_type == "Reddit":
title = source_data.get('title', 'Untitled Post')
community = source_data.get('community_name', 'Unknown Community')
url = source_data.get('url', '#')prompt_template = PromptTemplate(
input_variables=["summary", "title", "community", "url"],
template="""
Convert this Reddit post summary into a newsletter segment:
Original Post Title: {title}
From r/{community}
URL: {url}
Summary: {summary}
Write an engaging newsletter segment that includes:
1. An attention-grabbing headline
2. A brief introduction (1-2 sentences)
3. The main insights formatted with bullet points
4. A closing thought that encourages readers to check out the original post
Format the output in Markdown.
"""
)
chain = LLMChain(llm=llm, prompt=prompt_template)
return chain.run(summary=summary, title=title, community=community, url=url)
Une fonction similaire est implémentée pour créer des médias sociaux après avoir créé un caractère et des plateformes spécifiques.
5. L’implémentation de l’interface utilisateur
Enfin, nous implémentons l’interface utilisateur pour notre application:
# Set page configuration
st.set_page_config(
page_title="Content Summarizer Bot",
page_icon="📝",
layout="wide"
)# Title and description
st.title("Real-Time Content Summarizer / Digest Bot")
st.markdown("""
This app takes trending content from Reddit and Twitter/X, summarizes key points,
and can convert them into newsletter or social post formats.
""")
# Main interface
tab1, tab2 = st.tabs(["Data Processing", "Content Generation"])
with tab1:
st.header("Upload Data")
# Data upload UI code...
with tab2:
st.header("Generate Content Summaries")
# Content generation UI code...
L’implémentation complète de l’interface utilisateur comprend des onglets pour le traitement des données et la génération de contenu, ainsi que les contrôles pour sélectionner les messages, la génération de CV et la transformation en différents formats.
Exécutez l’application
Exécutez l’application Streamlit:
streamlit run main.py
Votre vrai contenu et le bot de digestion maintenant en direct! 🎉
Commencer par les ensembles de données propres, correspondants et opportuns de Reddit et Twitter (x) a changé.
En superposant des ensembles de données structurés avec des outils open source comme Lubriole. Alamet RationaliserJ’ai réussi à créer un bot qui résume le bruit, et cela n’est possible que parce que les données qui commencent par elle sont de haute qualité, bien étouffées et prêtes à être transformées.
Pour ceux qui travaillent avec les LLM, il est important non seulement un modèle obsédé et rappelez-vous que le modèle n’est qu’une partie de l’équation. Le choix de l’ensemble de données correct résout souvent la moitié du problème.
Super Hero
Jasa Import Door to Door
Cek Ongkir Cargo
Berita Teknologi
Seputar Teknologi