ধাপে ধাপে: ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা
যদি আপনি YouTube-এ ঘণ্টার পর ঘণ্টা কাটিয়ে থাকেন এবং কোন ভিডিওগুলো সংরক্ষণ করার মতো, তা ভুলে যান, তাহলে আপনি একা নন। এখন এমন একজন ক্লান্তিহীন সহকারীর কথা ভাবুন, যে সেরা ভিডিও খুঁজে বের করতে, সারসংক্ষেপ তৈরি করতে, মূল উদ্ধৃতিগুলো বের করতে, টাইমস্ট্যাম্প দিয়ে ইনসাইট দিতে এবং চাহিদার ভিত্তিতে দ্রুত সোর্স জানাতে পারে। একটি YouTube রিসার্চ এজেন্ট ঠিক এই কাজটিই করতে পারে। এই ধাপে ধাপে গাইডটিতে, আমরা ক্লড কোড ব্যবহার করে একটি বাস্তবসম্মত YouTube রিসার্চ এজেন্ট তৈরি করব, যা ক্রিয়েটর, বিশ্লেষক, শিক্ষার্থী এবং সেইসব উৎসুক শিক্ষার্থীদের জন্য ডিজাইন করা হয়েছে, যারা কোলাহলের মধ্যে কাজের জিনিস খুঁজে বের করতে চান।
আমরা একটি বাস্তবসম্মত এবং সরাসরি পথ বেছে নেব: আর্কিটেকচার, কোড, প্রম্পট এবং গার্ডরেইল। পথে, আমরা কিছু মতামতভিত্তিক পছন্দ করব যা আপনি পরে পরিবর্তন করতে পারেন। শেষ পর্যন্ত, আপনার কাছে একটি কার্যকরী এজেন্ট থাকবে, যা YouTube সার্চ করতে, ট্রান্সক্রিপ্ট সংগ্রহ করতে, একাধিক ভিডিও থেকে যুক্তি বের করতে এবং পরিচ্ছন্ন রিসার্চ ব্রিফ তৈরি করতে পারবে।
আমরা কী তৈরি করছি (এবং কেন এটি গুরুত্বপূর্ণ)
- লক্ষ্য: একটি YouTube রিসার্চ এজেন্ট যা নিম্নলিখিত কাজগুলো করতে পারে:
- query এর মাধ্যমে YouTube সার্চ করা
- relevance/engagement অনুসারে ফলাফল র্যাঙ্ক করা
- ট্রান্সক্রিপ্ট আনা (অটো-ক্যাপশন বা থার্ড-পার্টি)
- রিট্রিভালের জন্য কন্টেন্টকে ভাগ করা এবং এমবেড করা
- একাধিক ভিডিও থেকে ইনসাইট সংশ্লেষ করার জন্য ক্লড কোড ব্যবহার করা
- স্ট্রাকচার্ড নোট আউটপুট করা: সারসংক্ষেপ, দাবি, টাইমস্ট্যাম্প, উদ্ধৃতি এবং উদ্ধৃতিসূত্র
- প্রাথমিক কীওয়ার্ড: "ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা"
- ফরম্যাট: রান করা যায় এমন কোড এবং প্রম্পট সহ ধাপে ধাপে টিউটোরিয়াল
- আউটপুট: প্রোগ্রামগত ব্যবহারের জন্য Markdown রিসার্চ ব্রিফ + JSON
কেন এটি গুরুত্বপূর্ণ: YouTube হল আলোচনা, পাঠ, ডেমো এবং বিতর্কের বৃহত্তম পাবলিক জ্ঞান ভান্ডার। কিন্তু এটি গোলমালপূর্ণ। ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা আপনাকে একটি সুবিধা দেয়: আপনি ঘণ্টার পরিবর্তে মিনিটে কয়েক ডজন ভিডিও থেকে ইনসাইট একত্রিত করতে পারেন।
এক নজরে আর্কিটেকচার
আমরা প্রথম সংস্করণটি সহজ এবং শক্তিশালী রাখব।
- ইনপুট: একটি রিসার্চ query (যেমন, "LLM agent architectures 2025"), ঐচ্ছিক সীমাবদ্ধতা (তারিখের পরিসীমা, চ্যানেল, সময়কাল)
- YouTube সার্চ: YouTube Data API v3 (অথবা SerpAPI ফলব্যাক)
- ট্রান্সক্রিপ্ট: YouTube Transcript API; যখন পাওয়া যায় না তখন ASR (যেমন, Whisper)-এ ফলব্যাক
- Chunking: বাক্য-সচেতন সেগমেন্টেশন (প্রায় 800-1,200 টোকেন)
- Embeddings: একটি স্থানীয় বা হোস্ট করা এম্বেডিং মডেল ব্যবহার করুন (যেমন,
text-embedding-3-large, nomic-embed-text, অথবা bge-large)
- ভেক্টর স্টোর: গতির জন্য স্থানীয়
FAISS; Pinecone, Weaviate, অথবা Qdrant-এ পরিবর্তন করা যেতে পারে
- যুক্তি: একটি নিয়ন্ত্রিত লুপের ভিতরে অর্কেস্ট্রেশন, টুল ব্যবহার, সংশ্লেষণ এবং কোড সম্পাদনের জন্য ক্লড কোড
- আউটপুট: উদ্ধৃতি, টাইমস্ট্যাম্প এবং স্কোর সহ Markdown রিপোর্ট + JSON ইন্ডেক্স
ডেটা ফ্লো: Query → Search → Fetch metadata → Transcript → Chunk → Embed → Retrieve top-K → Claude Code synthesis → Report।
পূর্বশর্ত এবং সেটআপ
- API কী:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (ক্লড কোডের জন্য)
- ঐচ্ছিক:
OPENAI_API_KEY অথবা স্থানীয় এম্বেডিং
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (অথবা sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
এনভায়রনমেন্ট ভেরিয়েবল:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
ধাপ 1: ফিল্টার সহ YouTube সার্চ
আমরা YouTube সার্চ করব এবং স্ট্রাকচার্ড মেটাডেটা ফেরত দেব: শিরোনাম, চ্যানেল, প্রকাশের তারিখ, সময়কাল, ভিউ (যদি পাওয়া যায়) এবং videoId।
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করার সময় প্রম্পট টিপস:
- মানুষের পাঠযোগ্য এবং মেশিন-পাঠযোগ্য উভয় ফরম্যাটে স্ট্রাকচার্ড আউটপুট চান
- টাইমস্ট্যাম্পযুক্ত উদ্ধৃতিগুলো নিশ্চিত করুন
- অনিশ্চয়তা প্রকাশ এবং বিরোধিতাকে উৎসাহিত করুন
ধাপ 6: সবকিছু একসাথে করা
আসুন query → search → transcripts → chunks → embeddings → retrieve → synthesize কে একসাথে করি।
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"],
"title": r["title"],
"channel": r["channel"],
"url": r["url"],
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
ক্লড কোড সহ একটি YouTube রিসার্চ এজেন্টের এই বেসলাইন সংস্করণটি উদ্ধৃতি সহ মাল্টি-ভিডিও ইনসাইট সার্চ, পুনরুদ্ধার এবং সংশ্লেষণ করবে। এটিকে প্রোডাকশন-রেডি করতে এম্বেডিংগুলি আপগ্রেড করুন এবং ক্যাশিং যুক্ত করুন।
এটিকে আরও ভালো করার জন্য সাতটি আপগ্রেড
- আরও ভালো এম্বেডিং এবং হাইব্রিড সার্চ
- উচ্চ-মানের এম্বেডিং পরিবর্তন করুন এবং BM25 কীওয়ার্ড সার্চ যুক্ত করুন। হাইব্রিড নিস টার্মগুলিতে আরও বেশি রিকল এবং অ্যাবস্ট্রাক্ট বিষয়গুলিতে আরও ভালো নির্ভুলতা দেয়।
- আরও সমৃদ্ধ মেটাডেটার জন্য সরঞ্জামগুলি প্রসারিত করুন
- মন্তব্য, লাইক/ডিসলাইকের অনুপাত এবং চ্যানেলের কর্তৃত্ব টানুন। শীর্ষ 100 প্রার্থীর জন্য একটি রি-র্যাঙ্কার (ক্রস-এনকোডার) যুক্ত করুন।
- মাল্টি-টার্ন রিসার্চ প্ল্যানিং
- একটি রিসার্চ প্ল্যান প্রস্তাব করার জন্য ক্লড কোড ব্যবহার করুন: সাব-প্রশ্ন, হাইপোথিসিস এবং কভারেজ চেক। কভারেজ থ্রেশহোল্ড পূরণ না হওয়া পর্যন্ত পুনরাবৃত্তিমূলকভাবে সম্পাদন করুন।
- প্রমাণ ট্র্যাকিং এবং পাল্টা প্রমাণ
- প্রতিটি দাবির জন্য, সমর্থনকারী এবং বিরোধী স্নিপেটগুলি লগ করুন। উভয়ই রিপোর্টে উপস্থাপন করুন; আত্মবিশ্বাসের স্কোর যুক্ত করুন।
- সাবটাইটেল বা Whisper শব্দ টাইমিংয়ের মাধ্যমে দৃশ্য সনাক্তকরণ ব্যবহার করুন। প্রসঙ্গ দুর্বলতা এড়াতে গ্লোবাল সংশ্লেষণের আগে প্রতি-বিভাগের সারসংক্ষেপ করুন।
- প্রতি query-এর জন্য ট্রান্সক্রিপ্ট, এম্বেডিং এবং রিপোর্টগুলি সংরক্ষণ করুন। যখন ব্যবহারকারীরা ফিল্টার পরিবর্তন করে তখন পুনরায় ব্যবহার করুন। ভিডিও আইডি দ্বারা ডিডুপ্লিকেশন যুক্ত করুন।
- এক্সপোর্ট ফরম্যাট এবং ডেলিভারি
- Markdown, PDF এবং JSON এক্সপোর্ট করুন। ইমেল বা Slack ডেলিভারি। টাইমস্ট্যাম্পগুলিকে ক্লিকযোগ্য
?t=mmss লিঙ্ক হিসাবে রেন্ডার করুন।
প্রম্পট যা আপনি পুনরায় ব্যবহার করতে পারেন
ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করার সময় এই টেমপ্লেটগুলি ব্যবহার করুন।
সিস্টেম: আপনি একজন খুঁটিনাটিপূর্ণ রিসার্চ এজেন্ট। একাধিক YouTube ট্রান্সক্রিপ্ট থেকে সংশ্লেষণ করুন। [vID @ mm:ss] দিয়ে ইনলাইন উদ্ধৃতি দিন এবং URL সহ একটি সোর্স সেকশন অন্তর্ভুক্ত করুন। টাইমস্ট্যাম্পযুক্ত সমর্থন সহ দাবিগুলির একটি Markdown ব্রিফ এবং একটি JSON পেলোড উভয়ই ফেরত দিন।
ব্যবহারকারী: রিসার্চের লক্ষ্য: {topic}
সীমাবদ্ধতা: {audience or scope} এর উপর ফোকাস করুন; {date range} এর মধ্যে সোর্স পছন্দ করুন; বিরোধ অন্তর্ভুক্ত করুন।
প্রার্থী প্যাসেজ (র্যাঙ্ক করা):
{retrieved_passages}
আউটপুট: সারসংক্ষেপ → মূল ইনসাইট (বুলেট) → উল্লেখযোগ্য উদ্ধৃতি (টাইমস্ট্যাম্প সহ) → বিরোধিতা ও ফাঁক → সোর্স। তারপর JSON {"claims": ...}
গার্ডরেইল এবং নৈতিকতা
- ক্রিয়েটরের অধিকারকে সম্মান করুন: মূল ভিডিওগুলির লিঙ্ক দিন এবং বৃহৎ আক্ষরিক ট্রান্সক্রিপ্ট প্রকাশ করা থেকে বিরত থাকুন।
- স্বচ্ছ হোন: টাইমস্ট্যাম্প এবং ভিডিও আইডি ব্যবহার করে দাবিগুলি কোথা থেকে এসেছে তা দেখান।
- অতিরিক্ত-সংক্ষিপ্তকরণ এড়িয়ে চলুন: সূক্ষ্মতা বজায় রাখুন; ক্যাপশনগুলি অটো-জেনারেটেড এবং সম্ভবত গোলমালপূর্ণ হলে ফ্ল্যাগ করুন।
- সংবেদনশীল বিষয়গুলি সাবধানে সামলান: অনিশ্চয়তা হাইলাইট করুন এবং বিভিন্ন সোর্স সন্ধান করুন।
সমস্যা সমাধান: সাধারণ সমস্যা এবং সমাধান
- "কোনো ট্রান্সক্রিপ্ট পাওয়া যায়নি"
- Whisper-এ ফলব্যাক করুন; বিভিন্ন ভাষা চেষ্টা করুন; ভিডিওটি অঞ্চল-ব্লক করা আছে কিনা তা পরীক্ষা করুন।
- এম্বেডিংগুলি আপগ্রেড করুন; BM25 যুক্ত করুন; chunk ওভারল্যাপ বাড়ান; প্যারামিটার-টিউন টপ-K।
- কঠোর উদ্ধৃতি স্কিমা চাপান; সমর্থনহীন দাবিগুলিকে শাস্তি দিন; পুনরুদ্ধার করা chunk-এ উপস্থিত সঠিক টাইমস্ট্যাম্পের প্রয়োজন করুন।
- আক্রমণাত্মকভাবে ক্যাশ করুন;
max_results হ্রাস করুন; ব্যাচ অনুরোধ করুন; tenacity দিয়ে ব্যাক-অফ যুক্ত করুন।
- প্রতি-বিভাগের সারসংক্ষেপ করুন; সর্বোচ্চ টোকেন সীমাবদ্ধ করুন; সুস্পষ্ট রূপরেখা সহ পরিকল্পনা প্রম্পট ব্যবহার করুন।
গুণমান পরিমাপ করা
- একটি লেবেলযুক্ত সেটের বিপরীতে পুনরুদ্ধার করা chunk-এর Precision@K
- Faithfulness rate: যাচাইযোগ্য টাইমস্ট্যাম্পযুক্ত সমর্থন সহ দাবির অনুপাত
- কভারেজ: উদ্ধৃত অনন্য প্রাসঙ্গিক ভিডিওর সংখ্যা
- বিলম্বতা: query থেকে রিপোর্টের সময়
উদাহরণ: "ভেক্টর ডেটাবেস ব্যাখ্যা করা হয়েছে" নিয়ে গবেষণা
- Query: "ডেভেলপারদের জন্য ভেক্টর ডেটাবেস 2025 ব্যাখ্যা করা হয়েছে"
- ফিল্টার: 2023 সালের পরের ভিডিও, সময়কাল 6-30 মিনিট
- ফলাফল: এজেন্ট 6টি ভিডিও উদ্ধৃত করে, HNSW বনাম IVF-PQ-এর ট্রেড-অফগুলি হাইলাইট করে, খরচ/রিকল নিয়ে আলোচনা করে এবং বেঞ্চমার্কে লিঙ্ক করে। কন্ট্রাডিকশনস বিভাগ বিক্রেতার দাবি বনাম ওপেন-সোর্স ফলাফলের তুলনা করে।
উপায়ান্তর: আপনার ওয়ার্কফ্লোর অভ্যন্তরে এটি অটোমেট করা
যদি আপনি ডক্স এবং কোড জুড়ে কাজ করেন, তবে শেষ মাইল অটোমেট করা মূল্যবান। একটি ছোট CLI রাত্রিকালীন query চালাতে এবং আপনার জ্ঞান ভান্ডারে Markdown ব্রিফ ড্রপ করতে পারে। আপনি স্প্রিন্ট রিসার্চের জন্য এটিকে ইস্যু টেমপ্লেটে তারযুক্ত করতে পারেন।
উল্লেখ্য: যদি আপনার ওয়ার্কফ্লো ইতিমধ্যেই একটি ব্রাউজার সাইডবার বা AI সহকারীর মধ্যে থাকে, তাহলে Sider.AI-এর মতো সরঞ্জামগুলি রিসার্চ লুপকে সুবিন্যস্ত করতে পারে — একটি বিষয় নির্বাচন করুন, একটি সার্চ চালান, ট্রান্সক্রিপ্ট ক্যাপচার করুন এবং সরাসরি যেখানে আপনি কাজ করেন সেখানে ক্লড-চালিত একটি সারসংক্ষেপ তৈরি করুন। এটি প্রসঙ্গ স্যুইচিং বাঁচাতে পারে এবং ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা দলগুলির জন্য আরও বাস্তবসম্মত করে তুলতে পারে। মূল বিষয়
- ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা ভিডিওগুলিকে কার্যকরী ব্রিফে পরিণত করার একটি উচ্চ-লিভারেজ উপায়।
- ন্যূনতম স্ট্যাক: YouTube API + ট্রান্সক্রিপ্ট + chunking + এম্বেডিং + FAISS + ক্লড সংশ্লেষণ।
- আপগ্রেড পাথ: হাইব্রিড সার্চ, রি-র্যাঙ্কিং, পরিকল্পনা লুপ এবং কঠোর উদ্ধৃতি ট্র্যাকিং।
- সহজভাবে শুরু করুন, বিশ্বস্ততা পরিমাপ করুন এবং নির্ভরযোগ্যতার দিকে অগ্রসর হন।
পরবর্তী পদক্ষেপ
- একটি বাস্তব এম্বেডিং মডেল এবং হাইব্রিড পুনরুদ্ধার প্রয়োগ করুন
- একটি রি-র্যাঙ্কিং ধাপ এবং গুণমান মেট্রিক যুক্ত করুন
- সাপ্তাহিকভাবে বিষয়গুলি রিফ্রেশ করার জন্য একটি নির্ধারিত কাজ তৈরি করুন
- একটি CLI এবং একটি হালকা ওয়েব UI হিসাবে প্যাকেজ করুন
FAQ
প্রশ্ন 1: আমি কীভাবে ক্লড কোড ব্যবহার করে একটি YouTube রিসার্চ এজেন্ট তৈরি করা শুরু করব?
YouTube সার্চ দিয়ে শুরু করুন, ট্রান্সক্রিপ্ট আনুন, কন্টেন্ট chunk করুন, একটি ভেক্টর স্টোরে এম্বেড করুন এবং ফলাফল সংশ্লেষণ করতে ক্লড কোড ব্যবহার করুন। উপরের গাইডটি একটি কার্যকরী পাইপলাইন একত্রিত করার জন্য ধাপে ধাপে কোড সরবরাহ করে।
প্রশ্ন 2: একটি YouTube রিসার্চ এজেন্টের জন্য কোন লাইব্রেরিগুলি সেরা?
অনুসন্ধানের জন্য YouTube Data API, ক্যাপশনের জন্য youtube-transcript-api, ভেক্টর অনুসন্ধানের জন্য FAISS এবং ক্লড কোড কল করার জন্য Anthropic SDK ব্যবহার করুন। আপনি OpenAI, Nomic বা BGE দিয়ে এম্বেডিংগুলি পরিবর্তন করতে পারেন।
প্রশ্ন 3: আমি কীভাবে নির্ভুল উদ্ধৃতি এবং টাইমস্ট্যাম্প নিশ্চিত করব?
Chunking-এর সময় শুরুর/শেষের টাইমস্ট্যাম্প রাখুন এবং ক্লড কোডকে [video_id @ mm:ss] উদ্ধৃত করতে বলুন। প্রকাশ করার আগে নিশ্চিত করুন যে উদ্ধৃত টাইমস্ট্যাম্পগুলি পুনরুদ্ধার করা chunk-এ বিদ্যমান।
প্রশ্ন 4: আমি কি এই এজেন্টকে ব্যক্তিগত বা তালিকাভুক্ত নয় এমন ভিডিওর জন্য ব্যবহার করতে পারি?
হ্যাঁ, যদি আপনার অ্যাক্সেস থাকে এবং আপনি ট্রান্সক্রিপ্ট আনতে পারেন বা স্থানীয় ASR (যেমন, Whisper) চালাতে পারেন। সর্বদা অনুমতিকে সম্মান করুন এবং কপিরাইটযুক্ত কন্টেন্ট বিতরণ করা থেকে বিরত থাকুন।
প্রশ্ন 5: আমি কীভাবে দলগুলির জন্য এই YouTube রিসার্চ এজেন্টকে স্কেল করতে পারি?
ক্যাশিং, একটি শেয়ার্ড ভেক্টর স্টোর, কাজের সারি এবং নির্ধারিত রান যুক্ত করুন। Slack বা একটি উইকির সাথে ইন্টিগ্রেট করুন এবং গবেষকদের ওয়ার্কফ্লোকে সুবিন্যস্ত করতে Sider.AI-এর মতো একটি ব্রাউজার-ভিত্তিক সহকারী বিবেচনা করুন।