Metadata-Version: 2.4
Name: videosdk-agents
Version: 0.0.41
Summary: Video SDK Agents
Author: videosdk
License-Expression: Apache-2.0
Keywords: agents,ai,audio,realtime,video,videosdk,webrtc
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Communications :: Conferencing
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Requires-Dist: aec-audio-processing>=1.0.1
Requires-Dist: aiohttp
Requires-Dist: av<15.0.0,>=14.0.0
Requires-Dist: click>=8.0.0
Requires-Dist: docstring-parser
Requires-Dist: google-genai
Requires-Dist: grpcio
Requires-Dist: httpx
Requires-Dist: mcp
Requires-Dist: numpy
Requires-Dist: openai
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
Requires-Dist: opentelemetry-sdk>=1.34.1
Requires-Dist: protobuf
Requires-Dist: protobuf<6.0,>=5.29
Requires-Dist: pydantic<3,>=2.0
Requires-Dist: pyee>=13.0.0
Requires-Dist: python-dotenv
Requires-Dist: pyyaml
Requires-Dist: requests
Requires-Dist: requests>=2.25.0
Requires-Dist: rich>=10.0.0
Requires-Dist: scipy>=1.11.0
Requires-Dist: sounddevice
Requires-Dist: urllib3
Requires-Dist: uvicorn
Requires-Dist: videosdk>=0.2.5
Provides-Extra: anthropic
Requires-Dist: videosdk-plugins-anthropic>=0.0.41; extra == 'anthropic'
Provides-Extra: assemblyai
Requires-Dist: videosdk-plugins-assemblyai>=0.0.41; extra == 'assemblyai'
Provides-Extra: aws
Requires-Dist: videosdk-plugins-aws>=0.0.41; extra == 'aws'
Provides-Extra: azure
Requires-Dist: videosdk-plugins-azure>=0.0.41; extra == 'azure'
Provides-Extra: cartesia
Requires-Dist: videosdk-plugins-cartesia>=0.0.41; extra == 'cartesia'
Provides-Extra: cerebras
Requires-Dist: videosdk-plugins-cerebras>=0.0.41; extra == 'cerebras'
Provides-Extra: cometapi
Requires-Dist: videosdk-plugins-cometapi>=0.0.41; extra == 'cometapi'
Provides-Extra: deepgram
Requires-Dist: videosdk-plugins-deepgram>=0.0.41; extra == 'deepgram'
Provides-Extra: elevenlabs
Requires-Dist: videosdk-plugins-elevenlabs>=0.0.41; extra == 'elevenlabs'
Provides-Extra: google
Requires-Dist: videosdk-plugins-google>=0.0.41; extra == 'google'
Provides-Extra: groq
Requires-Dist: videosdk-plugins-groq>=0.0.41; extra == 'groq'
Provides-Extra: humeai
Requires-Dist: videosdk-plugins-humeai>=0.0.41; extra == 'humeai'
Provides-Extra: inworldai
Requires-Dist: videosdk-plugins-inworldai>=0.0.41; extra == 'inworldai'
Provides-Extra: lmnt
Requires-Dist: videosdk-plugins-lmnt>=0.0.41; extra == 'lmnt'
Provides-Extra: navana
Requires-Dist: videosdk-plugins-navana>=0.0.41; extra == 'navana'
Provides-Extra: neuphonic
Requires-Dist: videosdk-plugins-neuphonic>=0.0.41; extra == 'neuphonic'
Provides-Extra: openai
Requires-Dist: videosdk-plugins-openai>=0.0.41; extra == 'openai'
Provides-Extra: papla
Requires-Dist: videosdk-plugins-papla>=0.0.41; extra == 'papla'
Provides-Extra: resemble
Requires-Dist: videosdk-plugins-resemble>=0.0.41; extra == 'resemble'
Provides-Extra: rime
Requires-Dist: videosdk-plugins-rime>=0.0.41; extra == 'rime'
Provides-Extra: rnnoise
Requires-Dist: videosdk-plugins-rnnoise>=0.0.41; extra == 'rnnoise'
Provides-Extra: sarvamai
Requires-Dist: videosdk-plugins-sarvamai>=0.0.41; extra == 'sarvamai'
Provides-Extra: silero
Requires-Dist: videosdk-plugins-silero>=0.0.41; extra == 'silero'
Provides-Extra: simli
Requires-Dist: videosdk-plugins-simli>=0.0.41; extra == 'simli'
Provides-Extra: smallestai
Requires-Dist: videosdk-plugins-smallestai>=0.0.41; extra == 'smallestai'
Provides-Extra: speechify
Requires-Dist: videosdk-plugins-speechify>=0.0.41; extra == 'speechify'
Provides-Extra: turn-detector
Requires-Dist: videosdk-plugins-turn-detector>=0.0.41; extra == 'turn-detector'
Description-Content-Type: text/markdown

VideoSDK Agents

Agents Framework on top of VideoSDK's architecture.

## Installation

```bash
pip install videosdk-agents
```

Visit https://docs.videosdk.live/ai_agents/introduction for Quickstart, Examples and Detailed Documentation.

## Usage

```py
import asyncio
from videosdk.agents import Agent, AgentSession, RealTimePipeline, function_tool, WorkerJob, RoomOptions, JobContext
from videosdk.plugins.openai import OpenAIRealtime, OpenAIRealtimeConfig
from openai.types.beta.realtime.session import InputAudioTranscription, TurnDetection


class MyVoiceAgent(Agent):
    def __init__(self):
        super().__init__(
            instructions="You are a helpful voice assistant that can answer questions and help with tasks.",
        )

    async def on_enter(self) -> None:
        await self.session.say("How can i assist you today?")

async def entrypoint(ctx: JobContext):
    print("Starting connection test...")
    print(f"Job context: {jobctx}")
    
    model = OpenAIRealtime(
        model="gpt-4o-realtime-preview",
        config=OpenAIRealtimeConfig( modalities=["text", "audio"] )
    )
    pipeline = RealTimePipeline(model=model)
    session = AgentSession(
        agent=MyVoiceAgent(), 
        pipeline=pipeline,
        context=jobctx
    )

    try:
        await ctx.connect()
        await session.start()
        print("Connection established. Press Ctrl+C to exit.")
        await asyncio.Event().wait()
    except KeyboardInterrupt:
        print("\nShutting down gracefully...")
    finally:
        await session.close()
        await ctx.shutdown()


def make_context() -> JobContext:
    room_options = RoomOptions(room_id="<meeting_id>", name="Sandbox Agent", playground=True)
    
    return JobContext(
        room_options=room_options
        )


if __name__ == "__main__":
    job = WorkerJob(job_func=entryPoint, jobctx=make_context)
    job.start()
```


