ExAgent.ModelProfile (ExAgent v0.1.0)

Copy Markdown View Source

Advisory declaration of what a given model/provider supports, so callers and future capabilities can negotiate gracefully per model — e.g. whether the provider can do native JSON-schema output, forced tool calls, or extended thinking.

Every model returns one via the optional ExAgent.Model.profile/1 callback; providers that don't implement it get a permissive default.

Status: declarative for now. The core loop currently always uses the :tool output mode and doesn't yet downgrade based on these flags. The profile is exposed so external code can branch on it today, and so upcoming work (native/prompted output, Thinking capability) can consult it without a new API.

Summary

Types

output_mode()

@type output_mode() :: :text | :tool | :native | :prompted | :auto

t()

@type t() :: %ExAgent.ModelProfile{
  default_output_mode: output_mode(),
  supports_json_object_output: boolean(),
  supports_json_schema_output: boolean(),
  supports_thinking: boolean(),
  supports_tools: boolean()
}