• Pesan
  • Managed Agents
  • Admin
Search...
⌘K
CLI, SDK, dan pustaka
Ikhtisar
ant CLI
Mulai cepatOpsi autentikasiMenggunakan CLIScripting dan otomatisasi
SDK Klien
MiddlewarePythonTypeScriptC#GoJavaPHPRuby
Pustaka dan integrasi
Apple Foundation ModelsKompatibilitas OpenAI SDK
Log in
PHP
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, SDK, dan pustaka/SDK Klien

PHP SDK

Instal dan konfigurasikan Anthropic PHP SDK dengan value object dan pola builder

Pustaka Anthropic PHP menyediakan akses yang mudah ke Anthropic REST API dari aplikasi PHP 8.1.0+ apa pun.

PHP SDK saat ini dalam tahap beta. API dapat berubah antar versi.

Untuk dokumentasi fitur API dengan contoh kode, lihat referensi API. Halaman ini membahas fitur dan konfigurasi SDK yang spesifik untuk PHP.

Instalasi

SDK ini menggunakan PSR-18 untuk HTTP dan secara otomatis mendeteksi klien PSR-18 apa pun yang terinstal. Guzzle direkomendasikan karena SDK mengonfigurasinya untuk streaming tanpa pengaturan tambahan:

composer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7"

Persyaratan

PHP 8.1.0 atau lebih tinggi.

Penggunaan

Pustaka ini menggunakan "named parameters" (parameter bernama) untuk menentukan argumen opsional. Parameter dengan nilai default harus ditetapkan berdasarkan nama.

$client = new Client();

$message = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
);

echo $message->content[0]->text;

Untuk opsi autentikasi termasuk Workload Identity Federation, lihat Autentikasi.

Value object

Disarankan untuk menggunakan konstruktor statis with seperti Base64ImageSource::with(data: "U3RhaW5sZXNzIHJvY2tz", ...) dan parameter bernama untuk menginisialisasi value object.

Namun, builder juga disediakan (new Base64ImageSource)->withData("U3RhaW5sZXNzIHJvY2tz").

Streaming

SDK menyediakan dukungan untuk respons streaming menggunakan Server-Sent Events (SSE).

$client = new Client();

$stream = $client->messages->createStream(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
);

foreach ($stream as $event) {
  echo $event->type . PHP_EOL;
}

Streaming memerlukan klien HTTP yang mengembalikan body respons secara bertahap. Ketika Guzzle adalah klien PSR-18 yang terdeteksi, SDK mengonfigurasinya untuk streaming secara otomatis. Dengan klien yang melakukan buffering, loop foreach akan menghasilkan semua event sekaligus ketika respons selesai, alih-alih secara bertahap; jika Anda mengamati gejala tersebut, instal Guzzle atau sediakan klien PSR-18 yang mendukung streaming melalui opsi permintaan streamingTransporter:

$client = new Anthropic\Client(
  requestOptions: Anthropic\RequestOptions::with(streamingTransporter: $myStreamingClient),
);

Penanganan error

Ketika pustaka tidak dapat terhubung ke API, atau jika API mengembalikan kode status non-sukses (yaitu, respons 4xx atau 5xx), subkelas dari Anthropic\Core\Exceptions\APIException akan dilemparkan:

<?php
// ...
use Anthropic\Core\Exceptions\APIConnectionException;
use Anthropic\Core\Exceptions\APIStatusException;
use Anthropic\Core\Exceptions\RateLimitException;
// ...
try {
  $message = $client->messages->create(
    maxTokens: 1024,
    messages: [['role' => 'user', 'content' => 'Hello, Claude']],
    model: 'claude-opus-4-8',
  );
} catch (APIConnectionException $e) {
  echo "The server could not be reached", PHP_EOL;
  echo $e->getPrevious()?->getMessage(), PHP_EOL;
} catch (RateLimitException $_) {
  echo "A 429 status code was received; we should back off a bit.", PHP_EOL;
} catch (APIStatusException $e) {
  echo "Another non-200-range status code was received", PHP_EOL;
  echo $e->getMessage();
}

Kode error adalah sebagai berikut:

PenyebabTipe Error
HTTP 400BadRequestException
HTTP 401AuthenticationException
HTTP 403PermissionDeniedException
HTTP 404NotFoundException
HTTP 409ConflictException
HTTP 422UnprocessableEntityException
HTTP 429RateLimitException
HTTP >= 500InternalServerException
Error HTTP lainnyaAPIStatusException
TimeoutAPITimeoutException
Error jaringanAPIConnectionException

Percobaan ulang

Error tertentu secara otomatis dicoba ulang dua kali secara default, dengan exponential backoff singkat.

Error koneksi (misalnya, karena masalah konektivitas jaringan), 408 Request Timeout, 409 Conflict, 429 Rate Limit, error Internal >=500, dan timeout semuanya dicoba ulang secara default.

