• Nachrichten
  • Managed Agents
  • Admin
Search...
⌘K
CLI, SDKs und Bibliotheken
Übersicht
ant CLI
SchnellstartAuthentifizierungsoptionenVerwendung der CLISkripting und Automatisierung
Client-SDKs
MiddlewarePythonTypeScriptC#GoJavaPHPRuby
Bibliotheken und Integrationen
Apple Foundation ModelsOpenAI-SDK-Kompatibilität
Log in
Ruby
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
CLI, SDKs und Bibliotheken/Client-SDKs

Ruby SDK

Installiere und konfiguriere das Anthropic Ruby SDK mit Sorbet-Typen, Streaming-Helfern und Connection-Pooling

Die Anthropic Ruby-Bibliothek bietet bequemen Zugriff auf die Anthropic REST API aus jeder Ruby 3.2.0+ Anwendung. Sie wird mit umfassenden Typen und Docstrings in Yard, RBS und RBI ausgeliefert. Als HTTP-Transport wird net/http aus der Standardbibliothek verwendet, mit Connection-Pooling über das connection_pool-Gem.

Für die Dokumentation der API-Funktionen mit Codebeispielen siehe die API-Referenz. Diese Seite behandelt Ruby-spezifische SDK-Funktionen und -Konfiguration.

Installation

Füge das Gem mit Bundler zum Gemfile deiner Anwendung hinzu:

bundle add anthropic

Voraussetzungen

Ruby 3.2.0 oder höher.

Verwendung

anthropic = Anthropic::Client.new(
  api_key: ENV["ANTHROPIC_API_KEY"] # This is the default and can be omitted
)

message = anthropic.messages.create(
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  model: :"claude-opus-4-8"
)

puts(message.content)

Für Authentifizierungsoptionen einschließlich Workload Identity Federation siehe Authentifizierung.

Streaming

Das SDK bietet Unterstützung für das Streaming von Antworten mittels „Server-Sent Events" (vom Server gesendete Ereignisse), oder SSE.

anthropic = Anthropic::Client.new
stream = anthropic.messages.stream(
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  model: :"claude-opus-4-8"
)

stream.each do |message|
  puts(message.type)
end

Streaming-Helfer

Diese Bibliothek bietet mehrere Hilfsfunktionen für das Streaming von Nachrichten, zum Beispiel:

anthropic = Anthropic::Client.new
stream = anthropic.messages.stream(
  max_tokens: 1024,
  messages: [{role: :user, content: "Say hello there!"}],
  model: :"claude-opus-4-8"
)

stream.text.each do |text|
  print(text)
end

Streaming mit anthropic.messages.stream(...) stellt verschiedene Helfer bereit, einschließlich Akkumulation und SDK-spezifischer Events.

Input-Schema und Tool-Aufrufe

Das SDK bietet Hilfsmechanismen, um strukturierte Datenklassen für Tools zu definieren und Claude diese automatisch ausführen zu lassen. Für eine detaillierte Dokumentation zu Tool-Nutzungsmustern einschließlich des Tool-Runners siehe Tool Runner (SDK).

anthropic = Anthropic::Client.new
class CalculatorInput < Anthropic::BaseModel
  required :lhs, Float
  required :rhs, Float
  required :operator, Anthropic::InputSchema::EnumOf[:+, :-, :*, :/]
end

class Calculator < Anthropic::BaseTool
  input_schema CalculatorInput

  def call(expr)
    expr.lhs.public_send(expr.operator, expr.rhs)
  end
end

# Handhabt die Tool-Ausführungsschleife automatisch
anthropic.beta.messages.tool_runner(
  model: "claude-opus-4-8",
  max_tokens: 1024,
  messages: [{role: "user", content: "What's 15 * 7?"}],
  tools: [Calculator.new]
).each_message { |message| puts message.content }

Strukturierte Ausgaben

Für die vollständige Dokumentation zu strukturierten Ausgaben einschließlich Ruby-Beispielen siehe Strukturierte Ausgaben.

Fehlerbehandlung

Wenn die Bibliothek keine Verbindung zur API herstellen kann oder wenn die API einen Nicht-Erfolgs-Statuscode zurückgibt (also eine 4xx- oder 5xx-Antwort), wird eine Unterklasse von Anthropic::Errors::APIError ausgelöst:

