İçeriğe geç
Twexapi
Türkçe
Esc
gezin⌘Jönizle
Bu sayfada

LangChain

Tweet araması, profiller, takipçiler ve incelenen X eylemleri için TwexAPI MCP aracılığıyla LangChain ve LangGraph Twitter API aracıları oluşturun.

TwexAPI’nin MCP sunucusu aracılığıyla bir LangChain Twitter API aracısı oluşturun. Tweetleri arayın, profilleri inceleyin, takipçi listelerini sayfalara ayırın ve yazma işlemlerini inceleyin. Tweet kimliklerini, zaman damgalarını, imleçleri ve yönlendirme hatalarını yazılan değerler olarak koruyun.

LangChain’i neden TwexAPI ile kullanmalısınız?

LangChain, TwexAPI araçlarını modellere, alıcılara, veritabanlarına ve uygulama hizmetlerine bağlar. LangGraph dayanıklı durum, devam ettirilebilir işler ve insan onayı ekler.

Temsilci görevi TwexAPI rotası Bir sonraki adım için saklayın
Tweet’lerde ara POST /twitter/advanced_search/page Sorgu, tweet kimlikleri, yazarlar, “created_at”, imleç
Bir profili inceleme GET /twitter/{screen_name}/about Kullanıcı kimliği, kullanıcı adı, biyografi, takipçi sayısı
Takipçileri listele POST /v3/twitter/users/followers Kullanıcı adı, takipçi satırları, next_cursor
Trendleri okuyun GET /twitter/global-trending/tweets Ülke, konu, içerik etiketi, tweet satırları
Gönder veya yanıtla POST /twitter/tweets/create Tweet kimliği, rota, durum, çerez onayı

Kısa araç çağırma konuşmaları için LangChain’i kullanın. Arızalar, onaylar veya süreç yeniden başlatıldıktan sonra işin devam etmesi gerektiğinde LangGraph’ı kullanın. Her ikisi de aynı MCP araçlarını ve normalleştirilmiş devir sözleşmesini kullanır.

Önkoşullar

  • Python 3.10 veya üzeri
  • Bir TwexAPI API anahtarı
  • Araç ve yapılandırılmış çıktı desteğine sahip, LangChain destekli bir model Public docs focus on API-key reads.

Genel X okumalarının X Developer kimlik bilgilerine ihtiyacı yoktur. TwexAPI ile kimlik doğrulaması yapın.

Kurulum

Tekrarlanabilir yapılar için uyumlu küçük aralıklar yükleyin.

python -m pip install --upgrade \
  "langchain>=1.0" \
  "langchain-mcp-adapters>=0.2" \
  langchain-anthropic \
  langgraph \
  python-dotenv

Sırları kaynak kontrolü dışında saklayın.

export TWEXAPI_API_KEY="YOUR_API_KEY"
export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_KEY"

TwexAPI MCP’yi bağlayın

LangChain, MCP istemcisini çalıştırır. TwexAPI, MCP sunucusunu “https://api.twexapi.io/mcp” adresinde çalıştırır. Sunucu, keşif için “explore”ı ve kimliği doğrulanmış çağrılar için twexapi_requesti kullanıma sunar.

import asyncio
import os
from pathlib import Path
from typing import Literal

from dotenv import load_dotenv
from langchain.agents import create_agent
from langchain_mcp_adapters.client import MultiServerMCPClient
from pydantic import BaseModel


class TweetRow(BaseModel):
    tweet_id: str
    text: str
    author_username: str | None = None
    created_at: str | None = None
    url: str | None = None


class TweetSearchHandoff(BaseModel):
    query: str
    route_used: str
    tweets: list[TweetRow]
    has_more: bool
    next_cursor: str | None = None
    stop_reason: Literal[
        "complete",
        "requested_limit",
        "cursor_stalled",
        "page_cap",
    ]


async def main() -> None:
    load_dotenv()

    client = MultiServerMCPClient(
        {
            "twexapi": {
                "transport": "streamable_http",
                "url": "https://api.twexapi.io/mcp",
                "headers": {"x-api-key": os.environ["TWEXAPI_API_KEY"]},
            },
        }
    )
    tools = await client.get_tools()

    agent = create_agent(
        model="anthropic:claude-sonnet-4-20250514",
        tools=tools,
        response_format=TweetSearchHandoff,
        system_prompt=(
            "Use TwexAPI for Twitter API requests. Call explore before twexapi_request. "
            "Preserve exact IDs and cursors. Never invent missing tweet fields. "
            "Ask for confirmation before read_only: false actions."
        ),
    )

    result = await agent.ainvoke(
        {
            "messages": [
                {
                    "role": "user",
                    "content": (
                        "Search 25 recent tweets about LangChain MCP. "
                        "Return the query, route, tweet rows, cursor state, "
                        "and an explicit stop reason."
                    ),
                }
            ]
        }
    )
    handoff = result["structured_response"]
    Path("twexapi-langchain-handoff.json").write_text(
        handoff.model_dump_json(indent=2),
        encoding="utf-8",
    )


asyncio.run(main())