Anda dapat menggunakan opsi maxRetries untuk mengonfigurasi atau menonaktifkan ini:

use Anthropic\RequestOptions;
// ...
// Konfigurasikan default untuk semua permintaan:
$client = new Client(requestOptions: RequestOptions::with(maxRetries: 0));

// Atau, konfigurasikan per permintaan:
$result = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
  requestOptions: RequestOptions::with(maxRetries: 5),
);

Paginasi

Metode list di Claude API menggunakan paginasi.

Pustaka ini menyediakan iterator dengan paginasi otomatis pada setiap respons list, sehingga Anda tidak perlu meminta halaman berikutnya secara manual:

$client = new Client();

$page = $client->beta->messages->batches->list(limit: 20);

// ambil item dari halaman saat ini
foreach ($page->getItems() as $item) {
  echo $item->id, PHP_EOL;
}
// buat permintaan jaringan tambahan untuk mengambil item dari semua halaman, termasuk dan setelah halaman saat ini
foreach ($page->pagingEachItem() as $item) {
  echo $item->id, PHP_EOL;
}

Penggunaan lanjutan

Properti yang tidak terdokumentasi

Anda dapat mengirim parameter yang tidak terdokumentasi ke endpoint mana pun, dan membaca properti respons yang tidak terdokumentasi, sebagai berikut:

Parameter extra* dengan nama yang sama akan menimpa parameter yang terdokumentasi.

<?php
// ...
use Anthropic\RequestOptions;
// ...
$message = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
  requestOptions: RequestOptions::with(
    extraQueryParams: ['my_query_parameter' => 'value'],
    extraBodyParams: ['my_body_parameter' => 'value'],
    extraHeaders: ['my-header' => 'value'],
  ),
);

Parameter permintaan yang tidak terdokumentasi

Jika Anda ingin secara eksplisit mengirim parameter tambahan, Anda dapat melakukannya dengan opsi extraQueryParams, extraBodyParams, dan extraHeaders di bawah RequestOptions::with() saat membuat permintaan, seperti yang terlihat pada contoh sebelumnya.

Endpoint yang tidak terdokumentasi

Untuk membuat permintaan ke endpoint yang tidak terdokumentasi sambil tetap mendapatkan manfaat autentikasi, percobaan ulang, dan fitur klien lainnya, Anda dapat membuat permintaan menggunakan client->request, sebagai berikut:

$client = new Client();

$response = $client->request(
  method: "post",
  path: '/undocumented/endpoint',
  query: ['dog' => 'woof'],
  headers: ['useful-header' => 'interesting-value'],
  body: ['hello' => 'world']
);

Integrasi platform

Untuk panduan pengaturan platform yang terperinci dengan contoh kode, lihat:

  • Amazon Bedrock
  • Amazon Bedrock (legacy)
  • Vertex AI
  • Microsoft Foundry
  • Claude Platform di AWS

PHP SDK mendukung platform berikut:

  • Bedrock: Anthropic\Bedrock\MantleClient. Gunakan new MantleClient(awsRegion: ...).
  • Bedrock (legacy): Anthropic\Bedrock\Client. Gunakan ::fromEnvironment() atau ::withCredentials().
  • Vertex AI: Anthropic\Vertex\Client. Gunakan ::fromEnvironment().
  • Foundry: Anthropic\Foundry\Client. Gunakan ::withCredentials().
  • Claude Platform di AWS: Anthropic\Aws\Client (memerlukan aws/aws-sdk-php sebagai soft dependency). Gunakan new Anthropic\Aws\Client(workspaceId: ...) atau atur ANTHROPIC_AWS_WORKSPACE_ID. Tersedia dalam versi beta.

Gunakan MantleClient untuk proyek baru; Anthropic\Bedrock\Client tetap tersedia untuk aplikasi yang sudah ada yang menggunakan Bedrock InvokeModel API.

Semantic versioning

Paket ini mengikuti konvensi SemVer. Karena pustaka ini masih dalam pengembangan awal dan memiliki versi mayor 0, API dapat berubah kapan saja.

Paket ini menganggap perbaikan pada definisi tipe PHPDoc (non-runtime) sebagai perubahan yang tidak bersifat breaking.

Sumber daya tambahan

  • Repositori GitHub
  • Packagist
  • Referensi API
  • Streaming Messages

Was this page helpful?

  • Instalasi
  • Persyaratan
  • Penggunaan
  • Value object
  • Streaming
  • Penanganan error
  • Percobaan ulang
  • Paginasi
  • Penggunaan lanjutan
  • Properti yang tidak terdokumentasi
  • Parameter permintaan yang tidak terdokumentasi
  • Endpoint yang tidak terdokumentasi
  • Integrasi platform
  • Semantic versioning
  • Sumber daya tambahan