anthropic = Anthropic::Client.new
begin
  message = anthropic.messages.create(
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello, Claude"}],
    model: :"claude-opus-4-8"
  )
rescue Anthropic::Errors::APIConnectionError => e
  puts("The server could not be reached")
  puts(e.cause)  # an underlying Exception, likely raised within `net/http`
rescue Anthropic::Errors::RateLimitError => e
  puts("A 429 status code was received; we should back off a bit.")
rescue Anthropic::Errors::APIStatusError => e
  puts("Another non-200-range status code was received")
  puts(e.status)
end

Die Fehlercodes sind wie folgt:

UrsacheFehlertyp
HTTP 400BadRequestError
HTTP 401AuthenticationError
HTTP 403PermissionDeniedError
HTTP 404NotFoundError
HTTP 409ConflictError
HTTP 422UnprocessableEntityError
HTTP 429RateLimitError
HTTP >= 500InternalServerError

Wiederholungsversuche

Bestimmte Fehler werden standardmäßig automatisch 2-mal wiederholt, mit einem kurzen exponentiellen Backoff.

Verbindungsfehler (zum Beispiel aufgrund eines Netzwerkverbindungsproblems), 408 Request Timeout, 409 Conflict, 429 Rate Limit, >=500 Internal Errors und Timeouts werden standardmäßig alle wiederholt.

Du kannst die Option max_retries verwenden, um dies zu konfigurieren oder zu deaktivieren:

# Konfiguriere den Standard für alle Anfragen:
anthropic = Anthropic::Client.new(
  max_retries: 0 # default is 2
)

# Oder konfiguriere pro Anfrage:
anthropic.messages.create(
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  model: :"claude-opus-4-8",
  request_options: {max_retries: 5}
)

Timeouts

Standardmäßig laufen Anfragen nach 10 Minuten ab. Du kannst die Option timeout verwenden, um dies zu konfigurieren:

# Konfiguriere den Standard für alle Anfragen:
anthropic = Anthropic::Client.new(
  timeout: 20 # 20 seconds (default is 10 minutes)
)

# Oder konfiguriere pro Anfrage:
anthropic.messages.create(
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  model: :"claude-opus-4-8",
  request_options: {timeout: 5}
)

Bei einem Timeout wird Anthropic::Errors::APITimeoutError ausgelöst.

Beachte, dass Anfragen, die ablaufen, standardmäßig wiederholt werden.

Paginierung

List-Methoden in der Claude API sind paginiert.

Diese Bibliothek stellt automatisch paginierende Iteratoren mit jeder List-Antwort bereit, sodass du aufeinanderfolgende Seiten nicht manuell anfordern musst:

anthropic = Anthropic::Client.new
page = anthropic.messages.batches.list(limit: 20)

# Rufe einzelnes Element von der Seite ab.
batch = page.data[0]
puts(batch.id)

# Ruft bei Bedarf automatisch weitere Seiten ab.
page.auto_paging_each do |batch|
  puts(batch.id)
end

Alternativ kannst du die Methoden #next_page? und #next_page für eine feinere Kontrolle bei der Arbeit mit Seiten verwenden.

anthropic = Anthropic::Client.new
page = anthropic.messages.batches.list(limit: 20)
loop do
  page.data&.each { |batch| puts(batch.id) }
  break unless page.next_page?
  page = page.next_page
end

Datei-Uploads

Anfrageparameter, die Datei-Uploads entsprechen, können als Rohinhalte, als Pathname-Instanz, als StringIO oder mehr übergeben werden.

anthropic = Anthropic::Client.new
require "pathname"

# Verwende `Pathname`, um den Dateinamen zu senden und/oder das Laden einer großen Datei in den Speicher zu vermeiden:
file_metadata = anthropic.beta.files.upload(file: Pathname("/path/to/file"))

# Alternativ kannst du Dateiinhalte oder ein `StringIO` direkt übergeben:
file_metadata = anthropic.beta.files.upload(file: File.read("/path/to/file"))

# Oder, um den Dateinamen und/oder den Content-Type zu steuern:
file = Anthropic::FilePart.new(File.read("/path/to/file"), filename: "/path/to/file", content_type: "...")
file_metadata = anthropic.beta.files.upload(file: file)

