نصوص الفيديو في LangChain
حمّل نصوص YouTube وTikTok كـ Document في LangChain مع الطوابع الزمنية، أو امنح وكيل LangChain أدوات MCP الخاصة بـ Transcript Dock.
آخر تحديث
باختصار: هناك طريقتان. للفهرسة، يحوّل محمّل صغير النص إلى كائنات Document في LangChain، كل كائن لمقطع ترجمة واحد مع وقت بدايته. وللوكلاء، يتصل خادم MCP الخاص بـ Transcript Dock بـ LangChain عبر langchain-mcp-adapters، فيجلب الوكيل النصوص بنفسه.
محمّل مستندات#
عشرون سطرًا، دون حزمة إضافية. يحتفظ كل Document بعنوان الفيديو وتوقيته، فتتمكن نتائج الاسترجاع من الإشارة إلى اللحظة التي جاءت منها. اجمع المقاطع في كتل أكبر قبل التضمين، كما هو موضح في نصوص الفيديو لـ RAG.
# pip install langchain-core requestsimport requestsfrom langchain_core.documents import DocumentAPI = "https://www.transcriptdock.com"H = {"Authorization": "Bearer td_live_YOUR_KEY"}def load_video(url: str, mode: str = "captions_only") -> list[Document]:"""One Document per caption segment, with the video URL and start time as metadata."""job = requests.post(f"{API}/v1/jobs", headers={**H, "Idempotency-Key": f"lc-{url}"[:128]},json={"source": {"url": url}, "mode": mode}).json()while job["status"] not in ("succeeded", "failed", "cancelled"):job = requests.get(f"{API}/v1/jobs/{job['id']}", params={"wait": 25}, headers=H).json()if job["status"] != "succeeded":raise RuntimeError(job["error"]["code"])t = requests.get(f"{API}/v1/transcripts/{job['result_id']}", headers=H).json()meta = {"source": t["source"]["canonical_url"], "title": t["source"]["title"], "language": t["language"]}return [Document(page_content=s["text"], metadata={**meta, "start": s["start"], "end": s["end"]})for s in t["segments"]]docs = load_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
أدوات الوكيل عبر MCP#
يتصل MultiServerMCPClient بالخادم البعيد ويحوّل أدواته إلى أدوات LangChain: get_video_transcript، والبحث في YouTube، وعرض القنوات وقوائم التشغيل، وعرض ملفات TikTok الشخصية.
# pip install langchain-mcp-adapters langgraph langchain-anthropicimport asynciofrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentasync def main():client = MultiServerMCPClient({"transcriptdock": {"url": "https://www.transcriptdock.com/mcp","transport": "streamable_http","headers": {"Authorization": "Bearer td_live_YOUR_KEY"},}})tools = await client.get_tools()agent = create_react_agent("anthropic:claude-sonnet-5-5", tools)out = await agent.ainvoke({"messages": "Summarize https://www.youtube.com/watch?v=dQw4w9WgXcQ"})print(out["messages"][-1].content)asyncio.run(main())
أسماء الأدوات ومعاملاتها وتكاليف الأرصدة موضحة في صفحة MCP. وتتصل LlamaIndex وغيرها من أطر العمل التي تدعم MCP بالطريقة نفسها.