Module: Deja::Judges
- Defined in:
- lib/deja/judges/base.rb,
lib/deja/judges/anthropic.rb
Overview
Judge adapters teach the meet_requirements matcher how to judge with a given
LLM client. An adapter is selected by the type of the object your
judge_client returns, so the right defaults follow from the provider you
chose rather than being assumed globally.
Today an adapter supplies the default request attrs (model, etc.). The matcher still builds the request and parses the response (both Anthropic-shaped); as more judge providers are added, that construction/parsing is meant to move onto the adapter too — which is why dispatch already happens here.
Defined Under Namespace
Class Method Summary collapse
- .descriptions ⇒ Object
-
.for_client(client) ⇒ Object
The adapter for the client your
judge_clientreturned. -
.register(klass) ⇒ Object
Built-in judge adapters register themselves.
- .registered ⇒ Object
Class Method Details
.descriptions ⇒ Object
40 41 42 |
# File 'lib/deja/judges/base.rb', line 40 def descriptions @registered.map(&:client_description).join(", ") end |
.for_client(client) ⇒ Object
The adapter for the client your judge_client returned. Raises a helpful
error when no registered adapter handles it.
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/deja/judges/base.rb', line 29 def for_client(client) klass = @registered.find {|k| k.handles?(client) } klass or raise Deja::Error, " No Deja judge adapter handles \#{client.class} (the object your\n judge_client returned). Deja can judge with: \#{descriptions}.\n Point judge_client at one of those, or add a Deja::Judges::Base\n subclass that handles your client.\n MSG\n klass.new(client)\nend\n" |
.register(klass) ⇒ Object
Built-in judge adapters register themselves. Newest-first, so a more specific adapter registered later can shadow a more general one.
19 20 21 |
# File 'lib/deja/judges/base.rb', line 19 def register(klass) @registered.unshift(klass) end |
.registered ⇒ Object
23 24 25 |
# File 'lib/deja/judges/base.rb', line 23 def registered @registered end |