From 1cb1794a4aa44dc7c2890459a12c3c91f0bc1dda Mon Sep 17 00:00:00 2001 From: Pavel Buchnev Date: Wed, 4 Sep 2024 10:55:57 +0400 Subject: [PATCH] Adds new agent - symfony-console Some fixes in chat command --- .gitignore | 1 + app/Chat/SimpleChatService.php | 41 ++++++++++++++++++++++-------- app/Models/ValueObject/History.php | 2 +- bootstrap/providers.php | 1 + composer.json | 3 ++- config/agents.php | 10 ++++---- 6 files changed, 40 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 46340a6..ab4e073 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /public/storage /storage/*.key /vendor +composer.lock .env .env.backup .env.production diff --git a/app/Chat/SimpleChatService.php b/app/Chat/SimpleChatService.php index c4a489e..bd1bc4b 100644 --- a/app/Chat/SimpleChatService.php +++ b/app/Chat/SimpleChatService.php @@ -54,8 +54,6 @@ public function startSession(UuidInterface $accountUuid, string $agentName): Uui 'title' => $agent->getDescription(), ]); - $session->save(); - return $session->getUuid(); } @@ -189,17 +187,38 @@ private function callTool(SessionInterface $session, ToolCall $tool): ToolCallRe ), ); - $functionResult = $this->toolExecutor->execute($tool->name, $tool->arguments); + try { + $functionResult = $this->toolExecutor->execute($tool->name, $tool->arguments); - $this->eventDispatcher?->dispatch( - new \LLM\Agents\Chat\Event\ToolCallResult( - sessionUuid: $session->getUuid(), + $this->eventDispatcher?->dispatch( + new \LLM\Agents\Chat\Event\ToolCallResult( + sessionUuid: $session->getUuid(), + id: $tool->id, + tool: $tool->name, + result: $functionResult, + createdAt: new \DateTimeImmutable(), + ), + ); + } catch (\Throwable $e) { + $this->eventDispatcher?->dispatch( + new \LLM\Agents\Chat\Event\ToolCallResult( + sessionUuid: $session->getUuid(), + id: $tool->id, + tool: $tool->name, + result: \json_encode([ + 'error' => $e->getMessage(), + ]), + createdAt: new \DateTimeImmutable(), + ), + ); + + return new ToolCallResultMessage( id: $tool->id, - tool: $tool->name, - result: $functionResult, - createdAt: new \DateTimeImmutable(), - ), - ); + content: [ + $e->getMessage(), + ], + ); + } return new ToolCallResultMessage( id: $tool->id, diff --git a/app/Models/ValueObject/History.php b/app/Models/ValueObject/History.php index 784ac71..d93dd28 100644 --- a/app/Models/ValueObject/History.php +++ b/app/Models/ValueObject/History.php @@ -7,7 +7,7 @@ use LLM\Agents\LLM\Prompt\Chat\Prompt; use Traversable; -final class History implements \IteratorAggregate +final class History implements \IteratorAggregate, \JsonSerializable { public static function fromString(string $value): self { diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 278d87d..a63e118 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -6,4 +6,5 @@ App\Providers\SmartHomeServiceProvider::class, App\Providers\AgentsServiceProvider::class, App\Providers\AgentsChatServiceProvider::class, + LLM\Agents\Agent\SymfonyConsole\Integrations\Laravel\SymfonyConsoleServiceProvider::class, ]; diff --git a/composer.json b/composer.json index 90ca9c2..4c89283 100644 --- a/composer.json +++ b/composer.json @@ -7,11 +7,12 @@ "require": { "php": "^8.2", "laravel/framework": "^11.9", + "llm-agents/agent-site-status-checker": "^1.0", + "llm-agents/agent-symfony-console": "^1.0", "llm-agents/agents": "^1.1", "llm-agents/cli-chat": "^1.0", "llm-agents/json-schema-mapper": "^1.0", "llm-agents/openai-client": "^1.0", - "llm-agents/agent-site-status-checker": "^1.0", "openai-php/laravel": "^0.10.1" }, "require-dev": { diff --git a/config/agents.php b/config/agents.php index 14efad0..4acab8f 100644 --- a/config/agents.php +++ b/config/agents.php @@ -11,19 +11,19 @@ return [ 'agents' => [ - CodeReviewAgentFactory::class, +// CodeReviewAgentFactory::class, DeliveryAgentFactory::class, SmartHomeControlAgentFactory::class, TaskSplitterAgentFactory::class, - SiteStatusChecker\SiteStatusCheckerAgentFactory::class, + SiteStatusChecker\SiteStatusCheckerAgentFactory::class, ], 'tools' => [ \App\Agents\AgentsCaller\AskAgentTool::class, // Code Reviewer - \App\Agents\CodeReviewer\ListProjectTool::class, - \App\Agents\CodeReviewer\ReadFileTool::class, - \App\Agents\CodeReviewer\ReviewTool::class, +// \App\Agents\CodeReviewer\ListProjectTool::class, +// \App\Agents\CodeReviewer\ReadFileTool::class, +// \App\Agents\CodeReviewer\ReviewTool::class, // Delivery \App\Agents\Delivery\GetOrderNumberTool::class,