from dotenv import load_dotenv
from livekit import agents
from livekit.agents import AgentSession, Agent, RoomInputOptions
from livekit.plugins import openai, noise_cancellation, silero
import hamsa_livekit
load_dotenv()
class HamsaAssistant(Agent):
def __init__(self) -> None:
super().__init__(instructions="You are a helpful Arabic voice assistant.")
async def entrypoint(ctx: agents.JobContext):
await ctx.connect()
# Create agent session with Hamsa STT and TTS
session = AgentSession(
stt=hamsa_livekit.STT(language="ar"),
llm=openai.LLM(model="gpt-4.1"),
tts=hamsa_livekit.TTS(speaker="Lana", dialect="jor"),
vad=silero.VAD.load(),
turn_detection="vad",
)
await session.start(
room=ctx.room,
agent=HamsaAssistant(),
room_input_options=RoomInputOptions(
noise_cancellation=noise_cancellation.BVC(),
),
)
await session.generate_reply(
instructions="Greet the user in Arabic and offer your assistance."
)
if __name__ == "__main__":
agents.cli.run_app(agents.WorkerOptions(entrypoint_fnc=entrypoint))