puts(file_metadata.id)

Beachte, dass du auch einen rohen IO-Deskriptor übergeben kannst, dies deaktiviert jedoch Wiederholungsversuche, da die Bibliothek nicht sicher sein kann, ob der Deskriptor eine Datei oder eine Pipe ist (die nicht zurückgespult werden kann).

Sorbet

Diese Bibliothek bietet umfassende RBI-Definitionen und hat keine Abhängigkeit von sorbet-runtime.

Du kannst typsichere Anfrageparameter wie folgt bereitstellen:

anthropic = Anthropic::Client.new
anthropic.messages.create(
  max_tokens: 1024,
  messages: [Anthropic::MessageParam.new(role: "user", content: "Hello, Claude")],
  model: :"claude-opus-4-8"
)

Oder gleichwertig:

anthropic = Anthropic::Client.new
# Hashes funktionieren, sind aber nicht typsicher:
anthropic.messages.create(
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  model: :"claude-opus-4-8"
)

# Du kannst auch eine vollständige Params-Klasse per Splat übergeben:
params = Anthropic::MessageCreateParams.new(
  max_tokens: 1024,
  messages: [Anthropic::MessageParam.new(role: "user", content: "Hello, Claude")],
  model: :"claude-opus-4-8"
)
anthropic.messages.create(**params)

Enums

Da diese Bibliothek nicht von sorbet-runtime abhängt, kann sie keine T::Enum-Instanzen bereitstellen. Stattdessen bietet das SDK „tagged symbols" (getaggte Symbole), die zur Laufzeit immer ein Primitiv sind:

# :auto
puts(Anthropic::MessageCreateParams::ServiceTier::AUTO)

# Ermittelter Typ: `T.all(Anthropic::MessageCreateParams::ServiceTier, Symbol)`
T.reveal_type(Anthropic::MessageCreateParams::ServiceTier::AUTO)

Enum-Parameter haben einen „gelockerten" Typ, sodass du entweder Enum-Konstanten oder deren Literalwert übergeben kannst:

# Die Verwendung der Enum-Konstanten bewahrt die getaggten Typinformationen:
anthropic.messages.create(
  service_tier: Anthropic::MessageCreateParams::ServiceTier::AUTO,
  # ...
)

# Literalwerte sind ebenfalls zulässig:
anthropic.messages.create(
  service_tier: :auto,
  # ...
)

BaseModel

Alle Parameter- und Antwortobjekte erben von Anthropic::Internal::Type::BaseModel, das mehrere Hilfsfunktionen bietet, darunter:

  1. Alle Felder, einschließlich unbekannter, sind mit der obj[:prop]-Syntax zugänglich und können mit obj => {prop: prop} oder Pattern-Matching-Syntax destrukturiert werden.

  2. Strukturelle Äquivalenz für Gleichheit; wenn zwei API-Aufrufe dieselben Werte zurückgeben, ergibt der Vergleich der Antworten mit == true.

  3. Sowohl Instanzen als auch die Klassen selbst können mit Pretty-Print ausgegeben werden.

  4. Helfer wie #to_h, #deep_to_h, #to_json und #to_yaml.

Nebenläufigkeit und Connection-Pooling

Die Anthropic::Client-Instanzen sind threadsicher, aber nur fork-sicher, wenn keine laufenden HTTP-Anfragen vorhanden sind.

Jede Instanz von Anthropic::Client hat ihren eigenen HTTP-Connection-Pool mit einer Standardgröße von 99. Daher wird empfohlen, den Client in den meisten Fällen einmal pro Anwendung zu erstellen.

Wenn alle verfügbaren Verbindungen aus dem Pool ausgecheckt sind, warten Anfragen darauf, dass eine neue Verbindung verfügbar wird, wobei die Wartezeit in der Warteschlange zum Anfrage-Timeout zählt.

Sofern nicht anders angegeben, haben andere Klassen im SDK keine Locks, die ihre zugrunde liegende Datenstruktur schützen.

Benutzerdefinierte oder undokumentierte Anfragen stellen

Undokumentierte Eigenschaften

Du kannst undokumentierte Parameter an jeden Endpunkt senden und undokumentierte Antworteigenschaften lesen, wie folgt:

