<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="367952" data-post-id="367952">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Jskalc" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Jskalc/120/35876_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Jskalc
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes, you’re right. Different use cases here! But both valid.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367952" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-367952" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367952"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="367959" data-post-id="367959">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="8" data-topic="71394" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>I did yes <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> I was halfway done with mine when I saw yours and ultimately I wanted it to be focused on using a raw data format (yaml) so that it could be indexed and used for many purposes etc, so I plowed on. Perhaps my stuff could be replaced with your impl, but I wanted to get the data going and worry about the details after/let folks submit PRs. The repo I shared is not made to help people eval their solutions, but to be a central tool for the ecosystem.</p>
</blockquote>
</aside>
<p>Interesting idea. At first I misunderstood the library, but I think I grok it now. From what I can tell, the main overlap between our approaches is the eval syntax and the runner, but you’re leaning more into a custom YAML format. I’m not sure the YAML structure you’re using would be compatible with ex_eval, and maybe it shouldn’t be, since the goals of the two projects are pretty different. Does that assumption seem right to you?</p>
<p>That said, I’d be really interested in exploring some shared patterns between the two. I just pushed an update to ex_eval to support datasets as adapters, so in theory we could plug in various sources like YAML files, Ash resources, Ecto schemas, and so on. Not sure how well that aligns with your setup, but it’s something we could look into.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>ensure I won’t run “normal” unit tests hitting remote APIs</p>
</blockquote>
</aside>
<p>Makes sense. Before pushing ex_eval, I did the same in my early experiments and still use that pattern frequently for integration tests.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>We’re using Req for making LLM calls, as described <a href="https://dashbit.co/blog/sdks-with-req-stripe" rel="noopener nofollow ugc">here</a>. When tests are running, I’m adding a custom Req step caching responses on the disk. That way our bills won’t go out of control.</p>
</blockquote>
</aside>
<p>I love the idea of caching responses to disk with a custom Req step during tests. I’ll definitely consider implementing something similar to help manage costs.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>failure / success of a test is useful, but not enough to iterate. We needed a way to understand what exactly is being sent to the LLM and what is the response to fix it. Sometimes there are multiple messages. A custom ExUnit reporter handles it. <a href="https://gist.github.com/Valian/19b49728ea390bae692bc0f4ea5d55e3" rel="noopener nofollow ugc">Here’s the code</a> (not adjusted at all <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> but should be enough to get an idea). You make request in any way you want, and then send it to reporter to be included in the output: <code>Postline.TestReporter.report_llm_call(TestModule, request, response)</code>. TestModule is needed because there might be multiple tests running at the same time, we need to know to which test attribute given LLM call.</p>
</blockquote>
</aside>
<p>I completely agree that pass/fail isn’t enough. I really like the dashboard you’ve built and the ability to drill into specific evals. What I’ll need eventually is the ability to track evaluations across different metrics, like pass/fail, scoring, min/max, and more. That aligns with what some of the bigger eval frameworks support in other ecosystems.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>having evals integrated with the codebase is immensely powerful. It let’s us test not only LLMs but also a context pipeline, eg:</p>
</blockquote>
</aside>
<p>I also agree that having evals integrated with the codebase is a huge benefit. I don’t want to depend on an external system that I have to force into place.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>The challenge with ExUnit is in it’s synchronous nature - we often want to declare multiple tests in a single module, but they run synchronously, even with async: true. This is fine for fast tests but for complex LLM cases - not really. Also risk of running “regular” ExUnit tests is there. So I definitely see a place for something very similar to ExUnit, but with slightly different parallelism and built-in reporting capabilities.</p>
</blockquote>
</aside>
<p>This is actually one of the main reasons I’m looking to move away from ExUnit. It’s optimized for traditional code, but testing AI feels like a different paradigm. It might make sense to start fresh. I could be wrong, of course, and it probably depends on the use case. For me, I see evals as a form of code for the LLM, so I want an interface that makes it easy to scale and maintain.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>Yes. My not-technical co-founder wrote most of prompts and evals, with help from cursor <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Nice! I don’t see my non-technical teammates ever opening Cursor, haha.</p>
<aside class="quote no-group" data-username="Jskalc" data-post="10" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jskalc/48/35876_2.png" class="avatar"> Jskalc:</div>
<blockquote>
<p>All in all, I really like an idea of <code>ex_eval</code>. Just, personally I’d still go with my approach instead of defining asserts / rules in inflexible structs <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>All good. I think it really comes down to the use case and context. I’d love to keep collaborating and sharing ideas as this space evolves.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367959" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-367959" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367959"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="367960" data-post-id="367960">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="bradley" data-post="13" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/48/25949_2.png" class="avatar"> bradley:</div>
<blockquote>
<p>Interesting idea. At first I misunderstood the library, but I think I grok it now.</p>
</blockquote>
</aside>
<p>In this case it’s not even meant to be used as a library. I want to make it a central tool we can run to evaluate LLM assistants skill with Elixir and its package ecosystem.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367960" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-367960" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367960"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="368862" data-post-id="368862">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just want to update everyone, I’ve been working on <a href="https://github.com/bradleygolden/ex_eval/tree/main" rel="noopener nofollow ugc">ex_eval</a> in the background and think I found a pattern that I like. In summary:</p>
<ul>
<li>
<p><strong>Async-first with OTP supervision</strong>: Built on GenServer processes with proper supervision trees. You can run evaluations asynchronously and get real-time progress updates.</p>
</li>
<li>
<p><strong>LLM-as-judge pattern</strong>: Instead of rigid assertion-based testing, evaluations use natural language criteria judged by LLMs. This is implemented using an adapter approach, starting with <a href="https://github.com/brainlid/langchain" rel="noopener nofollow ugc">langchain</a> as the base layer. (See <a href="https://github.com/bradleygolden/ex_eval_langchain" rel="noopener nofollow ugc">ex_eval_langchain</a> for the adapter if you’re curious)</p>
</li>
<li>
<p><strong>Dataset protocol for flexible data sources</strong>: Whether your evaluation data comes from CSV files, databases, or inline definitions, the Dataset protocol provides a consistent interface.</p>
</li>
<li>
<p><strong>Pipeline processing</strong>: Built-in support for preprocessors, postprocessors, and middleware. This lets you transform data, handle multi-turn conversations, and add custom evaluation logic without modifying the core framework.</p>
</li>
<li>
<p><strong>Real-time monitoring</strong>: Integration with real time messaging for broadcasting evaluation progress, which is helpful for long-running evaluation suites and UI interfaces.</p>
</li>
</ul>
<p>In terms of next steps, from here, I think I’m at the point where I can build a UI interface that is agnostic to the data layer. That way I can move on to implementing an Ash resource layer and then maybe other folks who don’t use Ash could implement Ecto for example.</p>
<p>Here is an example script (<a href="https://github.com/bradleygolden/ex_eval/blob/c4a835acd8137555abac22c32f34c84fc38c375c/examples/langchain.exs" rel="noopener nofollow ugc">link</a>) that I’ve landed on that’s inspired by Req and MLFlow:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Mix.install([
  {:ex_eval, path: "./", override: true},
  {:ex_eval_langchain, path: "../ex_eval_langchain"}
])

