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
10 changes: 5 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"php": "^8.2",
"laravel/framework": "^11.0|^12.0",
"aws/aws-sdk-php": "^3.339",
"prism-php/prism": ">=0.77.1"
"prism-php/prism": ">=0.88.0"
},
"config": {
"allow-plugins": {
Expand All @@ -34,17 +34,17 @@
"require-dev": {
"pestphp/pest": "^3.0",
"laravel/pint": "^1.14",
"phpstan/phpstan": "^1.11",
"phpstan/phpstan": "^2.1",
"pestphp/pest-plugin-arch": "^3.0",
"pestphp/pest-plugin-laravel": "^3.0",
"phpstan/extension-installer": "^1.3",
"phpstan/phpstan-deprecation-rules": "^1.2",
"rector/rector": "^1.1",
"phpstan/phpstan-deprecation-rules": "^2.0",
"rector/rector": "^2.1",
"projektgopher/whisky": "^0.7.0",
"orchestra/testbench": "^9.4",
"mockery/mockery": "^1.6",
"symplify/rule-doc-generator-contracts": "^11.2",
"phpstan/phpdoc-parser": "^1.24",
"phpstan/phpdoc-parser": "^2.0",
"spatie/laravel-ray": "^1.40"
},
"autoload-dev": {
Expand Down
2 changes: 0 additions & 2 deletions rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
declare(strict_types=1);

use Prism\Bedrock\Rectors\ReorderMethodsRector;
use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList;
Expand All @@ -15,7 +14,6 @@
__DIR__.'/tests',
])
->withRules([
InlineConstructorDefaultToPropertyRector::class,
ReorderMethodsRector::class,
])
->withSets([
Expand Down
57 changes: 1 addition & 56 deletions src/Rectors/ReorderMethodsRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

class ReorderMethodsRector extends AbstractRector
{
Expand Down Expand Up @@ -36,66 +34,13 @@ public function refactor(Node $node): ?Node
}

$node->stmts = array_merge(
array_filter($node->stmts, fn ($stmt): bool => ! $stmt instanceof ClassMethod),
array_filter($node->stmts, fn (\PhpParser\Node\Stmt $stmt): bool => ! $stmt instanceof ClassMethod),
$reorderedMethods
);

return $node;
}

#[\Override]
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
'Reorders class methods: magic methods first, then public, protected, and private.',
[
new CodeSample(
<<<'CODE_SAMPLE'
class SomeClass
{
private function privateMethod()
{
}

public function publicMethod()
{
}

protected function protectedMethod()
{
}

public function __construct()
{
}
}
CODE_SAMPLE
,
<<<'CODE_SAMPLE'
class SomeClass
{
public function __construct()
{
}

public function publicMethod()
{
}

protected function protectedMethod()
{
}

private function privateMethod()
{
}
}
CODE_SAMPLE
),
]
);
}

