mtyrtov / langfuse-php
Langfuse SDK
v0.0.4
2025-06-12 17:45 UTC
Requires
- php: >=8.1
- ext-json: *
- cuyz/valinor: ^1.15
- guzzlehttp/guzzle: ^7.9
- nesbot/carbon: ^2.71.0
- ramsey/uuid: ^4.7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.75
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2025-07-19 12:53:33 UTC
README
A PHP SDK for interacting with the Langfuse API. This package provides tools for tracing, scores, annotation queues, dataset runs and prompt management to enable comprehensive LLM observability.
Requirements
- PHP >= 8.1
Installation
composer require mtyrtov/langfuse-php:dev-master
Quick Start
use Langfuse\LangfuseClient; use Langfuse\LangfuseProfiler; require_once "vendor/autoload.php"; # Initialize the client $client = new LangfuseClient( 'your-public-key', 'your-secret-key', 'https://your-langfuse-host.com' # Optional, defaults to http://127.0.0.1:3000 ); $profiler = new LangfuseProfiler($client);
Core Features
Tracing
Traces represent full user sessions or requests in your application.
# Create a trace $trace = $profiler->trace('user-query') ->setSessionId() // Automatically generates a session ID ->setUserId('user-123'); # Set input and output $trace->setInput('Hello, how are you?'); $trace->setOutput("I'm fine, thank you!");
Spans
Spans represent logical sections within a trace, such as specific processing steps.
# Create a span within a trace $classificationSpan = $trace->span('classification'); # End the span when the operation is complete $classificationSpan->end();
Generations
Generations track individual LLM calls and their results.
# Create a generation within a span $generation = $classificationSpan->generation('model-call') ->withModel('gpt-4.1-mini') ->withModelParameters(['temperature' => 0]) ->setInput(['role' => 'user', 'content' => 'Hello there']) ->setOutput('AI response here');
Flushing Data
Ensure all data is sent to Langfuse before your application terminates.
$result = $profiler->flush();
Laravel
class LangfuseProvider extends ServiceProvider { public function register(): void { $this->app->singleton(LangfuseClient::class, function ($app) { return new LangfuseClient( # Your variables from .env config('services.langfuse.public_key'), config('services.langfuse.secret_key'), config('services.langfuse.base_uri') ); }); $this->app->singleton(LangfuseProfiler::class, function ($app) { return new LangfuseProfiler($app->make(LangfuseClient::class)); }); } public function boot(): void { // } }
Advanced Usage
Working with Multiple Generations
# Create multiple generations within a span $generation1 = $trace->span('classification')->generation('generation-1') ->setModel('gpt-4.1-mini') ->setModelParameters(['temperature' => 0.5]) ->setPrompt($prompt) ->setInput($messages) ->setOutput('RESULT_1'); $generation2 = $trace->span('classification')->generation('generation-2') ->setModel('gpt-4.1-nano') ->setModelParameters(['temperature' => 0]) ->setPrompt($prompt) ->setInput($messages) ->setOutput('RESULT_2');