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()
```
Raw data
{
"_id": null,
"home_page": null,
"name": "videosdk-agents",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "agents, ai, audio, realtime, video, videosdk, webrtc",
"author": "videosdk",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/d7/e4/94198d41418aa0bdd78e93c974a49070a9c3a01ce652756f2ea3c99bff82/videosdk_agents-0.0.20.tar.gz",
"platform": null,
"description": "VideoSDK Agents\n\nAgents Framework on top of VideoSDK's architecture.\n\n## Installation\n\n```bash\npip install videosdk-agents\n```\n\nVisit https://docs.videosdk.live/ai_agents/introduction for Quickstart, Examples and Detailed Documentation.\n\n## Usage\n\n```py\nimport asyncio\nfrom videosdk.agents import Agent, AgentSession, RealTimePipeline, function_tool, WorkerJob, RoomOptions, JobContext\nfrom videosdk.plugins.openai import OpenAIRealtime, OpenAIRealtimeConfig\nfrom openai.types.beta.realtime.session import InputAudioTranscription, TurnDetection\n\n\nclass MyVoiceAgent(Agent):\n def __init__(self):\n super().__init__(\n instructions=\"You are a helpful voice assistant that can answer questions and help with tasks.\",\n )\n\n async def on_enter(self) -> None:\n await self.session.say(\"How can i assist you today?\")\n\nasync def entrypoint(ctx: JobContext):\n print(\"Starting connection test...\")\n print(f\"Job context: {jobctx}\")\n \n model = OpenAIRealtime(\n model=\"gpt-4o-realtime-preview\",\n config=OpenAIRealtimeConfig( modalities=[\"text\", \"audio\"] )\n )\n pipeline = RealTimePipeline(model=model)\n session = AgentSession(\n agent=MyVoiceAgent(), \n pipeline=pipeline,\n context=jobctx\n )\n\n try:\n await ctx.connect()\n await session.start()\n print(\"Connection established. Press Ctrl+C to exit.\")\n await asyncio.Event().wait()\n except KeyboardInterrupt:\n print(\"\\nShutting down gracefully...\")\n finally:\n await session.close()\n await ctx.shutdown()\n\n\ndef make_context() -> JobContext:\n room_options = RoomOptions(room_id=\"<meeting_id>\", name=\"Sandbox Agent\", playground=True)\n \n return JobContext(\n room_options=room_options\n )\n\n\nif __name__ == \"__main__\":\n job = WorkerJob(job_func=entryPoint, jobctx=make_context)\n job.start()\n```\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Video SDK Agents",
"version": "0.0.20",
"project_urls": null,
"split_keywords": [
"agents",
" ai",
" audio",
" realtime",
" video",
" videosdk",
" webrtc"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2b61c2ef89dabd6b92a3c0eb7bce5b2c12df888e76cdf8c611d8f79fca6dd1fb",
"md5": "eb1eddabb2b8dabd811449041f90f2f2",
"sha256": "7c96d4a0fbdeab5d76245623db53d9eb7e729c064a3c4a9f5865645512f29945"
},
"downloads": -1,
"filename": "videosdk_agents-0.0.20-py3-none-any.whl",
"has_sig": false,
"md5_digest": "eb1eddabb2b8dabd811449041f90f2f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 48177,
"upload_time": "2025-07-11T11:28:27",
"upload_time_iso_8601": "2025-07-11T11:28:27.903078Z",
"url": "https://files.pythonhosted.org/packages/2b/61/c2ef89dabd6b92a3c0eb7bce5b2c12df888e76cdf8c611d8f79fca6dd1fb/videosdk_agents-0.0.20-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d7e494198d41418aa0bdd78e93c974a49070a9c3a01ce652756f2ea3c99bff82",
"md5": "337bfbe67a39c796e7a59a27ecee5989",
"sha256": "a2bcc9bea12288360f715cd0d0400f4edc632e17523044d4987e965d1ef48550"
},
"downloads": -1,
"filename": "videosdk_agents-0.0.20.tar.gz",
"has_sig": false,
"md5_digest": "337bfbe67a39c796e7a59a27ecee5989",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 36084,
"upload_time": "2025-07-11T11:28:29",
"upload_time_iso_8601": "2025-07-11T11:28:29.418187Z",
"url": "https://files.pythonhosted.org/packages/d7/e4/94198d41418aa0bdd78e93c974a49070a9c3a01ce652756f2ea3c99bff82/videosdk_agents-0.0.20.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-11 11:28:29",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "videosdk-agents"
}