Forge.Measurement.ExternalCompute.Snakepit (Forge v0.1.1)

View Source

Snakepit (LLM worker pool) integration for semantic measurements.

Snakepit provides:

  • LLM-as-judge for quality scoring
  • Semantic coherence analysis
  • Factuality checking
  • Bias detection

Configuration

config :forge, :snakepit,
  url: "http://snakepit.example.com",
  api_key: "your-key",
  default_model: "claude-3-5-sonnet"

Example Usage

defmodule CoherenceMeasurement do
  use Forge.Measurement

  def compute(samples) do
    sample = hd(samples)
    text = sample.data["text"]

    prompt = """
    Rate the semantic coherence of this text on a scale of 1-10.
    Text: #{text}
    """

    {:ok, job_id} = Snakepit.enqueue(prompt, model: "claude-3-5-sonnet")

    case Snakepit.poll_result(job_id, timeout: 20_000) do
      {:ok, response} ->
        score = extract_score(response["body"])
        {:ok, %{score: score, reasoning: response["body"]}}

      {:error, reason} ->
        {:error, reason}
    end
  end
end

Summary

Functions

Enqueues an LLM prompt for processing.

Polls for job result.

Functions

enqueue(prompt, opts \\ [])

Enqueues an LLM prompt for processing.

Options

  • :model - Model to use (default: from config)
  • :temperature - Sampling temperature (default: 0.0)
  • :max_tokens - Maximum response tokens (default: 1024)
  • :priority - Job priority (default: :normal)

Returns

{:ok, job_id} or {:error, reason}

poll_result(job_id, opts \\ [])

Polls for job result.

Alias for await_result/2.