A Jido.Action for generating structured plans from goals.
This action uses ReqLLM with a specialized system prompt for planning, generating step-by-step plans that consider constraints and available resources.
Parameters
model(optional) - Model alias (e.g.,:planning) or direct specgoal(required) - The goal to achieveconstraints(optional) - List of constraints/limitationsresources(optional) - List of available resourcesmax_steps(optional) - Maximum number of steps in the plan (default:10)max_tokens(optional) - Maximum tokens to generate (default:4096)temperature(optional) - Sampling temperature (default:0.7)timeout(optional) - Request timeout in milliseconds
Examples
# Basic planning
{:ok, result} = Jido.Exec.run(Jido.AI.Actions.Planning.Plan, %{
goal: "Build a personal blog website"
})
# With constraints and resources
{:ok, result} = Jido.Exec.run(Jido.AI.Actions.Planning.Plan, %{
goal: "Launch a SaaS product",
constraints: ["Budget under $10k", "Must launch in 3 months"],
resources: ["2 developers", "Existing customer base"],
max_steps: 15
})
Summary
Functions
Returns the Action metadata. Alias for to_json/0.
Returns the category of the Action.
Returns the description of the Action.
Returns the name of the Action.
Lifecycle hook called after Action execution.
Lifecycle hook called after output validation.
Lifecycle hook called after parameter validation.
Lifecycle hook called before output validation.
Lifecycle hook called before parameter validation.
Lifecycle hook called when an error occurs.
Returns the output schema of the Action.
Executes the plan action.
Returns the input schema of the Action.
Returns the tags associated with the Action.
Returns the Action metadata as a JSON-serializable map.
Converts the Action to an LLM-compatible tool format.
Validates the output result for the Action.
Validates the input parameters for the Action.
Returns the version of the Action.
Functions
Returns the Action metadata. Alias for to_json/0.
Returns the category of the Action.
Returns the description of the Action.
Returns the name of the Action.
Lifecycle hook called after Action execution.
Lifecycle hook called after output validation.
Lifecycle hook called after parameter validation.
Lifecycle hook called before output validation.
Lifecycle hook called before parameter validation.
Lifecycle hook called when an error occurs.
Returns the output schema of the Action.
Executes the plan action.
Returns
{:ok, result}- Successful response withplan,steps,goal, andusagekeys{:error, reason}- Error from ReqLLM or validation
Result Format
%{
plan: "The full plan text",
steps: ["Step 1", "Step 2", ...],
goal: "The original goal",
model: "anthropic:claude-sonnet-4-20250514",
usage: %{...}
}
Returns the input schema of the Action.
Returns the tags associated with the Action.
Returns the Action metadata as a JSON-serializable map.
Converts the Action to an LLM-compatible tool format.
Validates the output result for the Action.
Examples
iex> defmodule ExampleAction do
...> use Jido.Action,
...> name: "example_action",
...> output_schema: [
...> result: [type: :string, required: true]
...> ]
...> end
...> ExampleAction.validate_output(%{result: "test", extra: "ignored"})
{:ok, %{result: "test", extra: "ignored"}}
iex> ExampleAction.validate_output(%{extra: "ignored"})
{:error, "Invalid output for Action: Required key :result not found"}
Validates the input parameters for the Action.
Examples
iex> defmodule ExampleAction do
...> use Jido.Action,
...> name: "example_action",
...> schema: [
...> input: [type: :string, required: true]
...> ]
...> end
...> ExampleAction.validate_params(%{input: "test"})
{:ok, %{input: "test"}}
iex> ExampleAction.validate_params(%{})
{:error, "Invalid parameters for Action: Required key :input not found"}
Returns the version of the Action.