patryk-samulewicz / open-php-router
A modern PHP package for OpenRouter API integration
v1.0.5
2025-07-14 06:29 UTC
Requires
- php: ^8.2
- ext-curl: *
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.0
README
Nowoczesna paczka PHP do integracji z OpenRouter API. Umożliwia łatwe pobieranie listy modeli, wysyłanie zapytań chat oraz sprawdzanie kosztów generowania.
Instalacja
composer require open-php-router/open-php-router
Konfiguracja
use OpenPhpRouter\OpenRouterClient; $client = new OpenRouterClient([ 'api_key' => 'your_openrouter_api_key', 'timeout' => 30, // opcjonalnie 'referer' => 'https://your-app.com', // opcjonalnie 'title' => 'your-app-name', // opcjonalnie ]);
Pobieranie listy modeli
use OpenPhpRouter\OpenRouterClient; $client = new OpenRouterClient(['api_key' => 'your_api_key']); $models = $client->listModels(); foreach ($models as $model) { echo sprintf( "%s (%s) - Prompt: $%.4f/1K, Completion: $%.4f/1K\n", $model->getName(), $model->getProvider(), $model->getPromptPricePer1K() ?? 0, $model->getCompletionPricePer1K() ?? 0 ); }
Wysyłanie zapytania chat
use OpenPhpRouter\OpenRouterClient; use OpenPhpRouter\DTO\ChatData; use OpenPhpRouter\DTO\MessageData; use OpenPhpRouter\Enum\RoleType; $client = new OpenRouterClient(['api_key' => 'your_api_key']); $chatData = new ChatData( messages: [ MessageData::createUserMessage('Hello, who are you?'), ], model: 'mistralai/mistral-7b-instruct:free', maxTokens: 100, temperature: 0.7, ); $response = $client->chat($chatData); echo $response->getContent();
Sprawdzanie kosztów generowania
Metoda 1: Pobieranie kosztów przez ID generowania
// Po wykonaniu zapytania chat $response = $client->chat($chatData); $generationId = $response->getId(); // Pobierz szczegółowe informacje o kosztach $costs = $client->getRequestCosts($generationId); echo sprintf( "Prompt tokens: %d (%.4f USD)\n", $costs->getPromptTokens(), $costs->getPromptCost() ); echo sprintf( "Completion tokens: %d (%.4f USD)\n", $costs->getCompletionTokens(), $costs->getCompletionCost() ); echo sprintf( "Total cost: %.4f USD\n", $costs->getTotalCost() ); echo sprintf( "Cost per 1K prompt tokens: %.4f USD\n", $costs->getPromptCostPer1K() ); echo sprintf( "Cost per 1K completion tokens: %.4f USD\n", $costs->getCompletionCostPer1K() );
Metoda 2: Pobieranie kosztów bezpośrednio z odpowiedzi
$response = $client->chat($chatData); // Pobierz koszty bezpośrednio z odpowiedzi $costs = $client->getChatRequestCosts($response); echo sprintf( "ID generowania: %s\n", $costs->getId() ); echo sprintf( "Model: %s\n", $costs->getModel() ); echo sprintf( "Total cost: %.4f %s\n", $costs->getTotalCost(), $costs->getCurrency() );
Przykład z system message
$chatData = new ChatData( messages: [ MessageData::createSystemMessage('You are a helpful assistant.'), MessageData::createUserMessage('What is the capital of Poland?'), ], model: 'mistralai/mistral-7b-instruct:free', maxTokens: 50, ); $response = $client->chat($chatData); echo $response->getContent();
Dostępne metody
OpenRouterClient
listModels()
- Pobiera listę dostępnych modeli z cenamichat(ChatData $chatData)
- Wysyła zapytanie chat i zwraca odpowiedźgetGeneration(string $generationId)
- Pobiera surowe dane o generowaniugetRequestCosts(string $generationId)
- Pobiera koszty dla konkretnego requestagetChatRequestCosts(ChatResponseData $response)
- Pobiera koszty bezpośrednio z odpowiedzi chat
GenerationCostData
getId()
- ID generowaniagetModel()
- Nazwa modelugetPromptTokens()
- Liczba tokenów promptgetCompletionTokens()
- Liczba tokenów completiongetTotalTokens()
- Całkowita liczba tokenówgetPromptCost()
- Koszt promptgetCompletionCost()
- Koszt completiongetTotalCost()
- Całkowity kosztgetCurrency()
- Waluta (domyślnie USD)getPromptCostPer1K()
- Koszt na 1K tokenów promptgetCompletionCostPer1K()
- Koszt na 1K tokenów completion
Obsługa błędów
use OpenPhpRouter\Exception\OpenRouterException; try { $models = $client->listModels(); } catch (OpenRouterException $e) { echo 'Błąd OpenRouter: ' . $e->getMessage(); }
Wymagania
- PHP 8.2+
- cURL extension (zazwyczaj wbudowane w PHP)
Licencja
MIT License