All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
- Hard cutover from LangChain to ReqLLM for all LLM access paths.
- Removed
AshAi.setup_ash_ai/2,AshAi.functions/1, and LangChain-basedAshAi.iex_chat/2. - Added ReqLLM-first orchestration APIs:
AshAi.list_tools/1AshAi.build_tools_and_registry/1AshAi.ToolLoop.run/2AshAi.ToolLoop.stream/2AshAi.iex_chat/1
prompt/2now uses ReqLLM model specs ("provider:model", ReqLLM tuples, or functions returning them).- Prompt actions keep
tools:support viaAshAi.ToolLoop. mix ash_ai.gen.chatnow generates ReqLLM-based chat code and runtime config (config :req_llm, ...).- Runtime does not include Jido integration.
- Full guide: LangChain to ReqLLM Migration Guide
- Replace LangChain model structs with ReqLLM model specs, e.g.:
LangChain.ChatModels.ChatOpenAI.new!(%{model: "gpt-4o"})- becomes
"openai:gpt-4o"
- Replace
AshAi.setup_ash_ai/2usage withAshAi.ToolLooporAshAi.build_tools_and_registry/1. - Update runtime configuration keys:
config :langchain, ...->config :req_llm, ...
- prompt actions: default tool-loop
max_iterationsto:infinity(unless explicitly set) - prompt actions: return tool-loop failures as action errors with reason details
- prompt actions: support
verbose?tool-loop lifecycle logging - prompt actions: use permissive schema for unconstrained
:mapreturns ash_ai.gen.chat: preserve and preview tool call arguments in both LiveView and LiveComponent templatesash_ai.gen.chat: collapse generated tool UI helpers intoAshAi.ChatUI.Tools.extract/1with one-time warning flash on malformed tool data- docs: add legacy compatibility notes for adapter mapping and embedding return tuple behavior
v0.5.0 (2026-01-26)
-
Add ChatOpenAiResponses support (#163) by sezaru (#163)
-
Add ChatOpenAiResponses support by sezaru (#163)
-
Use StructuredOutput for ChatOpenAiResponses by sezaru (#163)
-
Add support for modifying the chain in prompt (#142) by @Munksgaard (#142)
-
add additionalProperties constraint to input schema (#144) by @kingdomcoding (#144)
-
fix issue with AshOban compiling before AshAi action definition (#148) by Aaron Westbrook (#148)
-
Handle anonymous function in tool load definition (#157) by josh-brainbox (#157)
-
add arguments to tools by josh-brainbox (#157)
v0.4.0 (2025-11-23)
-
Added _meta field to tools MCP (#140) by @C-Sinclair (#140)
-
Add MCP resources support with action descriptions (#138) by @C-Sinclair (#138)
v0.3.0 (2025-10-28)
- langchain 0.4 (#132) by @barnabasJ (#132)
- turn content into string for chat title by @barnabasJ (#132)
- update ash_oban to 0.5 by @zachdaniel
v0.2.14 (2025-10-16)
- allow multiple full text definitions in vectorize section (#125) by Abdessabour Moutik (#125)
v0.2.13 (2025-09-27)
-
minor QOL improvement to the redirection to other pages (#120) by Abdessabour Moutik (#120)
-
ash_ai.gen.chat to validate text presence in messages (#119) by Daniel Hoelzgen (#119)
-
BadMapError when LangChain/MCP calls tools without arguments (#118) by @matthewsinclair (#118)
-
don't install usage rules as part of installing ash ai by @zachdaniel
-
Support LangChain 0.4 (#124) by Arjan Scherpenisse (#124)
v0.2.12 (2025-08-31)
- pass context option through setup_ash_ai to nested actions (#111) by @bradleygolden
-
don't show input if no inputs to action by @zachdaniel
-
add
action_parametersoption by @zachdaniel
v0.2.11 (2025-08-21)
-
Respect resource pagination limits (#108) by kik4444
-
eliminate chat_live compile warning (#107) by @andyl
-
log the action name (#102) by @barnabasJ
-
move permissions check of tools until after appropriate filtering (#104) by @jgwmaxwell
-
Add default adapter for ChatGoogleAI (#99) by @mylanconnolly
v0.2.10 (2025-08-07)
- log the action name (#102) by @barnabasJ
-
move permissions check of tools until after appropriate filtering (#104) by @jgwmaxwell
-
Add default adapter for ChatGoogleAI (#99) by @mylanconnolly
v0.2.9 (2025-07-22)
-
mark all fields as required by @zachdaniel
-
handle number constraints by @zachdaniel
-
Add on_tool_start and on_tool_end callbacks (#96) by @bradleygolden
v0.2.8 (2025-07-17)
- add typed struct example to usage rules & docs by @zachdaniel
v0.2.7 (2025-07-17)
- separate custom_context from llm initialization in ash_ai.gen.chat (#88) by @germanbottosur
v0.2.6 (2025-07-05)
-
handle missing user module more gracefully by @zachdaniel
-
properly install usage rules by @zachdaniel
v0.2.5 (2025-07-03)
- support sub rules in usage rules tools by @zachdaniel
v0.2.4 (2025-07-02)
-
allow for a custom json_processor (#80) by @TwistingTwists
-
changed chat-live message history order before adding it to langchain (#78) by srmico
-
crash with embedded resource (#77) by @nallwhy
-
add documentation for tool private attribute behavior (#81) by marot
-
add documentation for tool private attribute behavior by marot
-
install usage rules better by @zachdaniel
v0.2.3 (2025-06-25)
- unsafe usage in mdex (#73) by @TwistingTwists
-
update usage rules w/ more prompt actions by @zachdaniel
-
multi-provider support prerequisite - eliminate open api spex reliance (#64) by KasparKipp
-
Support various additional prompt formats (#72) by @TwistingTwists
v0.2.2 (2025-06-11)
- properly close connection after sending the endpoint by @zachdaniel
- use relative paths in usage rules MCP by @zachdaniel
v0.2.1 (2025-06-11)
- fix installer waiting for input by @zachdaniel
- make usage rules display all and show file paths instead of by @zachdaniel
v0.2.0 (2025-06-10)
-
Json Processor for providers that do not support json_schema or tool calling (#49) by @TwistingTwists
-
improvement: Usage rules mcp integration (#60) by Barnabas Jovanovics
-
tasks: fix prompt typo (#62) by ChristianAlexander
-
endpoint matching for url 'starting from' api.openai.com (#57) by @TwistingTwists
-
fix oban option passing by @zachdaniel
-
require an explicit endpoint set by @zachdaniel
-
pass tenant to AshOban.run_trigger by @zachdaniel
-
sync usage rules on project creation by @zachdaniel
-
more context in error messages (#56) by @TwistingTwists
-
When using Adapter.CompletionTool (for anthropic) add the cache_control (#51) by Rodolfo Torres
-
more realistic handling of example generation (#50) by @TwistingTwists
v0.1.11 (2025-06-04)
-
adapters for prompt-backed actions
-
add completion tool adapter, infer it from anthropic
v0.1.10 (2025-05-30)
- use after_action instead of after_transaction to afford atomic_updates (#43)
v0.1.9 (2025-05-27)
- remove unnecessary source type from generated chat code
v0.1.8 (2025-05-27)
-
overhaul ash_ai.gen.chat to store tool calls
-
make the dev mcp path configurable (#38)
v0.1.7 (2025-05-21)
- Add usage rules for Ash AI
v0.1.6 (2025-05-21)
- Rename package_ruels to usage_rules
v0.1.5 (2025-05-21)
- properly display generators, add new usage-rules.md dev tool
- add
ash_ai.gen.package_rulestask to create a rules file
v0.1.4 (2025-05-20)
- Replace doc with description (#36)
v0.1.3 (2025-05-20)
- use
descriptionnotdoc
v0.1.2 (2025-05-20)
-
improve chat ui heex template
-
don't reply to the initialized notification (#35)
- update chat heex template. (#33)
v0.1.1 (2025-05-14)
-
more fixes for gen.chat message order
-
properly generate chat message log
- fix update pre_flight permission request for tools
v0.1.0 (2025-05-14)
-
always configure chat queues
-
Set additionalProperties to false in parameter_schema (#16)
-
Fix load opt not working (#12)
-
don't pass nil input in function/4 (#8)
-
Fix schema type of actions of Options (#5)
-
use
:ascto put lowest distance records at the top -
use correct ops in vector before action
-
use
messageinstead ofreason
-
add
mix ash_ai.gen.mcp -
dev tools MCP
-
remove vector search action
-
Add an MCP server support
-
support tool-level descriptions
-
better name trigger
-
use bulk actions for update/destroy
-
first draft of
mix ash_ai.gen.chat(#19) -
allow read actions to be aggregated in addition to run
-
set up CI, various fixes and refactors
-
Add aggregates to filter properties (#15)
-
Add async opt to Tool
-
Add load opt to tool (#9)
-
Add tenant to opts of setup_ash_ai/2 (#4)
-
add installer
-
add tenants to action calls in functions
-
add
:manualstrategy -
allow specifying tools by name of tool
-
strict modes & other various improvements
-
make embedding model parameterizable
-
remove unnecessary deps, use langchain
-
make embedding models for arbitrary vectorization
-
use configured name for tools
-
make the DSL more
toolcentric -
add vectorize section