‘MultiServerMCPClient’ uzak MCP araçlarını yükler. Her imleci, rotayı ve yazma durumunu harici olarak kaydedin. İstemci varsayılan olarak vatansızdır.

MCP yanıt sözleşmesini koruyun

MCP, explore ile uç nokta yollarını, yöntemleri ve yanıt alanlarını döndürür. Yalnızca belgelenen query ve body alanlarını twexapi_request’e iletin.

Sayfalandırılmış rotalar next_cursor, has_next_page veya hasMore gibi imleç alanlarını döndürür. Her sayfada aynı sorgu ve filtreleri yeniden kullanın. Her imleci opak kabul edin.

Bir koşul doğru olduğunda sayfalandırmayı durdurun:

  • Temsilci talep edilen toplamı toplar.
  • has_more veya has_next_page yanlış olur.
  • next_cursor eksik veya tekrarlanıyor.
  • Yapılandırılmış sayfa sınırına ulaşıldı.

Sabit tweet_id veya user_id değerlerine göre tweet’leri ve kullanıcıları tekilleştirin.

Devam ettirilebilir bir temsilci aktarımını sürdürün

Konuşma geçmişi güvenilir bir iş veritabanı değildir. Yeniden denemeler, sayfalandırma ve aşağı akış araçları için gereken kalıcı değerler.

Tweet sayfaları

tweet_id, text, author_username, created_at, has_more, next_cursor ve orijinal sorguyu saklayın.

Profil satırları

user_id, username, name, description, takipçi sayıları ve arama girdisini saklayın.

Takipçi sayfaları

Kaynak kullanıcı adını, takipçi satırlarını, next_cursor ve sayfa indeksini saklayın.

Yazma işlemleri

Göndermeden önce rotayı, önizleme metnini, çerez gereksinimini ve insan onayını saklayın.

Kontrol listesinin tamamı için Agent MCP Handoff konusuna bakın.

Hata işlemeyi oluşturun

Durum Anlam Temsilci kararı
400 Geçersiz rota veya parametreler Yeniden denemeden önce isteği düzeltin
401 Eksik veya geçersiz API anahtarı Kimlik bilgisini durdurun ve değiştirin
403 Erişim reddedildi veya krediler Hesap erişimi düzeltilene kadar duraklatın
429 Oran sınırına ulaşıldı Geri çekilin, ardından imleci devam ettirin
5xx Geçici sunucu hatası Güvenli okumalara sınırlı geri çekilme uygulayın

Durum kodlarını işle birlikte saklayın. Açık onay olmadan yazma eylemlerini asla yeniden denemeyin.

X eylemlerine insan onayı ekleyin

Salt okunur aracılar tweet’leri otomatik olarak arayabilir. Yazma özellikli temsilcilerin, göndermeden veya yanıtlamadan önce bir inceleme sınırına ihtiyacı vardır.

from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langgraph.checkpoint.memory import InMemorySaver

agent = create_agent(
    model="anthropic:claude-sonnet-4-20250514",
    tools=tools,
    middleware=[
        HumanInTheLoopMiddleware(
            interrupt_on={
                `twexapi_request`: {
                    "allowed_decisions": ["approve", "reject"],
                }
            }
        )
    ],
    checkpointer=InMemorySaver(),
)

Üretimde kalıcı bir LangGraph denetim noktası kullanın. Beklenmeyen bir rota, hesap, hedef, metin veya medya içeren her türlü eylemi reddedin.

Dayanıklı LangGraph iş akışları oluşturun

Ayrı keşif, inceleme, yürütme ve depolama. Her harici aramadan sonra tamamlanan son düğümü, rotayı, yanıt kimliklerini, imleci ve yeniden deneme sayısını sürdürün.

from langgraph.graph import START, MessagesState, StateGraph
from langgraph.prebuilt import ToolNode, tools_condition

def call_model(state: MessagesState):
    return {"messages": model.bind_tools(tools).invoke(state["messages"])}

builder = StateGraph(MessagesState)
builder.add_node(call_model)
builder.add_node(ToolNode(tools))
builder.add_edge(START, "call_model")
builder.add_conditional_edges("call_model", tools_condition)
builder.add_edge("tools", "call_model")
graph = builder.compile()

Birden fazla MCP sunucusunu bağlayın

Aracınız birden fazla MCP sağlayıcısına bağlandığında sunucu adlarına önek ekleyin.

client = MultiServerMCPClient(
    {
        "twexapi": {
            "transport": "streamable_http",
            "url": "https://api.twexapi.io/mcp",
            "headers": {"x-api-key": os.environ["TWEXAPI_API_KEY"]},
        },
        "docs": {
            "transport": "streamable_http",
            "url": "https://docs.twexapi.io/mcp",
        },
    },
    tool_name_prefix=True,
)

TwexAPI temsilcisine yalnızca mevcut işi için gerekli araçları verin.

Paket versiyonları

Paket Desteklenen aralık
Piton >=3.10
langchain-mcp-adapters >=0.2
langchain >=1.0
langgraph >=0.6

Sonraki adımlar

Bu sayfa yardımcı oldu mu?