talleu/cohere-php-client

PHP client to interact with Cohere API

v1.0 2025-07-05 20:18 UTC

This package is auto-updated.

Last update: 2025-07-05 20:20:50 UTC


README

PHPStan Packagist Version GitHub

Cohere PHP Client

A PHP client to interact with the Cohereยฎ API, designed to be framework-agnostic, simple to use, and fully compatible with PSR-18.

This package provides an easy and structured way to use Cohere's powerful language models โ€” for embeddings, chat, classification, tokenization, and more โ€” in any PHP project.

Features ๐Ÿ› ๏ธ

  • โœ… Support for Cohere API v1/v2 endpoints (chat, embed, classify, tokenize, etc.)
  • โœ… Compatible with any PSR-18 HTTP Client
  • โœ… File upload and multipart support
  • โœ… Developer-friendly DTOs and response builders
  • โœ… Easily extendable with your own endpoints

Requirements โš™๏ธ

Installation ๐Ÿ“

Install the library via Composer:

composer require talleu/cohere-php-client

Then install your preferred HTTP client

Using Symfony HttpClient:

composer require symfony/http-client

Using Guzzle:

composer require guzzlehttp/guzzle

Or another client implementing PSR18

Basic Usage ๐ŸŽฏ

Minimal example

use Talleu\CohereClient\Cohere;

$client = Cohere::client('your-api-key'); 

// Call the embed endpoint
$embeds = $client->embed()->create([
      'Cohere is amazing!',
      'Letโ€™s try embedding some text.'
  ]);

var_dump($embeds);

Or to simple chats with LLM

    $chat = $client->chat()->create([
        [
            'role' => 'user',
            'content' => 'how are you ?'
        ]
    ]);

Authentication ๐Ÿ”

You can pass the API key directly in the http client:

Cohere::client('your-api-key');

Or use an environment variable (recommended):

#.env
COHERE_API_KEY=your-api-key

Available Endpoints ๐Ÿ“š

The following endpoints are supported:

Endpoint Class Description
v2/embed Embed Generate embeddings from input text
v2/chat Chat Perform conversational chat with a LLM
v1/classify Classify Text classification based on custom labels
v1/tokenize Tokenize Token-level breakdown of input text
v1/detokenize Detokenize De-tokenify tokens to text
v1/connectors Connector Cohere connectors
v1/embed-jobs EmbedJob Async embed jobs
v2/rerank Rerank Retrieve Cohere available models
v1/models Model Produces an ordered array with text
v1/datasets Dataset Create a dataset by uploading a file, retrieve datasets
v1/finetuning FineTuning Trains, deploy, list datasets

You can access them via:

$client->embed();
$client->chat();
$client->tokenize();
$client->detokenize();
$client->classify();
$client->rerank();
$client->dataset();
$client->fineTuning();
$client->model();
$client->embedJob();
$client->connector();
// etc.

Then you can use it simple :

$connector = $client->connector()->create($name, $url, ['model' => 'command-a-03-2025']);
$connector = $client->connector()->get($id);
$connector = $client->connector()->list();

Each endpoint returns a strongly typed DTO with the result of the API call.

To send a request without using provided resources, you can use directly the CohereClient sendRequesst() method

$chat = Cohere::client()->sendRequest('GET', '/v2/chat', $body);

๐Ÿ“š Documentation by endpoints

Documentation ๐Ÿ“š

Contributing ๐Ÿค

PRs are welcome! If youโ€™d like to add support for more endpoints, improve tests or add features, feel free to open an issue or submit a PR.