Skip to main content

examples/structured_output_agent.exs

Code.require_file("support.exs", __DIR__)

alias BeamWeaver.Core.Message
alias BeamWeaver.Examples.Support

defmodule BeamWeaver.Examples.StructuredOutputAgent.AnswerSchema do
  use BeamWeaver.Schema

  title("answer_schema")
  strict(true)

  field(:answer, :string, required: true)
end

defmodule BeamWeaver.Examples.StructuredOutputAgent do
  use BeamWeaver.Agent

  name("structured_output_agent")
  model(Support.model())

  response_schema(BeamWeaver.Examples.StructuredOutputAgent.AnswerSchema,
    name: "answer_schema",
    strategy: :auto
  )
end

{:ok, %{structured_response: %{"answer" => answer}}} =
  BeamWeaver.Examples.StructuredOutputAgent.invoke(%{
    messages: [Message.user(~s(What is 2 + 2? Return JSON with answer as the string "4".))]
  })

IO.puts(answer)