autogen_ext.agents.video_surfer#

class VideoSurfer(name: str, model_client: ChatCompletionClient, *, tools: List[BaseTool[BaseModel, BaseModel]] | Callable[[...]], Any] | Callable[[...]], Awaitable[Any]]] | None = None, description: str | None = None, system_message: str | None = None)[source]#

Bases: AssistantAgent

VideoSurfer ist ein spezialisierter Agent, der entwickelt wurde, um Fragen zu einer lokalen Videodatei zu beantworten.

Installation

pip install "autogen-ext[video-surfer]"

Dieser Agent nutzt verschiedene Werkzeuge, um Informationen aus dem Video zu extrahieren, wie z. B. seine Länge, Screenshots zu bestimmten Zeitpunkten und Audio-Transkripte. Er verarbeitet diese Elemente, um detaillierte Antworten auf Benutzeranfragen zu liefern.

Verfügbare Werkzeuge

Parameter:
  • name (str) – Der Name des Agenten.

  • model_client (ChatCompletionClient) – Der Model-Client zur Generierung von Antworten.

  • tools (List[BaseTool[BaseModel, BaseModel] | Callable[..., Any] | Callable[..., Awaitable[Any]]] | None, optional) – Eine Liste von Werkzeugen oder Funktionen, die der Agent verwenden kann. Wenn nicht angegeben, werden standardmäßig alle Videowerkzeuge aus dem Aktionsraum verwendet.

  • description (str, optional) – Eine kurze Beschreibung des Agenten. Standardmäßig „Ein Agent, der Fragen zu einem lokalen Video beantworten kann.“.

  • system_message (str | None, optional) – Die Systemnachricht, die das Verhalten des Agenten steuert. Standardmäßig eine vordefinierte Nachricht.

Beispielverwendung

Das folgende Beispiel zeigt, wie ein Video-Surfing-Agent mit einem Model-Client erstellt und eine Antwort auf eine einfache Frage zu einem lokalen Video namens video.mp4 generiert wird.

import asyncio
from autogen_agentchat.ui import Console
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.agents.video_surfer import VideoSurfer

async def main() -> None:
    """
    Main function to run the video agent.
    """
    # Define an agent
    video_agent = VideoSurfer(
        name="VideoSurfer",
        model_client=OpenAIChatCompletionClient(model="gpt-4o-2024-08-06")
        )

    # Define termination condition
    termination = TextMentionTermination("TERMINATE")

    # Define a team
    agent_team = RoundRobinGroupChat([video_agent], termination_condition=termination)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="How does Adam define complex tasks in video.mp4? What concrete example of complex does his use? Can you save this example to disk as well?")
    await Console(stream)

asyncio.run(main())

Das folgende Beispiel zeigt, wie ein VideoSurfer und ein UserProxyAgent mit MagenticOneGroupChat erstellt und verwendet werden.

import asyncio

from autogen_agentchat.ui import Console
from autogen_agentchat.teams import MagenticOneGroupChat
from autogen_agentchat.agents import UserProxyAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.agents.video_surfer import VideoSurfer

async def main() -> None:
    """
    Main function to run the video agent.
    """

    model_client = OpenAIChatCompletionClient(model="gpt-4o-2024-08-06")

    # Define an agent
    video_agent = VideoSurfer(
        name="VideoSurfer",
        model_client=model_client
        )

    web_surfer_agent = UserProxyAgent(
        name="User"
    )

    # Define a team
    agent_team = MagenticOneGroupChat([web_surfer_agent, video_agent], model_client=model_client,)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="Find a latest video about magentic one on youtube and extract quotes from it that make sense.")
    await Console(stream)

asyncio.run(main())
DEFAULT_DESCRIPTION = 'Ein Agent, der Fragen zu einem lokalen Video beantworten kann.'#
DEFAULT_SYSTEM_MESSAGE = '\n    Sie sind ein hilfreicher Agent, der ein Experte für die Beantwortung von Fragen zu einem Video ist.\n    Wenn Sie aufgefordert werden, eine Frage zu einem Video zu beantworten, sollten Sie:\n    1. Prüfen, ob dieses Video lokal verfügbar ist.\n    2. Verwenden Sie das Transkript, um herauszufinden, auf welchen Teil des Videos sich die Frage bezieht.\n    3. Optional können Sie Screenshots von diesen Zeitpunkten verwenden\n    4. Geben Sie eine detaillierte Antwort auf die Frage.\n    Antworten Sie mit TERMINATE, wenn die Aufgabe abgeschlossen ist.\n    '#
async vs_transribe_video_screenshot(video_path: str, timestamp: float) str[source]#

Transkribiert den Screenshot des Videos zu einem bestimmten Zeitpunkt.

Parameter:
  • video_path (str) – Pfad zur Videodatei.

  • timestamp (float) – Zeitstempel für die Aufnahme des Screenshots.

Gibt zurück:

str – Transkript des Videotats.