• Messages
  • Agents gérés
  • Administration
Search...
⌘K
CLI, SDK et bibliothèques
Aperçu
CLI ant
Démarrage rapideOptions d'authentificationUtilisation de la CLIScripts et automatisation
SDK clients
MiddlewarePythonTypeScriptC#GoJavaPHPRuby
Bibliothèques et intégrations
Apple Foundation ModelsCompatibilité avec le SDK OpenAI
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 et bibliothèques/SDK clients

SDK PHP

Installez et configurez le SDK PHP d'Anthropic avec des objets de valeur et des patterns de builder

La bibliothèque PHP d'Anthropic offre un accès pratique à l'API REST d'Anthropic depuis n'importe quelle application PHP 8.1.0+.

Le SDK PHP est actuellement en version bêta. Les API peuvent changer entre les versions.

Pour la documentation des fonctionnalités de l'API avec des exemples de code, consultez la référence de l'API. Cette page couvre les fonctionnalités et la configuration du SDK spécifiques à PHP.

Installation

Le SDK utilise PSR-18 pour HTTP et détecte automatiquement tout client PSR-18 installé. Guzzle est recommandé car le SDK le configure pour le streaming sans configuration supplémentaire :

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

Prérequis

PHP 8.1.0 ou version supérieure.

Utilisation

Cette bibliothèque utilise des paramètres nommés pour spécifier les arguments optionnels. Les paramètres ayant une valeur par défaut doivent être définis par leur nom.

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

Pour les options d'authentification, y compris la « Workload Identity Federation » (fédération d'identité de charge de travail), consultez Authentification.

Objets de valeur

Il est recommandé d'utiliser le constructeur statique with, par exemple Base64ImageSource::with(data: "U3RhaW5sZXNzIHJvY2tz", ...), et des paramètres nommés pour initialiser les objets de valeur.

Cependant, des builders sont également fournis : (new Base64ImageSource)->withData("U3RhaW5sZXNzIHJvY2tz").

Streaming

Le SDK prend en charge le streaming des réponses à l'aide des « Server-Sent Events » (événements envoyés par le serveur), ou 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;
}

Le streaming nécessite un client HTTP qui renvoie le corps de la réponse de manière incrémentale. Lorsque Guzzle est le client PSR-18 détecté, le SDK le configure automatiquement pour le streaming. Avec un client qui met en mémoire tampon, la boucle foreach produit tous les événements en une seule fois lorsque la réponse est complète, au lieu de les produire de manière incrémentale ; si vous observez ce symptôme, installez Guzzle ou fournissez un client PSR-18 compatible avec le streaming via l'option de requête streamingTransporter :

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

Gestion des erreurs

