import logging from pathlib import Path from dotenv import load_dotenv from livekit.agents import JobContext, WorkerOptions, cli from livekit.agents.voice import Agent, AgentSession from livekit.plugins import openai, deepgram, silero load_dotenv(dotenv_path=Path(__file__).parent.parent / '.env') logger = logging.getLogger("context-variables") logger.setLevel(logging.INFO) class ContextAgent(Agent): def __init__(self, context_vars=None) -> None: instructions = """ You are a helpful agent. The user's name is {name}. They are {age} years old and live in {city}. """ if context_vars: instructions = instructions.format(**context_vars) super().__init__( instructions=instructions, stt=deepgram.STT(), llm=openai.LLM(model="gpt-4o"), tts=openai.TTS(), vad=silero.VAD.load() ) async def on_enter(self): self.session.generate_reply() async def entrypoint(ctx: JobContext): await ctx.connect() context_variables = { "name": "Shayne", "age": 35, "city": "Toronto" } session = AgentSession() await session.start( agent=ContextAgent(context_vars=context_variables), room=ctx.room ) if __name__ == "__main__": cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))