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)