Перейти к содержимому
Transcript Dock
ВойтиНачать бесплатно

Меню сайта

Transcript Dock

Транскрипты видео в LangChain

Загружайте транскрипты YouTube и TikTok как LangChain Documents с таймкодами или дайте агенту LangChain инструменты MCP от Transcript Dock.

Коротко: есть два способа. Для индексации небольшой загрузчик превращает транскрипт в объекты LangChain Document: по одному на каждый фрагмент субтитров, с временем его начала. Для агентов MCP-сервер Transcript Dock подключается к LangChain через langchain-mcp-adapters, и агент сам получает транскрипты.

Загрузчик документов#

Двадцать строк и никаких дополнительных пакетов. Каждый Document хранит ссылку на видео и тайминг, поэтому результаты поиска могут ссылаться на момент, из которого они взяты. Перед созданием эмбеддингов объедините фрагменты в более крупные куски, как показано в разделе транскрипты для RAG.

loader.py
# pip install langchain-core requests
import requests
from langchain_core.documents import Document
 
API = "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.

agent.py
# pip install langchain-mcp-adapters langgraph langchain-anthropic
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
 
async 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, подключаются так же.