Code.require_file("support.exs", __DIR__) alias BeamWeaver.Core.ChatModel alias BeamWeaver.Core.Message alias BeamWeaver.Examples.Support alias BeamWeaver.Runtime.Agent alias BeamWeaver.Tracing Tracing.reset() model = Support.model() {:ok, agent} = Agent.start_child(id: "supervised_agent_example") :ok = Agent.subscribe(agent) {:ok, _run} = Tracing.start_run("supervised agent example") {:ok, work} = Agent.start_model_call( agent, [Message.user("Say hello in one short sentence.")], fn messages -> ChatModel.invoke(model, messages) end, timeout: 30_000 ) receive do {:beam_weaver_agent, _agent_id, {:completed, work_id, response}} when work_id == work.id -> IO.puts(Message.text(response)) {:beam_weaver_agent, _agent_id, {:failed, work_id, error}} when work_id == work.id -> raise "model call failed: #{inspect(error)}" after 35_000 -> raise "model call timed out" end