Jibu

A thin client for the Anthropic API, built on Req.

Jibu sends request bodies unchanged. It has no model list and no parameter schema. New API fields therefore work without a new release.

Features

Jibu is not affiliated with or endorsed by Anthropic.

Installation

Add Jibu to the dependencies in mix.exs:

{:jibu, "~> 0.1"}

Quick start

client = Jibu.new(model: "claude-opus-5-5", max_tokens: 1024)

{:ok, text} = Jibu.ask(client, "Name three rivers in Germany.", effort: :low)

{:ok, booking} = Jibu.extract(client, "Workshop with MRV, 9 to 11:30.", schema)

Without :api_key, Jibu reads ANTHROPIC_API_KEY from the environment.

Full requests

Jibu.messages/2 takes the whole request body as a map and returns the whole response. Jibu sends the body unchanged, so every field of the API works, including new ones.

{:ok, response} =
  Jibu.messages(client, %{
    system: [%{type: "text", text: "You sort bookings.", cache_control: %{type: "ephemeral"}}],
    messages: [%{role: "user", content: "Workshop with MRV, 9 to 11:30."}],
    output_config: %{effort: "low"}
  })

Jibu.Response.text(response)
response.stop_reason
response.usage

The client defaults fill in model and max_tokens. A field in the body wins over its default.

More of the API

Module Covers Guide
Jibu count_tokens/2 Getting started
Jibu.Models Listing and retrieving models Getting started
Jibu.Content Image and document blocks from files, binaries or file ids Files
Jibu.Files Upload, list, download and delete files Files
Jibu.Batches Message Batches at half price Batches
Jibu.Tools A tool-use loop with local functions Tools
Jibu.Error Error types, retries and telemetry Errors

In tests, pass plug: {Req.Test, MyStub} to Jibu.new/1. No request then leaves the test.

Documentation