Repository navigation
v1.2.0
Added
Embeddings API Support
- EmbeddingsResource: New resource for the
/v1/embeddingsendpointcreate()method supporting single string or batch array input- Optional
encodingFormatanddimensionsparameters
- EmbeddingsResponse: Response class with helper methods
getEmbedding()for single-input conveniencegetEmbeddings()for all vectorscount()for number of embeddings
- Embedding: Individual embedding with
index,embeddingarray, and dimensions helper - EmbeddingsUsage: Token usage tracking for embeddings
- embeddings.php: Example demonstrating basic usage, batch embeddings, and similarity comparison
Deferred Completions
- DeferredCompletion: Support for long-running requests with polling
- Status tracking: PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED
- Helper methods:
isPending(),isCompleted(),isFailed(),isFinished() getResult()andgetError()for accessing completion data
- ChatResource new methods:
createDeferred(): Initiate a deferred completion requestretrieveDeferred(): Poll for completion statusawaitDeferred(): Convenient wait-with-timeout functionality
- DeferredCompletionException: Exception for deferred completion failures
Concurrent Request Batching
- ConcurrentRequests: Utility for executing multiple API requests
run(): Execute callbacks and returnRequestResultarrayall(): Execute all callbacks, throw on any failuresettled(): Execute all and return only successful results- Configurable concurrency limits
- RequestResult: Result wrapper with functional programming patterns
isSuccess(),isFailure(),getValue(),getError()map(),flatMap(),getValueOrDefault()
- BatchException: Exception with detailed failure information
Fluent Request Builder
- ChatRequestBuilder: Builder pattern for complex chat requests
- All chat parameters:
model(),temperature(),maxTokens(),seed(), etc. - Message helpers:
systemPrompt(),userMessage(),assistantMessage() - Tool support:
withTool(),withTools(),toolChoice(),parallelToolCalls() - Response formats:
jsonResponse(),jsonSchema(),responseFormat() build()to get Chat instance,send()to execute immediatelyreset()for builder reuse
- All chat parameters:
PSR-15 Style Middleware System
- MiddlewareInterface: Interface for request/response interception
- MiddlewareStack: Stack manager with
push(),prepend(),remove(),handle() - LoggingMiddleware: Request/response logging with PSR-3 logger
- Configurable log levels
- Sensitive header redaction
- Body truncation options
- RetryMiddleware: Retry logic with exponential backoff and jitter
- CachingMiddleware: Response caching using ResponseCache
- HttpClient integration:
withMiddleware()for adding middlewarewithMiddlewareStack()for stack replacementgetMiddlewareStack()accessor
Response Caching Layer
- ResponseCache: PSR-16 compatible response caching
- Cache key generation based on request hash
- TTL configuration per endpoint
- Skip streaming responses by default
- CacheConfig: Configuration class with factory methods
disabled(): Disable caching entirelydeterministicOnly(): Only cache requests with seedmetadataOnly(): Only cache metadata endpoints- Options:
cacheableEndpoints,requireSeed,cacheStreaming,endpointTtls
- CachedResponse: Response wrapper with cache metadata
Changed
- HttpConfig: Default
maxRetrieschanged from 0 to 3 (Python SDK parity)- Added
DEFAULT_MAX_RETRIESconstant - Added
withoutRetries()factory method for disabling retries
- Added
- XaiClient: Added
embeddingsproperty for accessing EmbeddingsResource - composer.json: Added
psr/simple-cachedependency for caching support
Fixed
- 422 errors now throw BadRequestException instead of generic ApiException (#8)
Documentation
- docs/V2_ROADMAP.md: Comprehensive v2.0 planning document
- Async support analysis (ReactPHP recommended)
- gRPC support analysis
- Voice Agent API analysis (WebSocket)
- docs/FRAMEWORK_INTEGRATIONS.md: Laravel/Symfony package proposals
displace/xai-laravel: Facade, Service Provider, Queue integrationdisplace/xai-symfony: Bundle, Autowiring, Messenger integration
Full Changelog: v1.1.0...v1.2.0