• Сообщения
  • Управляемые агенты
  • Администрирование
Search...
⌘K
CLI, SDK и библиотеки
Обзор
ant CLI
Быстрый стартВарианты аутентификацииИспользование CLIСкрипты и автоматизация
Клиентские SDK
Промежуточное ПОPythonTypeScriptC#GoJavaPHPRuby
Библиотеки и интеграции
Apple Foundation ModelsСовместимость с 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 и библиотеки/Клиентские SDK

PHP SDK

Установка и настройка Anthropic PHP SDK с объектами-значениями и паттернами построителей

Библиотека Anthropic для PHP предоставляет удобный доступ к Anthropic REST API из любого приложения на PHP 8.1.0+.

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-клиента, который возвращает тело ответа инкрементально. Когда в качестве PSR-18-клиента обнаружен Guzzle, SDK автоматически настраивает его для потоковой передачи. При использовании буферизующего клиента цикл foreach выдаёт все события сразу по завершении ответа, а не инкрементально; если вы наблюдаете такой симптом, установите Guzzle или передайте PSR-18-клиент с поддержкой потоковой передачи через опцию запроса streamingTransporter:

$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

Повторные попытки

Определённые ошибки по умолчанию автоматически повторяются два раза с короткой экспоненциальной задержкой.

Ошибки соединения (например, из-за проблем с сетевым подключением), 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'],
  ),
);

Недокументированные параметры запроса

Если вы хотите явно отправить дополнительный параметр, вы можете сделать это с помощью опций extraQueryParams, extraBodyParams и extraHeaders в RequestOptions::with() при выполнении запроса, как показано в предыдущем примере.

Недокументированные конечные точки

Чтобы выполнять запросы к недокументированным конечным точкам, сохраняя при этом преимущества аутентификации, повторных попыток и других функций клиента, вы можете использовать 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
  • Claude Platform на AWS

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().
  • Claude Platform на AWS: Anthropic\Aws\Client (требует aws/aws-sdk-php в качестве мягкой зависимости). Используйте new Anthropic\Aws\Client(workspaceId: ...) или установите . Доступно в бета-версии.

Используйте MantleClient для новых проектов; Anthropic\Bedrock\Client остаётся для существующих приложений, использующих Bedrock InvokeModel API.

Семантическое версионирование

Этот пакет следует соглашениям SemVer. Поскольку библиотека находится на начальном этапе разработки и имеет мажорную версию 0, API могут измениться в любой момент.

Этот пакет рассматривает улучшения определений типов PHPDoc (не влияющих на время выполнения) как изменения, не нарушающие обратную совместимость.

Дополнительные ресурсы

  • Репозиторий на GitHub
  • Packagist
  • Справочник по API
  • Потоковая передача сообщений

Was this page helpful?

  • Установка
  • Требования
  • Использование
  • Объекты-значения
  • Потоковая передача
  • Обработка ошибок
  • Повторные попытки
  • Пагинация
  • Расширенное использование
  • Недокументированные свойства
  • Недокументированные параметры запроса
  • Недокументированные конечные точки
  • Интеграции с платформами
  • Семантическое версионирование
  • Дополнительные ресурсы
Другая ошибка HTTPAPIStatusException
Тайм-аутAPITimeoutException
Сетевая ошибкаAPIConnectionException
ANTHROPIC_AWS_WORKSPACE_ID