All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.0 - 2026-04-13
Added
LangchainPrompt.execute/4— runs a prompt module against an adapter, returning{:ok, result}or a tagged{:error, reason}tuple.LangchainPrompt.Promptbehaviour — four-callback contract (set_profile/1,generate_system_prompt/1,generate_user_prompt/1,post_process/2).LangchainPrompt.Adapterbehaviour — single-callback contract (chat/2) for plugging in any LLM provider.LangchainPrompt.Profilestruct — pairs an adapter module with its runtime opts.LangchainPrompt.Messagestruct — represents a single conversation turn, supporting plain string content and multimodal content-part lists.LangchainPrompt.Attachmentstruct +from_file!/1— adapter-agnostic container for binary file data (images, PDFs); infers type and media from file extension.LangchainPrompt.Adapters.Langchain— delegates to any elixir-langchain chat model via:chat_modulein the profile opts. Handles both plain-string and ContentPart-list responses (covers Google AI, Anthropic, OpenAI, Deepseek, and more).LangchainPrompt.Adapters.Test— zero-dependency ExUnit adapter; records calls as process messages, supports on-demand failure via"FAIL_NOW"sentinel.LangchainPrompt.TestAssertions—assert_adapter_called/0,assert_adapter_called/1,refute_adapter_called/0macros for ExUnit.LangchainPrompt.Profiles— configurable indirection layer for named execution profiles (config :langchain_prompt, :profiles_impl, MyModule).LangchainPrompt.Profiles.TestImpl— test implementation that always returns theTestadapter.