• 訊息
  • 託管代理
  • 管理
Search...
⌘K
CLI、SDK 與函式庫
概覽
ant CLI
快速入門驗證選項使用 CLI指令碼與自動化
用戶端 SDK
中介軟體PythonTypeScriptC#GoJavaPHPRuby
函式庫與整合
Apple Foundation ModelsOpenAI 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 與函式庫/用戶端 SDK

PHP SDK

使用值物件和建構器模式安裝與設定 Anthropic PHP SDK

Anthropic PHP 函式庫可讓您從任何 PHP 8.1.0+ 應用程式方便地存取 Anthropic REST API。

PHP SDK 目前處於測試版階段。API 可能會在不同版本之間有所變更。

如需包含程式碼範例的 API 功能文件,請參閱 API 參考。本頁面涵蓋 PHP 專屬的 SDK 功能與設定。

安裝

此 SDK 使用 PSR-18 進行 HTTP 通訊,並會自動探索任何已安裝的 PSR-18 用戶端。建議使用 Guzzle,因為 SDK 會為其設定串流功能,無需額外設定:

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

需求

PHP 8.1.0 或更高版本。

使用方式

此函式庫使用具名參數來指定選用引數。具有預設值的參數必須以名稱設定。

$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;

如需了解包含「Workload Identity Federation」(工作負載身分聯合)在內的驗證選項,請參閱驗證。

值物件

建議使用靜態 with 建構函式 Base64ImageSource::with(data: "U3RhaW5sZXNzIHJvY2tz", ...) 搭配具名參數來初始化值物件。

不過,也提供建構器方式 (new Base64ImageSource)->withData("U3RhaW5sZXNzIHJvY2tz")。

串流

此 SDK 支援使用「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;
}

串流需要能夠逐步傳回回應主體的 HTTP 用戶端。當 Guzzle 是探索到的 PSR-18 用戶端時,SDK 會自動為其設定串流功能。若使用緩衝型用戶端,foreach 迴圈會在回應完成時一次產出所有事件,而非逐步產出;如果您觀察到此現象,請安裝 Guzzle,或透過 streamingTransporter 請求選項提供支援串流的 PSR-18 用戶端:

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

錯誤處理

當函式庫無法連線至 API,或 API 傳回非成功狀態碼(即 4xx 或 5xx 回應)時,會擲回 Anthropic\Core\Exceptions\APIException 的子類別:

<?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();
}

錯誤代碼如下:

原因錯誤類型
HTTP 400BadRequestException
HTTP 401AuthenticationException
HTTP 403PermissionDeniedException
HTTP 404NotFoundException
HTTP 409ConflictException
HTTP 422UnprocessableEntityException
HTTP 429RateLimitException
HTTP >= 500InternalServerException
其他 HTTP 錯誤APIStatusException
逾時APITimeoutException
網路錯誤APIConnectionException

重試

某些錯誤預設會自動重試兩次,並採用短暫的指數退避策略。

連線錯誤(例如因網路連線問題所致)、408 Request Timeout、409 Conflict、429 Rate Limit、>=500 內部錯誤以及逾時,預設都會重試。

您可以使用 maxRetries 選項來設定或停用此功能:

use Anthropic\RequestOptions;
// ...
// 設定所有請求的預設值:
$client = new Client(requestOptions: RequestOptions::with(maxRetries: 0));

// 或者,針對個別請求進行設定:
$result = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
  requestOptions: RequestOptions::with(maxRetries: 5),
);

分頁

Claude API 中的列表方法採用分頁機制。

此函式庫為每個列表回應提供自動分頁的迭代器,因此您不必手動請求後續頁面:

$client = new Client();

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

// 從目前頁面擷取項目
foreach ($page->getItems() as $item) {
  echo $item->id, PHP_EOL;
}
// 發出額外的網路請求,以擷取目前頁面及其後所有頁面的項目
foreach ($page->pagingEachItem() as $item) {
  echo $item->id, PHP_EOL;
}

進階用法

未記載的屬性

您可以將未記載的參數傳送至任何端點,並讀取未記載的回應屬性,如下所示:

同名的 extra* 參數會覆寫已記載的參數。

<?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'],
  ),
);

未記載的請求參數

如果您想明確傳送額外參數,可以在發出請求時,於 RequestOptions::with() 下使用 extraQueryParams、extraBodyParams 和 extraHeaders 選項,如前述範例所示。

未記載的端點

若要向未記載的端點發出請求,同時保留驗證、重試及其他用戶端功能的優勢,您可以使用 client->request 發出請求,如下所示:

$client = new Client();

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

平台整合

如需包含程式碼範例的詳細平台設定指南,請參閱:

  • Amazon Bedrock
  • Amazon Bedrock(舊版)
  • Vertex AI
  • Microsoft Foundry
  • AWS 上的 Claude Platform

PHP SDK 支援下列平台:

  • Bedrock: Anthropic\Bedrock\MantleClient。使用 new MantleClient(awsRegion: ...)。
  • Bedrock(舊版): Anthropic\Bedrock\Client。使用 ::fromEnvironment() 或 ::withCredentials()。
  • Vertex AI: Anthropic\Vertex\Client。使用 ::fromEnvironment()。
  • Foundry: Anthropic\Foundry\Client。使用 ::withCredentials()。
  • AWS 上的 Claude Platform: Anthropic\Aws\Client(需要 aws/aws-sdk-php 作為軟性相依套件)。使用 new Anthropic\Aws\Client(workspaceId: ...) 或設定 ANTHROPIC_AWS_WORKSPACE_ID。目前為測試版。

新專案請使用 MantleClient;Anthropic\Bedrock\Client 保留供使用 Bedrock InvokeModel API 的現有應用程式使用。

語意化版本控制

此套件遵循 SemVer 慣例。由於此函式庫處於初期開發階段,主版本號為 0,API 可能隨時變更。

此套件將對(非執行期)PHPDoc 型別定義的改進視為非破壞性變更。

其他資源

  • GitHub 儲存庫
  • Packagist
  • API 參考
  • 串流訊息

Was this page helpful?

  • 安裝
  • 需求
  • 使用方式
  • 值物件
  • 串流
  • 錯誤處理
  • 重試
  • 分頁
  • 進階用法
  • 未記載的屬性
  • 未記載的請求參數
  • 未記載的端點
  • 平台整合
  • 語意化版本控制
  • 其他資源