dataset = [
  %{
    input: "What is the capital of France?",
    judge_prompt: "The answer should be Paris",
    category: :geography
  }
]

response_fn = fn
  "What is the capital of France?" -&gt;
    "Paris"

  _ -&gt;
    "I don't know"
end

ExEval.new()
|&gt; ExEval.put_judge(ExEval.Langchain, model: "gpt-4.1-mini")
|&gt; ExEval.put_dataset(dataset)
|&gt; ExEval.put_response_fn(response_fn)
|&gt; ExEval.put_experiment(:langchain)
|&gt; ExEval.run(async: false)
</code></pre>
<p>Because everything is implemented as composible functions, we could in theory add whatever macros/syntactic sugar we want to streamline the overall DX.</p>
<p>Also, this project is really a proposal of sorts. I really only plan to add it to hex if people want it.</p>
<p><a class="mention" href="/u/zachdaniel" rel="nofollow">@zachdaniel</a> just curious, are there any issues you think I’ll run into on the ash side implementing the data layer portion of this? Any considerations I should take into account?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368862" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-368862" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368862"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="368863" data-post-id="368863">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="bradley" data-post="15" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/48/25949_2.png" class="avatar"> bradley:</div>
<blockquote>
<p><a class="mention" href="/u/zachdaniel" rel="nofollow">@zachdaniel</a> just curious, are there any issues you think I’ll run into on the ash side implementing the data layer portion of this? Any considerations I should take into account?</p>
</blockquote>
</aside>
<p>Do you mean like you’d provide some kind of prebuilt backend/frontend for this stuff?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368863" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-368863" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368863"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="368864" data-post-id="368864">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="bradley" data-post="15" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/48/25949_2.png" class="avatar"> bradley:</div>
<blockquote>
<p><strong>LLM-as-judge pattern</strong>: Instead of rigid assertion-based testing, evaluations use natural language criteria judged by LLMs. This is implemented using an adapter approach, starting with <a href="https://github.com/brainlid/langchain" rel="noopener nofollow ugc">langchain</a> as the base layer. (See <a href="https://github.com/bradleygolden/ex_eval_langchain" rel="noopener nofollow ugc">ex_eval_langchain</a> for the adapter if you’re curious)</p>
</blockquote>
</aside>
<p>Personally I’d want to see both of these things.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368864" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-368864" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368864"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="368865" data-post-id="368865">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="16" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>Do you mean like you’d provide some kind of prebuilt backend/frontend for this stuff?</p>
</blockquote>
</aside>
<p>I’m thinking a prebuilt frontend with a pluggable backend.</p>
<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="17" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>Personally I’d want to see both of these things.</p>
</blockquote>
</aside>
<p>Makes sense.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368865" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-368865" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368865"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="368867" data-post-id="368867">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="bradley" data-post="18" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/48/25949_2.png" class="avatar"> bradley:</div>
<blockquote>
<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="17" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>Personally I’d want to see both of these things.</p>
</blockquote>
</aside>
<p>Makes sense.</p>
</blockquote>
</aside>
<p>Sorry I realized maybe that wasn’t clear but I  mean I’d want to see deterministic assertions in addition to an LLM judge.</p>
<blockquote>
<p>I’m thinking a prebuilt frontend with a pluggable backend.</p>
</blockquote>
<p>I’d have to know more about the goals of it on that front, but pluggable backend often means some kind of strictly defined API layer at which point other adapters could be provided perhaps, but if you’re in charge of both the front end and backend it sounds like perhaps complexity that isn’t warranted?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368867" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-368867" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368867"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="368873" data-post-id="368873">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="19" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>Sorry I realized maybe that wasn’t clear but I mean I’d want to see deterministic assertions in addition to an LLM judge.</p>
</blockquote>
</aside>
<p>No worries, I know just what you mean. It’s a common pattern for eval frameworks to support different evaluation methods/metrics outside of LLM as a judge.</p>
<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="19" data-topic="71394">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>I’d have to know more about the goals of it on that front, but pluggable backend often means some kind of strictly defined API layer at which point other adapters could be provided perhaps, but if you’re in charge of both the front end and backend it sounds like perhaps complexity that isn’t warranted?</p>
</blockquote>
</aside>
<p>For the “pluggable backend” piece, I’m actually hoping the community can land on something foundational and reusable, think how Ecto is used for persistence, but Ash and others build on top. I’d prefer this evaluation code isn’t tied to a single framework like Ash, but rather lives as a shared library anyone can leverage (and extend with adapters if needed).</p>
<p>To be honest, my goal is a bit selfish: I don’t want to build and maintain this myself, but I haven’t found anything that fits my requirements yet. So, if I have to, I’ll put together something minimal to get by. David from Thinking Elixir just mentioned a similar idea in the latest episode, would love for him to chime in here if he’s interested!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368873" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-368873" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368873"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="368886" data-post-id="368886">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>A pluggable backend sounds a bit strange though because you’d have a proscribed schema/API required. Do you mean like allow swapping a storage layer as opposed to the entire backend?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="368886" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-is-the-community-currently-evaluating-ai-applications/71394/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-368886" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368886"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/71394/load_more?page=3">Load more posts (7 remaining)</a>
</div></template></turbo-stream>