البحث في قنوات YouTube باستخدام RAG
YoutubeChannelSearchTool
Section titled “YoutubeChannelSearchTool”هذه الأداة مصممة لإجراء عمليات بحث دلالية داخل محتوى قناة YouTube محددة. من خلال الاستفادة من منهجية RAG (التوليد المعزز بالاسترجاع)، توفر نتائج بحث ذات صلة، مما يجعلها لا تقدر بثمن لاستخراج المعلومات أو العثور على محتوى محدد دون الحاجة إلى تصفح الفيديوهات يدوياً. تبسّط عملية البحث داخل قنوات YouTube، مما يخدم الباحثين ومنشئي المحتوى والمشاهدين الذين يبحثون عن معلومات أو مواضيع محددة.
التثبيت
Section titled “التثبيت”لاستخدام YoutubeChannelSearchTool، يجب تثبيت حزمة crewai_tools. نفّذ الأمر التالي في الطرفية للتثبيت:
pip install 'crewai[tools]'يوضح المثال التالي كيفية استخدام YoutubeChannelSearchTool مع وكيل CrewAI:
from crewai import Agent, Task, Crewfrom crewai_tools import YoutubeChannelSearchTool
# Initialize the tool for general YouTube channel searchesyoutube_channel_tool = YoutubeChannelSearchTool()
# Define an agent that uses the toolchannel_researcher = Agent( role="Channel Researcher", goal="Extract relevant information from YouTube channels", backstory="An expert researcher who specializes in analyzing YouTube channel content.", tools=[youtube_channel_tool], verbose=True,)
# Example task to search for information in a specific channelresearch_task = Task( description="Search for information about machine learning tutorials in the YouTube channel {youtube_channel_handle}", expected_output="A summary of the key machine learning tutorials available on the channel.", agent=channel_researcher,)
# Create and run the crewcrew = Crew(agents=[channel_researcher], tasks=[research_task])result = crew.kickoff(inputs={"youtube_channel_handle": "@exampleChannel"})يمكنك أيضاً تهيئة الأداة بمعرّف قناة YouTube محدد:
# Initialize the tool with a specific YouTube channel handleyoutube_channel_tool = YoutubeChannelSearchTool( youtube_channel_handle='@exampleChannel')
# Define an agent that uses the toolchannel_researcher = Agent( role="Channel Researcher", goal="Extract relevant information from a specific YouTube channel", backstory="An expert researcher who specializes in analyzing YouTube channel content.", tools=[youtube_channel_tool], verbose=True,)المعاملات
Section titled “المعاملات”تقبل أداة YoutubeChannelSearchTool المعاملات التالية:
- youtube_channel_handle: اختياري. معرّف قناة YouTube للبحث داخلها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة. إذا لم يبدأ المعرّف بـ ’@’، سيتم إضافته تلقائياً.
- config: اختياري. تكوين لنظام RAG الأساسي، بما في ذلك إعدادات LLM والتضمينات.
- summarize: اختياري. ما إذا كان يجب تلخيص المحتوى المسترجع. الافتراضي هو
False.
عند استخدام الأداة مع وكيل، سيحتاج الوكيل إلى تقديم:
- search_query: مطلوب. استعلام البحث للعثور على معلومات ذات صلة في محتوى القناة.
- youtube_channel_handle: مطلوب فقط إذا لم يتم تقديمه أثناء التهيئة. معرّف قناة YouTube للبحث داخلها.
النموذج المخصص والتضمينات
Section titled “النموذج المخصص والتضمينات”بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
youtube_channel_tool = YoutubeChannelSearchTool( config=dict( llm=dict( provider="ollama", # or google, openai, anthropic, llama2, ... config=dict( model="llama2", # temperature=0.5, # top_p=1, # stream=true, ), ), embedder=dict( provider="google-generativeai", # or openai, ollama, ... config=dict( model_name="gemini-embedding-001", task_type="RETRIEVAL_DOCUMENT", # title="Embeddings", ), ), ))مثال على التكامل مع الوكيل
Section titled “مثال على التكامل مع الوكيل”إليك مثالاً أكثر تفصيلاً لكيفية دمج YoutubeChannelSearchTool مع وكيل CrewAI:
from crewai import Agent, Task, Crewfrom crewai_tools import YoutubeChannelSearchTool
# Initialize the toolyoutube_channel_tool = YoutubeChannelSearchTool()
# Define an agent that uses the toolchannel_researcher = Agent( role="Channel Researcher", goal="Extract and analyze information from YouTube channels", backstory="""You are an expert channel researcher who specializes in extracting and analyzing information from YouTube channels. You have a keen eye for detail and can quickly identify key points and insights from video content across an entire channel.""", tools=[youtube_channel_tool], verbose=True,)
# Create a task for the agentresearch_task = Task( description=""" Search for information about data science projects and tutorials in the YouTube channel {youtube_channel_handle}.
Focus on: 1. Key data science techniques covered 2. Popular tutorial series 3. Most viewed or recommended videos
Provide a comprehensive summary of these points. """, expected_output="A detailed summary of data science content available on the channel.", agent=channel_researcher,)
# Run the taskcrew = Crew(agents=[channel_researcher], tasks=[research_task])result = crew.kickoff(inputs={"youtube_channel_handle": "@exampleDataScienceChannel"})تفاصيل التنفيذ
Section titled “تفاصيل التنفيذ”أداة YoutubeChannelSearchTool مُنفّذة كفئة فرعية من RagTool، التي توفر الوظائف الأساسية للتوليد المعزز بالاسترجاع:
class YoutubeChannelSearchTool(RagTool): name: str = "Search a Youtube Channels content" description: str = "A tool that can be used to semantic search a query from a Youtube Channels content." args_schema: Type[BaseModel] = YoutubeChannelSearchToolSchema
def __init__(self, youtube_channel_handle: Optional[str] = None, **kwargs): super().__init__(**kwargs) if youtube_channel_handle is not None: kwargs["data_type"] = DataType.YOUTUBE_CHANNEL self.add(youtube_channel_handle) self.description = f"A tool that can be used to semantic search a query the {youtube_channel_handle} Youtube Channels content." self.args_schema = FixedYoutubeChannelSearchToolSchema self._generate_description()
def add( self, youtube_channel_handle: str, **kwargs: Any, ) -> None: if not youtube_channel_handle.startswith("@"): youtube_channel_handle = f"@{youtube_channel_handle}" super().add(youtube_channel_handle, **kwargs)الخلاصة
Section titled “الخلاصة”توفر أداة YoutubeChannelSearchTool طريقة قوية للبحث واستخراج المعلومات من محتوى قنوات YouTube باستخدام تقنيات RAG. من خلال تمكين الوكلاء من البحث عبر فيديوهات قناة كاملة، تسهّل مهام استخراج المعلومات والتحليل التي قد يكون من الصعب تنفيذها بطريقة أخرى. هذه الأداة مفيدة بشكل خاص للبحث وتحليل المحتوى واستخراج المعرفة من قنوات YouTube.