Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/Agents/Adapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,9 @@ abstract public function getSupportForEmbeddings(): bool;
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
abstract public function embed(string $text): array;
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/Anthropic.php
Original file line number Diff line number Diff line change
Expand Up @@ -467,8 +467,9 @@ public function getSupportForEmbeddings(): bool
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/Deepseek.php
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,9 @@ public function getSupportForEmbeddings(): bool
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/Gemini.php
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,9 @@ public function getSupportForEmbeddings(): bool
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
11 changes: 7 additions & 4 deletions src/Agents/Adapters/Ollama.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,9 @@ public function __construct(
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*
* @throws \Exception
Expand Down Expand Up @@ -84,10 +85,12 @@ public function embed(string $text): array
throw new \Exception($json['error'], $response->getStatusCode());
}

// totalDuration is entire duration including the modelLoadingDuration
return [
'embedding' => $json['embeddings'][0] ?? [],
'total_duration' => $json['total_duration'] ?? null,
'load_duration' => $json['load_duration'] ?? null,
'tokensProcessed' => $json['prompt_eval_count'] ?? null,
'totalDuration' => $json['total_duration'] ?? null,
'modelLoadingDuration' => $json['load_duration'] ?? null,
];
}

Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/OpenAI.php
Original file line number Diff line number Diff line change
Expand Up @@ -424,8 +424,9 @@ public function getSupportForEmbeddings(): bool
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/Perplexity.php
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,9 @@ protected function sanitizeHtmlError(string $html): string
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Adapters/XAI.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,9 @@ protected function formatErrorMessage($json): string
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*/
public function embed(string $text): array
Expand Down
5 changes: 3 additions & 2 deletions src/Agents/Agent.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,9 @@ public function setSchema(Schema $schema): self
* @param string $text
* @return array{
* embedding: array<int, float>,
* total_duration: int|null,
* load_duration: int|null
* tokensProcessed: int|null,
* totalDuration: int|null ,
* modelLoadingDuration: int|null
* }
*
* @throws \Exception
Expand Down
16 changes: 12 additions & 4 deletions tests/Agents/AgentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,12 @@ public function testEmbedReturnsArrayWithEmbeddingAdapter(): void
$result = $agent->embed('Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque neque repudiandae facere sapiente quis eum ipsa eius dignissimos esse labore. Eaque impedit dignissimos atque distinctio error temporibus nam, praesentium magni quia harum amet et nesciunt, quae fugiat, nemo asperiores culpa? Blanditiis voluptate ullam necessitatibus voluptates quaerat vel nam consequuntur neque, reiciendis facilis error, optio molestiae illo impedit, molestias magnam adipisci laboriosam nesciunt distinctio. Harum iure tempora, deleniti libero asperiores quibusdam ipsam error dolorum natus, saepe exercitationem maxime eligendi tenetur sint debitis distinctio eaque facere nobis voluptas non delectus officia blanditiis suscipit in. Architecto maiores ab mollitia beatae ad, corrupti nobis, animi eligendi labore recusandae corporis. Aspernatur repellat ex tempore minus obcaecati laborum consectetur velit officia doloremque! Reiciendis expedita, repudiandae velit consectetur ex voluptatum quae quia nobis dignissimos exercitationem, quam voluptatibus ipsam laboriosam quod. Molestias ex ea minima maiores rerum nulla sit! Impedit, excepturi quod nulla alias quos incidunt, ea est nam autem placeat eaque nobis similique maiores? Optio veniam velit provident nihil non laboriosam, nisi saepe nesciunt quisquam cumque rerum reprehenderit obcaecati beatae expedita sit enim eveniet dolorum itaque labore eligendi cupiditate tenetur atque aut incidunt. Nam distinctio animi commodi dolor maiores repellat nemo molestiae adipisci quae temporibus quos reiciendis odit aperiam quod, alias soluta saepe praesentium tempora eaque expedita delectus blanditiis! Unde consectetur ipsum repellat aliquid impedit et eum, delectus porro ipsa eos expedita, labore, sint consequatur voluptates dolor quis molestiae quo? Labore placeat molestias illum ipsum consequuntur autem minus. Modi, deserunt. Suscipit quasi eaque vitae facilis veritatis, culpa magnam possimus eius enim excepturi quibusdam facere fugiat aliquid dignissimos sequi iusto maxime perferendis distinctio repudiandae doloribus. Ipsam distinctio, nihil error maxime iste eligendi corrupti voluptas animi fuga, incidunt recusandae illum voluptates totam atque, numquam ducimus vero unde quasi aut quis tempora. Excepturi vel a cupiditate similique eveniet, quia nihil. Eaque, natus consequatur. Eveniet incidunt alias cupiditate veritatis ut atque dolore consequatur sapiente saepe veniam? Minus rerum accusamus, ut, molestias quo obcaecati odit libero ipsam voluptatum accusantium totam, fugiat est cupiditate facere labore recusandae aperiam veritatis molestiae provident suscipit! Provident incidunt quae delectus, cupiditate laborum maxime magnam praesentium, nesciunt qui ipsa dolore asperiores tempora! Adipisci harum quae numquam quis architecto, amet ipsum veniam nam pariatur est perferendis, atque natus aspernatur non omnis nostrum porro fugit fugiat. Quisquam, voluptas perferendis! Quos dignissimos esse illum molestiae, animi repudiandae sunt, dolore recusandae doloremque, quibusdam inventore molestias provident. Corporis accusantium necessitatibus deserunt animi pariatur iure possimus! Molestiae sit magnam officia obcaecati. Corrupti culpa nemo ex, optio veniam non illo vel quo dolores deleniti fuga itaque eius quibusdam perspiciatis laudantium delectus nam quas quia enim eaque! Nihil atque a sed harum cumque magni doloremque saepe tempora adipisci, minus quis illum, labore nostrum laborum ipsa. Animi, quisquam. Dolores, blanditiis nihil laborum natus dolorem delectus tempora sit corrupti aliquid ab possimus cumque doloribus sapiente maiores doloremque rem? Magni modi aspernatur officiis omnis quisquam dolores! Dolorum fugiat quae odio voluptates deleniti eveniet voluptatum, ab excepturi porro expedita dolor modi optio molestiae aut molestias deserunt dolorem laudantium. Velit nobis doloribus alias, adipisci quo rerum, eius harum error cumque repellendus tenetur animi in suscipit? Iusto aliquid velit aut nulla, corporis libero impedit. Voluptatem cum voluptas voluptate, eius fugiat quasi quibusdam dignissimos quos quis quae omnis excepturi quod inventore atque, optio placeat soluta nam consequatur? Iusto nisi nobis maxime corporis illo soluta sit eius necessitatibus quidem distinctio saepe quas deleniti quos reiciendis dolorem rem facere magnam, sed, ex eveniet rerum consequuntur! Ipsam ipsum aperiam consequuntur ducimus quaerat omnis assumenda, odit saepe accusantium laboriosam similique? Optio placeat, similique veritatis illo cumque vitae porro rem saepe libero esse quis, nulla animi fugiat cupiditate modi minima ipsa nobis perspiciatis! Aut, quo iure. Velit itaque vero totam pariatur eum iusto obcaecati distinctio voluptas nobis laboriosam similique alias harum doloremque facere ducimus est, quasi cum repudiandae assumenda! Laborum rerum quam quia consequatur, perferendis fugiat dolor corrupti inventore placeat ex autem? Non minima nemo sit deserunt omnis nisi, dolore quo tempore, eos ipsum eum cumque tempora ipsam placeat optio earum nihil expedita vero nobis a. Harum porro, quia magni eum cumque minus, sed quas natus quos odit laborum, officia possimus ea aliquam nobis animi iusto nesciunt! Ipsum laboriosam voluptate, vel ullam dolores, cupiditate magnam inventore consectetur nesciunt velit, similique facere optio. Maxime, aut laudantium. Eaque laboriosam architecto ipsam rerum, nisi, iste quis quidem illo ratione, aspernatur incidunt libero animi aperiam placeat ducimus? Voluptas, ad alias labore cum maxime perferendis quis vitae voluptate, inventore repellat doloremque aspernatur reiciendis expedita rerum impedit cumque? Labore doloribus possimus recusandae quasi hic inventore sit qui consequatur delectus ea quibusdam, veritatis eligendi reprehenderit, eveniet minus blanditiis iusto voluptates voluptatem. Laborum quae repellat, recusandae, soluta vero fugiat ducimus qui adipisci suscipit, doloribus asperiores! Labore odit commodi perferendis voluptas sunt. Suscipit quidem fuga delectus unde sit alias nemo corporis non assumenda id? Saepe iste officia in repellat nulla eum veniam nemo voluptate impedit fugit sed neque magnam voluptatum dolorem minus quis alias, voluptas, quaerat cupiditate voluptates? Minus expedita nisi molestiae inventore dolor quia ea quae optio nemo nostrum corrupti at perspiciatis incidunt est deserunt, maiores rerum neque aut accusamus impedit quibusdam sed libero architecto. Amet perferendis eaque nemo beatae odit eos ea nisi minima asperiores tempora voluptatibus, incidunt est iure exercitationem tenetur. Quis qui recusandae fugiat cumque, magnam vel autem dolorum delectus cum quo a amet, impedit, hic minus adipisci magni minima nemo animi est aliquid! Reiciendis ea nihil doloremque repellat exercitationem sapiente deleniti, provident incidunt, ipsa dolores a maxime! Labore quo sint consectetur error ad aut reiciendis ipsam. Sit id placeat aspernatur libero error quasi. Suscipit voluptatum fugit quia, ab, dignissimos debitis a ea qui fugiat, mollitia deserunt iste? Reprehenderit temporibus rerum debitis repellendus sapiente itaque velit sunt laudantium possimus similique architecto quas facilis ipsum quo blanditiis deleniti voluptatum iure earum exercitationem sint delectus, accusamus a. Aliquid sapiente distinctio odit officiis dolores, facere assumenda quaerat aperiam excepturi ratione recusandae exercitationem illum voluptatem nobis magnam consequatur mollitia, magni amet temporibus illo, voluptatum sed similique! Eos numquam dolores, voluptates perferendis nam quaerat sit placeat excepturi beatae.');
$this->assertIsArray($result);
$this->assertArrayHasKey('embedding', $result);
$this->assertArrayHasKey('total_duration', $result);
$this->assertArrayHasKey('load_duration', $result);
$this->assertArrayHasKey('tokensProcessed', $result);
$this->assertArrayHasKey('totalDuration', $result);
$this->assertArrayHasKey('modelLoadingDuration', $result);
$this->assertGreaterThan(0, $result['modelLoadingDuration']);
$this->assertGreaterThan(0, $result['totalDuration']);
$this->assertGreaterThan(0, $result['tokensProcessed']);
$this->assertIsArray($result['embedding']);
}

Expand All @@ -125,8 +129,12 @@ public function testEmbeddingDimensions(): void
$result = $agent->embed($text);
$this->assertIsArray($result);
$this->assertArrayHasKey('embedding', $result);
$this->assertArrayHasKey('total_duration', $result);
$this->assertArrayHasKey('load_duration', $result);
$this->assertArrayHasKey('tokensProcessed', $result);
$this->assertArrayHasKey('totalDuration', $result);
$this->assertArrayHasKey('modelLoadingDuration', $result);
$this->assertGreaterThan(0, $result['modelLoadingDuration']);
$this->assertGreaterThan(0, $result['totalDuration']);
$this->assertGreaterThan(0, $result['tokensProcessed']);
$this->assertIsArray($result['embedding']);

$embedding = $result['embedding'];
Expand Down