Haystack
TwexAPI tweet arama ve kullanıcı zaman çizelgesi bileşenleri, yazılı Belgeler, alıntılar ve sayfalandırma ile Haystack RAG işlem hatları oluşturun.
Haystack, Python AI uygulamaları için açık kaynaklı bir çerçevedir. RAG ardışık düzenleri ve aracı iş akışlarındaki güncel tweet’ler için x-api-scraper-haystack kullanın. Entegrasyon salt okunurdur ve hiçbir zaman yazma erişimi vermez.
Entegrasyon iki salt okunur bileşen sağlar:
Herkese açık tweet'leri arayın
‘TwexApiTweetSearch’ anahtar kelimeleri, hashtag’leri, hesapları ve X sorgu operatörlerini ‘POST /twitter/advanced_search/page’ aracılığıyla arar.
Kullanıcı zaman akışını al
TwexApiUserTweetsFetcher, POST /twitter/{screen_name}/timeline/page aracılığıyla bir genel hesabın zaman çizelgesini alır.
Arama, zaman çizelgeleri, izleme ve almayla artırılmış oluşturma için bu bileşenleri kullanın. Bir aracı bir arama aracına ihtiyaç duyduğunda “TwexApiTweetSearch”ü “ComponentTool” ile sarın.
Takipçi dışa aktarma işlemleri için followers API’sini kullanın. Onaylanmış yayınlama için write API’yi kullanın. Bu eylemler bu entegrasyonun dışında kalır.
Haystack ve TwexAPI’yi yükleyin
Python 3.10 veya daha yenisini kullanın. Tekrarlanabilir ardışık düzen yapıları için her iki paketi de sabitleyin.
python -m pip install "x-api-scraper-haystack" "haystack-ai>=3.0.0"
Sanal bir ortamın içine yükleyin.
Bir TwexAPI API anahtarı oluşturun ve bunu yerel olarak dışa aktarın.
export X_API_SCRAPER_KEY="YOUR_API_KEY"
Üretim anahtarlarını hiçbir zaman ardışık düzen YAML’ye, not defterlerine veya kaynak kontrolüne yerleştirmeyin. Ortam değişkenini Haystack ‘Secret’ nesnesi aracılığıyla yükleyin.
Python’da Twitter tweet’lerini arayın
‘TwexApiTweetSearch’, ’POST /twitter/advanced_search/page’i çağırır. X arama sözdizimini kabul eder ve Haystack ‘Document’ nesnelerini döndürür.
from haystack import Pipeline
from haystack.utils import Secret
from haystack_integrations.components.websearch.x_api_scraper import TwexApiTweetSearch
search = TwexApiTweetSearch(
api_key=Secret.from_env_var("X_API_SCRAPER_KEY"),
top_k=20,
)
pipeline = Pipeline()
pipeline.add_component("twitter_search", search)
result = pipeline.run(
{
"twitter_search": {
"query": '"retrieval augmented generation" lang:en -filter:retweets'
}
}
)
documents = result["twitter_search"]["documents"]
links = result["twitter_search"]["links"]
Son izleme için ’En Son’u kullanın. Etkileşim dereceli keşif için “Üst”ü kullanın. Sıralamalar değişebileceği için tweet kimliklerini saklayın.
Her arama sorgusunu tweet kimliklerinin yanına kaydedin. Her çalıştırmadaki tweet sayısını sınırlamak için ’top_k’yi ayarlayın.
Odaklanmış tweet aramaları oluşturun
| Arama amacı | Sorgu örneği |
|---|---|
| Tam ifade | "retrieval augmented generation" |
| Hesap gönderileri | from:deepset_ai haystack |
| Hashtag arama | #haystack #rag |
| Tarih penceresi | haystack since:2026-07-01 until:2026-08-01 |
| Yeniden paylaşımları hariç tut | haystack -filter:retweets |
Tüm sorgu seçenekleri için Gelişmiş Twitter Araması konusuna bakın. Çalıştırma başına aktarırken zaman damgalarını ve imleçleri bileşen başlatma işleminin dışında tutun.
Twitter kullanıcı zaman çizelgesini getir
POST /twitter/{screen_name}/timeline/page için TwexApiUserTweetsFetcher kullanın. Bir ekran adı iletin.
from haystack.utils import Secret
from haystack_integrations.components.websearch.x_api_scraper import (
TwexApiUserTweetsFetcher,
)
timeline = TwexApiUserTweetsFetcher(
api_key=Secret.from_env_var("X_API_SCRAPER_KEY"),
top_k=50,
)
result = timeline.run(screen_name="openai")
documents = result["documents"]
Tek bir hesap için birçok hesap ve zaman çizelgesi aramayı seçin.
Haystack belge alanlarını anlama
Her tweet bir Saman Yığını ‘Belgesi’ haline gelir. Tweet metni ‘Document.content’ olur. Kararlı alanlar meta veriye dönüşür.
| Belge alanı | Saklanan tweet değeri |
|---|---|
content |
“tam_metin” veya “metin”den Tweet metni |
meta.endpoint |
search or timeline |
meta.id, meta.url |
Mevcut olduğunda Tweet kimliği ve standart URL |
meta.created_at |
Zaman damgası |
meta.author |
Yazar kimliği, kullanıcı adı, ad ve doğrulanmış işaret |
meta.like_count, meta.retweet_count, meta.reply_count |
Beğeniler, yeniden gönderiler ve yanıtlar |
meta.quote_count, meta.view_count, meta.bookmark_count |
Mevcut olduğunda alıntılar, görünümler ve yer imleri |
Eksik alanlar eksik kalır. Eksik metriklere asla sıfır muamelesi yapmayın. ‘Bağlantılar’ çıktısı mevcut her ’meta.url’yi içerir.
Kanıtları RAG alıntılarında saklayın
Tweet metnini yerleştirmeden önce tweet kimliklerini ve standart URL’leri saklayın. Bu, sıralama veya katılma sonrasında kanıtları korur.
citation_rows = []
for document in documents:
tweet_id = document.meta.get("id")
tweet_url = document.meta.get("url")
if tweet_id and tweet_url:
citation_rows.append(
{
`tweet_id`: tweet_id,
"url": tweet_url,
"created_at": document.meta.get("created_at"),
"author": document.meta.get("author"),
}
)
Alıntılar için sağlanan URL’leri zorunlu kılın. Alınan belgelerde bulunmayan URL’leri reddedin.
Tweet metnini güvenilmeyen içerik olarak değerlendirin
Tweetler hızlı ekleme ve güvenli olmayan URL’ler içerebilir. Tweet metnini asla bir sistem talimatı olarak görmeyin. Tweet’leri talimatlardan ve araç izinlerinden ayrı tutun.
Konuya ve zamana göre erişimi sınırlayın. Tweet kimliklerini, yazarlarını, zaman damgalarını ve URL’lerini koruyun. Alıntı gerektir. Hassas sonuçları gözden geçirin.
Tweetleri indeksleyin veya canlı olarak alın
Canlı getirme
Her soru sırasında en son tweet’leri ve aktif etkinlikleri arayın.
İndekslenmiş corpus
Sabit pencerelerde tekrarlanan araştırmalar için yerleştirmeleri saklayın.
Tweet kayıtlarını yerleştirmelerden ayrı tutun. Tekilleştirme için ’meta.id’yi kullanın.
Yinelenen tweet’ler olmadan sayfalandırma
Her iki bileşen de ‘has_more’ ve ’next_cursor’u döndürür. Talebi değiştirmeden saklayın. İmleçlere opak dizeler gibi davranın.
search = TwexApiTweetSearch(top_k=100)
page = search.run(query="haystack ai")
documents_by_tweet_id = {}
while True:
for document in page["documents"]:
tweet_id = document.meta.get("id")
if tweet_id:
documents_by_tweet_id[tweet_id] = document
if not page[`has_more`] or not page["next_cursor"]:
break
page = search.run(
query="haystack ai",
cursor=page["next_cursor"],
)
documents = list(documents_by_tweet_id.values())
Her imleci belgelerinden sonra kaydedin. Hiçbir zaman bir imleci düzenlemeyin. Document.meta["id"] üzerinde tekilleştirme.
Haystack işlem hatlarını eşzamansız olarak çalıştırın
Haystack 3 bir ‘Pipeline’ sınıfı kullanır. Her iki TwexAPI bileşeni de ’run_async()’i açığa çıkarıyor.
import asyncio
from haystack import Pipeline
from haystack_integrations.components.websearch.x_api_scraper import TwexApiTweetSearch
async def search_tweets():
pipeline = Pipeline()
pipeline.add_component(
"twitter_search",
TwexApiTweetSearch(top_k=25),
)
return await pipeline.run_async(
{"twitter_search": {"query": "haystack agents"}}
)
result = asyncio.run(search_tweets())
Web sunucularında eşzamansız çalıştırmaları kullanın. Komut dosyaları ve zamanlanmış işler için senkronizasyon çalıştırmalarını kullanın.
Hataları işleme
Entegrasyon, TwexAPI istemcisinden HTTP hatalarına neden oluyor. Yeniden denemeden önce durumla ilgili şubeyi açın.
| Durum | Anlam | Aksiyon |
|---|---|---|
400 |
Geçersiz istek | Düzelt. Değiştirmeden tekrar denemeyin. |
401 |
Geçersiz API anahtarı | Geçerli bir API anahtarı ekleyin. |
403 |
Erişim engellendi | Hesap erişimini ve kredileri kontrol edin. |
429 |
Oran sınırı aşıldı | Tekrar denemeden önce geri çekilin. |
5xx |
Geçici sunucu hatası | Sınırlı geri çekilmeyle yeniden deneyin. |
Kimlik bilgilerini asla değil, durum kodlarını kaydedin. Cap, sınırsız aracı döngülerini önlemek için yeniden dener.
Haystack bileşeni veya doğrudan REST API
İşlem hattınız zaten ‘Belge’ nesnelerini döndürüyor mu? Bu bileşenleri doğrudan ekleyin. Tweet metnini, meta verileri, URL’leri ve sayfalandırmayı normalleştirirler.
Takipçiler, takipler, yanıtlar, alıntılar, listeler, topluluklar, medya, trendler ve onaylı yazılar için doğrudan TwexAPI REST rotalarını veya Python SDK’sını kullanın.
Her iki yaklaşım da aynı TwexAPI sözleşmelerini kullanır. Bileşenler yalnızca tweet aramasını ve kullanıcı zaman çizelgelerini destekler.
MCP aktarma alternatifi
Bir aracı ilk önce uç noktaları keşfettiğinde, toplama için Twexapi MCP kullanın ve satırları manuel olarak Haystack “Document” nesnelerine dönüştürün. İşlem hattı zaten Haystack içinde çalıştığında ve aracı keşfi olmadan yazılan sayfalandırmayı istediğinizde Haystack bileşenlerini tercih edin.