Files
til/llm/include-a-file-with-message-to-ant.md

2.5 KiB
Raw Permalink Blame History

Include A File With Message To ant

The Anthropic CLI tool (ant) allows including files, such as images, directly in the message being sent to the model. This is done with the @ symbol followed by a relative path to the image on the file system.

I have a file parameterized-behavioral-tests.png in my current directory that I'd like to include. In the content array of the message I include an object of type image along with some source metadata. Within source the image file is referenced with the data field.

With that set, I then include a text object with my prompt asking for alt text of this image.

 ant messages create \
  --model claude-opus-5 \
  --max-tokens 1024 \
  --message '{role: user, content: [
    {type: image, source: {type: base64, media_type: image/png, data: "@./parameterized-behavioral-tests.png"}},
    {type: text, text: "Produce a concise, but descriptive alt text for this image."}
  ]}' \
  --transform 'content.#(type=="text").text' --raw-output

A hand-drawn style diagram comparing two testing approaches, split by a vertical
line.

On the left, under the heading "Behavioral Tests," is a single column of six
rounded rectangular test rows: four outlined in green with green check-mark
icons (passing) and two outlined in red with red X icons (failing), each
containing black scribble lines representing text.

On the right, under the heading "Parameterized Behavioral Tests," a bracketed
list of three purple parameter symbols — a circle, a triangle, and a diamond —
sits at the top, with arrows pointing down to three separate columns of six test
rows each. Every row in a column is tagged with its corresponding parameter
shape on the right edge. The circle column shows all six rows passing (green
with check marks). The triangle column shows three passing and three failing
(red with X marks). The diamond column shows five passing and one failing. The
illustration conveys that a single behavioral test, when parameterized, expands
into multiple variants whose pass/fail outcomes can differ per parameter.

This is for the image toward the top of this post on parameterized tests in pytest. The description is a bit wordier than I would have liked, but it is spot on. It is both visually descriptive and conveys what is being conceptually illustrated.

This whole thing was 3800 input tokens, 328 output tokens, and cost ~$0.02.