Packages
nous
0.12.9
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/output_schema/use_macro.ex
defmodule Nous.OutputSchema.UseMacro do
@moduledoc false
# Provides the `use Nous.OutputSchema` macro implementation.
defmacro __using__(_opts) do
quote do
@behaviour Nous.OutputSchema.Validator
Module.register_attribute(__MODULE__, :llm_doc, persist: true)
@llm_doc nil
@before_compile Nous.OutputSchema.UseMacro
end
end
defmacro __before_compile__(env) do
llm_doc =
case Module.get_attribute(env.module, :llm_doc) do
nil -> nil
doc -> doc
end
quote do
@doc false
def __llm_doc__, do: unquote(llm_doc)
end
end
end