Packages

Elixir-native LangChain, LangGraph, and DeepAgents for traceable LLM apps: OTP workflows, tools, memory, human-in-the-loop, streaming, custom clients/adapters, minimal deps, and WeaveScope tracing.

Current section

Files

Jump to
beam_weaver examples supervised_openai_agent.exs
Raw

examples/supervised_openai_agent.exs

alias BeamWeaver.Core.ChatModel
alias BeamWeaver.Core.Message
alias BeamWeaver.Runtime.Agent
alias BeamWeaver.Tracing
Tracing.reset()
model =
BeamWeaver.OpenAI.chat_model(
api_key: "sk-replay",
transport: BeamWeaver.Transport.Replay,
transport_opts: [cassette_path: "priv/openai/cassettes/supervised_openai_agent.yaml"]
)
{:ok, agent} = Agent.start_child(id: "supervised_openai_agent_example")
:ok = Agent.subscribe(agent)
{:ok, _run} = Tracing.start_run("supervised OpenAI replay example")
{:ok, work} =
Agent.start_model_call(
agent,
[Message.user("agent ping")],
fn messages -> ChatModel.invoke(model, messages) end,
timeout: 1_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
1_500 ->
raise "model call timed out"
end