struct Anthropic::GeneratedMessage

Included Modules

Extended Modules

Defined in:

generated_message.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(pull : JSON::PullParser) #

Instance Method Detail

def content : Array(MessageContent) #

This is an array of content blocks, each of which has a #type that determines its shape. Currently, the only #type in responses is "text".

Example:

[{ "type": "text", "text": "Hi, I'm Claude." }]

If the request input messages ended with an assistant turn, then the response #content will continue directly from that last turn. You can use this to constrain the model's output.

For example, if the input messages were:

[
  {
    "role": "user",
    "content": "What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun"
  },
  { "role": "assistant", "content": "The best answer is (" }
]

Then the response #content might be:

[{ "type": "text", "text": "B)" }]

[View source]
def id : String #

Unique object identifier.

The format and length of IDs may change over time.


[View source]
def message_thread : Array(Message) #

Messages that were passed to the


[View source]
def model : String #

The model that handled the request.


[View source]
def role : Message::Role #

Conversational role of the generated message. This will always be :assistant.


[View source]
def stop_reason : StopReason | Nil #

The reason that we stopped. This may be one the following values:

  • :end_turn: the model reached a natural stopping point
  • :max_tokens: we exceeded the requested max_tokens or the model's maximum
  • :stop_sequence: one of your provided custom stop_sequences was generated

In non-streaming mode this value is always non-null. In streaming mode, it is nil in the MessageStart event and non-nil otherwise.


[View source]
def stop_sequence : String | Nil #

Which custom stop sequence was generated, if any. This value will be a non- nil string if one of your custom stop sequences was generated.


[View source]
def to_message #

[View source]
def to_s(io) : Nil #

[View source]
def type : String #

Object type — for Messages, this is always "message".


[View source]
def usage : Usage #

Billing and rate-limit usage.

Anthropic's API bills and rate-limits by token counts, as tokens represent the underlying cost to our systems.

Under the hood, the API transforms requests into a format suitable for the model. The model's output then goes through a parsing stage before becoming an API response. As a result, the token counts in #usage will not match one-to-one with the exact visible content of an API request or response.

For example, output_tokens will be non-zero, even for an empty string response from Claude.


[View source]