Lorsque la bibliothèque ne parvient pas à se connecter à l'API, ou si l'API renvoie un code d'état autre qu'un succès (c'est-à-dire une réponse 4xx ou 5xx), une sous-classe de Anthropic\Core\Exceptions\APIException est levée :

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

Les codes d'erreur sont les suivants :

CauseType d'erreur
HTTP 400BadRequestException
HTTP 401AuthenticationException
HTTP 403PermissionDeniedException
HTTP 404NotFoundException
HTTP 409ConflictException
HTTP 422UnprocessableEntityException
HTTP 429RateLimitException
HTTP >= 500InternalServerException
Autre erreur HTTPAPIStatusException
Délai d'expirationAPITimeoutException
Erreur réseauAPIConnectionException

Nouvelles tentatives

Certaines erreurs font automatiquement l'objet de deux nouvelles tentatives par défaut, avec un court délai exponentiel.

Les erreurs de connexion (par exemple, en raison d'un problème de connectivité réseau), 408 Request Timeout, 409 Conflict, 429 Rate Limit, les erreurs internes >=500 et les délais d'expiration font tous l'objet de nouvelles tentatives par défaut.

Vous pouvez utiliser l'option maxRetries pour configurer ou désactiver ce comportement :

use Anthropic\RequestOptions;
// ...
// Configurez la valeur par défaut pour toutes les requêtes :
$client = new Client(requestOptions: RequestOptions::with(maxRetries: 0));

// Ou configurez par requête :
$result = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-4-8',
  requestOptions: RequestOptions::with(maxRetries: 5),
);

Pagination

Les méthodes de liste dans l'API Claude sont paginées.

Cette bibliothèque fournit des itérateurs à pagination automatique avec chaque réponse de liste, de sorte que vous n'avez pas à demander manuellement les pages successives :

$client = new Client();

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

// récupère les éléments de la page actuelle
foreach ($page->getItems() as $item) {
  echo $item->id, PHP_EOL;
}
// effectue des requêtes réseau supplémentaires pour récupérer les éléments de toutes les pages, y compris la page actuelle et les suivantes
foreach ($page->pagingEachItem() as $item) {
  echo $item->id, PHP_EOL;
}

Utilisation avancée

Propriétés non documentées

Vous pouvez envoyer des paramètres non documentés à n'importe quel point de terminaison et lire des propriétés de réponse non documentées, comme suit :

Les paramètres extra* du même nom remplacent les paramètres documentés.

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

Paramètres de requête non documentés

Si vous souhaitez envoyer explicitement un paramètre supplémentaire, vous pouvez le faire avec les options extraQueryParams, extraBodyParams et extraHeaders sous RequestOptions::with() lors d'une requête, comme illustré dans l'exemple précédent.

Points de terminaison non documentés

Pour effectuer des requêtes vers des points de terminaison non documentés tout en conservant les avantages de l'authentification, des nouvelles tentatives et des autres fonctionnalités du client, vous pouvez effectuer des requêtes à l'aide de client->request, comme suit :

$client = new Client();

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

Intégrations de plateformes

Pour des guides détaillés de configuration de plateforme avec des exemples de code, consultez :

  • Amazon Bedrock
  • Amazon Bedrock (ancienne version)
  • Vertex AI
  • Microsoft Foundry
  • Claude Platform sur AWS

Le SDK PHP prend en charge les plateformes suivantes :

  • Bedrock : Anthropic\Bedrock\MantleClient. Utilisez new MantleClient(awsRegion: ...).
  • Bedrock (ancienne version) : Anthropic\Bedrock\Client. Utilisez ::fromEnvironment() ou ::withCredentials().
  • Vertex AI : Anthropic\Vertex\Client. Utilisez ::fromEnvironment().
  • Foundry : Anthropic\Foundry\Client. Utilisez ::withCredentials().
  • Claude Platform sur AWS : Anthropic\Aws\Client (nécessite aws/aws-sdk-php comme dépendance souple). Utilisez new Anthropic\Aws\Client(workspaceId: ...) ou définissez ANTHROPIC_AWS_WORKSPACE_ID. Disponible en version bêta.

Utilisez MantleClient pour les nouveaux projets ; Anthropic\Bedrock\Client reste disponible pour les applications existantes utilisant l'API InvokeModel de Bedrock.

Versionnement sémantique

Ce package suit les conventions SemVer. Comme la bibliothèque est en développement initial et possède une version majeure 0, les API peuvent changer à tout moment.

Ce package considère les améliorations apportées aux définitions de types PHPDoc (hors exécution) comme des changements non cassants.

Ressources supplémentaires

  • Dépôt GitHub
  • Packagist
  • Référence de l'API
  • Messages en streaming

Was this page helpful?

  • Installation
  • Prérequis
  • Utilisation
  • Objets de valeur
  • Streaming
  • Gestion des erreurs
  • Nouvelles tentatives
  • Pagination
  • Utilisation avancée
  • Propriétés non documentées
  • Paramètres de requête non documentés
  • Points de terminaison non documentés
  • Intégrations de plateformes
  • Versionnement sémantique
  • Ressources supplémentaires