AshAi.Actions.Prompt.Adapter.RequestJson (ash_ai v0.2.12)

View Source

This adapter is designed for LLMs that don't support native tool calling or structured outputs. It embeds the JSON schema in the system prompt and uses LangChain's JsonProcessor to extract the JSON response from markdown code blocks.

Adapter Options

  • :max_retries - Maximum number of retry attempts for invalid JSON (default: 3)
  • :json_format - Format to request JSON in (:markdown, :xml) (default: :markdown)
  • :json_processor - Custom JSON processor function. See LangChain.Chains.LLMChain.message_processor/0
  • :include_examples - Examples to include in prompt. Options:
    • true - Generate examples using Ash.Type.generator (default)
    • false - No examples
    • %{"result" => example_data} - Use provided example data
    • [%{"result" => example1}, %{"result" => example2}] - Multiple examples

Summary

Types

adapter_opts()

@type adapter_opts() :: [
  max_retries: non_neg_integer(),
  json_format: json_format(),
  json_processor: LangChain.Chains.LLMChain.message_processor(),
  include_examples: include_examples()
]

include_examples()

@type include_examples() :: boolean() | map() | [map()]

json_format()

@type json_format() :: :markdown | :xml

Functions

run(data, opts)

@spec run(AshAi.Actions.Prompt.Adapter.Data.t(), adapter_opts()) ::
  {:ok, any()} | {:error, String.t()}

Callback implementation for AshAi.Actions.Prompt.Adapter.run/2.