Die extra_-Parameter mit demselben Namen überschreiben die dokumentierten Parameter. Stelle aus Sicherheitsgründen sicher, dass diese Methoden nur mit vertrauenswürdigen Eingabedaten verwendet werden.

anthropic = Anthropic::Client.new
value = "example"
message =
  anthropic.messages.create(
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello, Claude"}],
    model: :"claude-opus-4-8",
    request_options: {
      extra_query: {my_query_parameter: value},
      extra_body: {my_body_parameter: value},
      extra_headers: {"my-header": value}
    }
  )

puts(message[:my_undocumented_property])

Undokumentierte Anfrageparameter

Wenn du explizit einen zusätzlichen Parameter senden möchtest, kannst du dies mit extra_query, extra_body und extra_headers unter dem Parameter request_options: beim Stellen einer Anfrage tun, wie in den obigen Beispielen gezeigt.

Undokumentierte Endpunkte

Um Anfragen an undokumentierte Endpunkte zu stellen und dabei die Vorteile von Authentifizierung, Wiederholungsversuchen usw. zu behalten, kannst du Anfragen mit anthropic.request stellen, wie folgt:

response = anthropic.request(
  method: :post,
  path: '/undocumented/endpoint',
  query: {"dog": "woof"},
  headers: {"useful-header": "interesting-value"},
  body: {"hello": "world"}
)

Plattform-Integrationen

Für detaillierte Plattform-Einrichtungsanleitungen mit Codebeispielen siehe:

  • Amazon Bedrock
  • Amazon Bedrock (Legacy)
  • Vertex AI
  • Claude Platform auf AWS

Das Ruby SDK unterstützt die folgenden Plattformen:

  • Bedrock: Anthropic::BedrockMantleClient, oder Anthropic::BedrockClient für den bedrock-runtime-Pfad. Anthropic::BedrockMantleClient erfordert das aws-sdk-core-Gem; Anthropic::BedrockClient erfordert das aws-sdk-bedrockruntime-Gem.
  • Vertex AI: Anthropic::VertexClient. Erfordert das googleauth-Gem.
  • Foundry: Wird derzeit nicht im Ruby SDK unterstützt. Siehe Claude in Microsoft Foundry für unterstützte SDKs.
  • Claude Platform auf AWS: Teil des Haupt-anthropic-Gems (erfordert das aws-sdk-core-Gem). Stellt Anthropic::AWSClient bereit. Übergib an den Konstruktor oder setze die Umgebungsvariable (siehe ). Als Beta verfügbar.

Verwende Anthropic::BedrockMantleClient für neue Projekte; Anthropic::BedrockClient bleibt für bestehende Anwendungen erhalten, die die Bedrock InvokeModel API verwenden.

Semantische Versionierung

Dieses Paket folgt den SemVer-Konventionen. Da sich die Bibliothek in der anfänglichen Entwicklung befindet und eine Hauptversion von 0 hat, können sich APIs jederzeit ändern.

Dieses Paket betrachtet Verbesserungen an den (Nicht-Laufzeit-) *.rbi- und *.rbs-Typdefinitionen als nicht-breaking Änderungen.

Zusätzliche Ressourcen

  • GitHub-Repository
  • YARD-Dokumentation
  • API-Referenz
  • Streaming von Nachrichten

Was this page helpful?

  • Installation
  • Voraussetzungen
  • Verwendung
  • Streaming
  • Streaming-Helfer
  • Input-Schema und Tool-Aufrufe
  • Strukturierte Ausgaben
  • Fehlerbehandlung
  • Wiederholungsversuche
  • Timeouts
  • Paginierung
  • Datei-Uploads
  • Sorbet
  • Enums
  • BaseModel
  • Nebenläufigkeit und Connection-Pooling
  • Benutzerdefinierte oder undokumentierte Anfragen stellen
  • Undokumentierte Eigenschaften
  • Undokumentierte Anfrageparameter
  • Undokumentierte Endpunkte
  • Plattform-Integrationen
  • Semantische Versionierung
  • Zusätzliche Ressourcen
Anderer HTTP-FehlerAPIStatusError
TimeoutAPITimeoutError
NetzwerkfehlerAPIConnectionError
workspace_id:
ANTHROPIC_AWS_WORKSPACE_ID
Workspaces