/**
* @param array<int, ClassMethod> $methods
* @return array<int, ClassMethod>
Expand Down
4 changes: 1 addition & 3 deletions src/Schemas/Anthropic/AnthropicStructuredHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public function handle(Request $request): StructuredResponse
);

$request->addMessage($responseMessage);
$this->responseBuilder->addResponseMessage($responseMessage);

$this->responseBuilder->addStep(new Step(
text: $this->tempResponse->text,
Expand All @@ -79,7 +78,7 @@ public static function buildPayload(Request $request, ?string $apiVersion): arra
'system' => MessageMap::mapSystemMessages($request->systemPrompts()),
'temperature' => $request->temperature(),
'top_p' => $request->topP(),
], fn ($value): bool => $value !== null);
], fn (mixed $value): bool => $value !== null);
}

protected function sendRequest(Request $request): void
Expand All @@ -100,7 +99,6 @@ protected function prepareTempResponse(): void

$this->tempResponse = new StructuredResponse(
steps: new Collection,
responseMessages: new Collection,
text: $this->extractText($data),
structured: [],
finishReason: FinishReasonMap::map(data_get($data, 'stop_reason', '')),
Expand Down
9 changes: 3 additions & 6 deletions src/Schemas/Anthropic/AnthropicTextHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ public function handle(Request $request): TextResponse
$this->tempResponse->additionalContent,
);

$this->responseBuilder->addResponseMessage($responseMessage);

$request->addMessage($responseMessage);

return match ($this->tempResponse->finishReason) {
Expand All @@ -80,7 +78,7 @@ public static function buildPayload(Request $request, ?string $apiVersion): arra
'top_p' => $request->topP(),
'tools' => ToolMap::map($request->tools()),
'tool_choice' => ToolChoiceMap::map($request->toolChoice()),
], fn ($value): bool => $value !== null);
], fn (mixed $value): bool => $value !== null);
}

protected function sendRequest(Request $request): void
Expand All @@ -101,8 +99,6 @@ protected function prepareTempResponse(): void

$this->tempResponse = new TextResponse(
steps: new Collection,
responseMessages: new Collection,
messages: new Collection,
text: $this->extractText($data),
finishReason: FinishReasonMap::map(data_get($data, 'stop_reason', '')),
toolCalls: $this->extractToolCalls($data),
Expand All @@ -116,7 +112,8 @@ protected function prepareTempResponse(): void
meta: new Meta(
id: data_get($data, 'id'),
model: data_get($data, 'model'),
)
),
messages: new Collection
);
}

Expand Down
6 changes: 4 additions & 2 deletions src/Schemas/Anthropic/Concerns/ExtractsToolCalls.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,18 @@ trait ExtractsToolCalls
*/
protected function extractToolCalls(array $data): array
{
$toolCalls = array_map(function ($content) {
$toolCalls = array_map(function ($content): ?ToolCall {
if (data_get($content, 'type') === 'tool_use') {
return new ToolCall(
id: data_get($content, 'id'),
name: data_get($content, 'name'),
arguments: data_get($content, 'input')
);
}

return null;
}, data_get($data, 'content', []));

return array_values(array_filter($toolCalls));
return array_values(array_filter($toolCalls, fn (?ToolCall $toolCall): bool => $toolCall instanceof ToolCall));
}
}
2 changes: 1 addition & 1 deletion src/Schemas/Anthropic/Maps/MessageMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
use Exception;
use Prism\Prism\Contracts\Message;
use Prism\Prism\Exceptions\PrismException;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\AssistantMessage;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Messages\SystemMessage;
use Prism\Prism\ValueObjects\Messages\ToolResultMessage;
use Prism\Prism\ValueObjects\Messages\UserMessage;
Expand Down
5 changes: 1 addition & 4 deletions src/Schemas/Converse/ConverseStructuredHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ public function handle(Request $request): StructuredResponse
);

$request->addMessage($responseMessage);
$this->responseBuilder->addResponseMessage($responseMessage);

$this->responseBuilder->addStep(new Step(
text: $this->tempResponse->text,
Expand Down Expand Up @@ -77,7 +76,7 @@ public static function buildPayload(Request $request): array
'maxTokens' => $request->maxTokens(),
'temperature' => $request->temperature(),
'topP' => $request->topP(),
], fn ($value): bool => $value !== null),
], fn (mixed $value): bool => $value !== null),
'messages' => MessageMap::map($request->messages()),
'performanceConfig' => $request->providerOptions('performanceConfig'),
'promptVariables' => $request->providerOptions('promptVariables'),
Expand All @@ -104,7 +103,6 @@ protected function prepareTempResponse(): void

$this->tempResponse = new StructuredResponse(
steps: new Collection,
responseMessages: new Collection,
text: data_get($data, 'output.message.content.0.text', ''),
structured: [],
finishReason: FinishReasonMap::map(data_get($data, 'stopReason')),
Expand All @@ -113,7 +111,6 @@ protected function prepareTempResponse(): void
completionTokens: data_get($data, 'usage.outputTokens')
),
meta: new Meta(id: '', model: '') // Not provided in Converse response.

);
}

Expand Down
9 changes: 3 additions & 6 deletions src/Schemas/Converse/ConverseTextHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ public function handle(Request $request): TextResponse
$this->tempResponse->additionalContent,
);

$this->responseBuilder->addResponseMessage($responseMessage);

$request->addMessage($responseMessage);

return match ($this->tempResponse->finishReason) {
Expand All @@ -75,7 +73,7 @@ public static function buildPayload(Request $request, int $stepCount = 0): array
'maxTokens' => $request->maxTokens(),
'temperature' => $request->temperature(),
'topP' => $request->topP(),
], fn ($value): bool => $value !== null),
], fn (mixed $value): bool => $value !== null),
'messages' => MessageMap::map($request->messages()),
'system' => MessageMap::mapSystemMessages($request->systemPrompts()),
'toolConfig' => $request->tools() === []
Expand Down Expand Up @@ -111,8 +109,6 @@ protected function prepareTempResponse(): void

$this->tempResponse = new TextResponse(
steps: new Collection,
responseMessages: new Collection,
messages: new Collection,
text: data_get($data, 'output.message.content.0.text', ''),
finishReason: FinishReasonMap::map(data_get($data, 'stopReason')),
toolCalls: $this->extractToolCalls($data),
Expand All @@ -121,7 +117,8 @@ protected function prepareTempResponse(): void
promptTokens: data_get($data, 'usage.inputTokens'),
completionTokens: data_get($data, 'usage.outputTokens')
),
meta: new Meta(id: '', model: '') // Not provided in Converse response.
meta: new Meta(id: '', model: ''), // Not provided in Converse response.
messages: new Collection
);
}

Expand Down
4 changes: 2 additions & 2 deletions src/Schemas/Converse/Maps/DocumentMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
use Prism\Bedrock\Enums\Mimes;
use Prism\Prism\Contracts\ProviderMediaMapper;
use Prism\Prism\Enums\Provider;
use Prism\Prism\ValueObjects\Messages\Support\Document;
use Prism\Prism\ValueObjects\Messages\Support\Media;
use Prism\Prism\ValueObjects\Media\Document;
use Prism\Prism\ValueObjects\Media\Media;

class DocumentMapper extends ProviderMediaMapper
{
Expand Down
4 changes: 2 additions & 2 deletions src/Schemas/Converse/Maps/ImageMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
use Prism\Bedrock\Enums\Mimes;
use Prism\Prism\Contracts\ProviderMediaMapper;
use Prism\Prism\Enums\Provider;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Messages\Support\Media;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Media\Media;

class ImageMapper extends ProviderMediaMapper
{
Expand Down
4 changes: 2 additions & 2 deletions src/Schemas/Converse/Maps/MessageMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
use Exception;
use Prism\Prism\Contracts\Message;
use Prism\Prism\Exceptions\PrismException;
use Prism\Prism\ValueObjects\Media\Document;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\AssistantMessage;
use Prism\Prism\ValueObjects\Messages\Support\Document;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Messages\SystemMessage;
use Prism\Prism\ValueObjects\Messages\ToolResultMessage;
use Prism\Prism\ValueObjects\Messages\UserMessage;
Expand Down
2 changes: 1 addition & 1 deletion tests/Schemas/Anthropic/AnthropicTextHandlerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Illuminate\Support\Facades\Http;
use Prism\Prism\Facades\Tool;
use Prism\Prism\Prism;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\SystemMessage;
use Prism\Prism\ValueObjects\Messages\UserMessage;
use Tests\Fixtures\FixtureResponse;
Expand Down
2 changes: 1 addition & 1 deletion tests/Schemas/Anthropic/Maps/MessageMapTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
use Prism\Bedrock\Schemas\Anthropic\Maps\MessageMap;
use Prism\Prism\Exceptions\PrismException;
use Prism\Prism\Providers\Anthropic\Enums\AnthropicCacheType;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\AssistantMessage;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Messages\SystemMessage;
use Prism\Prism\ValueObjects\Messages\ToolResultMessage;
use Prism\Prism\ValueObjects\Messages\UserMessage;
Expand Down
4 changes: 2 additions & 2 deletions tests/Schemas/Converse/ConverseTextHandlerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
use Prism\Prism\Prism;
use Prism\Prism\Testing\TextStepFake;
use Prism\Prism\Text\ResponseBuilder;
use Prism\Prism\ValueObjects\Messages\Support\Document;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Media\Document;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\UserMessage;
use Tests\Fixtures\FixtureResponse;

Expand Down
4 changes: 2 additions & 2 deletions tests/Schemas/Converse/Maps/MessageMapTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
namespace Tests\Schemas\Converse\Maps;

use Prism\Bedrock\Schemas\Converse\Maps\MessageMap;
use Prism\Prism\ValueObjects\Media\Document;
use Prism\Prism\ValueObjects\Media\Image;
use Prism\Prism\ValueObjects\Messages\AssistantMessage;
use Prism\Prism\ValueObjects\Messages\Support\Document;
use Prism\Prism\ValueObjects\Messages\Support\Image;
use Prism\Prism\ValueObjects\Messages\SystemMessage;
use Prism\Prism\ValueObjects\Messages\ToolResultMessage;
use Prism\Prism\ValueObjects\Messages\UserMessage;
Expand Down