Skip to content

Commit 076d53b

Browse files
committed
omg this will simplify a lot of things but it sure is making a lot of changes
1 parent 87dd619 commit 076d53b

27 files changed

+154
-129
lines changed

Modules/LlmDriver/app/Functions/SearchAndSummarize.php renamed to Modules/LlmDriver/app/Functions/RetrieveRelated.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@
1414
use LlmLaraHub\LlmDriver\Responses\CompletionResponse;
1515
use LlmLaraHub\LlmDriver\Responses\FunctionResponse;
1616

17-
class SearchAndSummarize extends FunctionContract
17+
class RetrieveRelated extends FunctionContract
1818
{
1919
use CreateReferencesTrait;
2020

21-
protected string $name = 'search_and_summarize';
21+
protected string $name = 'retrieve_related';
2222

2323
protected string $description = 'Used to embed users prompt, search local database and return summarized results.
24-
DOES NOT SEARCH THE WEB';
24+
DOES NOT SEARCH THE WEB. This is only used for local database search.';
2525

2626
protected string $response = '';
2727

2828
public function handle(
2929
Message $message): FunctionResponse
3030
{
31-
Log::info('[LaraChain] Using Function: SearchAndSummarize');
31+
Log::info('[LaraChain] Using Function: RetrieveRelated');
3232

3333
/**
3434
* @TODO
@@ -61,7 +61,7 @@ public function handle(
6161

6262
/**
6363
* @NOTE
64-
* Yes this is a lot like the SearchAndSummarizeChatRepo
64+
* Yes this is a lot like the RetrieveRelatedChatRepo
6565
* But just getting a sense of things
6666
*/
6767
foreach ($documentChunkResults as $result) {

Modules/LlmDriver/app/LlmDriverClient.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use LlmLaraHub\LlmDriver\Functions\GatherInfoTool;
77
use LlmLaraHub\LlmDriver\Functions\GetWebSiteFromUrlTool;
88
use LlmLaraHub\LlmDriver\Functions\ReportingTool;
9-
use LlmLaraHub\LlmDriver\Functions\SearchAndSummarize;
9+
use LlmLaraHub\LlmDriver\Functions\RetrieveRelated;
1010
use LlmLaraHub\LlmDriver\Functions\SearchTheWeb;
1111
use LlmLaraHub\LlmDriver\Functions\StandardsChecker;
1212
use LlmLaraHub\LlmDriver\Functions\SummarizeCollection;
@@ -62,7 +62,7 @@ public function getFunctions(): array
6262
{
6363
return [
6464
(new SummarizeCollection())->getFunction(),
65-
(new SearchAndSummarize())->getFunction(),
65+
(new RetrieveRelated())->getFunction(),
6666
(new StandardsChecker())->getFunction(),
6767
(new ReportingTool())->getFunction(),
6868
(new GatherInfoTool())->getFunction(),

Modules/LlmDriver/app/LlmServiceProvider.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
use LlmLaraHub\LlmDriver\Functions\GatherInfoTool;
1111
use LlmLaraHub\LlmDriver\Functions\GetWebSiteFromUrlTool;
1212
use LlmLaraHub\LlmDriver\Functions\ReportingTool;
13-
use LlmLaraHub\LlmDriver\Functions\SearchAndSummarize;
13+
use LlmLaraHub\LlmDriver\Functions\RetrieveRelated;
1414
use LlmLaraHub\LlmDriver\Functions\SearchTheWeb;
1515
use LlmLaraHub\LlmDriver\Functions\StandardsChecker;
1616
use LlmLaraHub\LlmDriver\Functions\SummarizeCollection;
@@ -66,7 +66,7 @@ public function boot(): void
6666
});
6767

6868
$this->app->bind('search_and_summarize', function () {
69-
return new SearchAndSummarize();
69+
return new RetrieveRelated();
7070
});
7171

7272
$this->app->bind('standards_checker', function () {

Modules/LlmDriver/app/OllamaClient.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,8 @@ public function completion(string $prompt): CompletionResponse
186186
'stream' => false,
187187
]);
188188

189-
$results = $response->json()['response'];
190189

191-
return new CompletionResponse($results);
190+
return OllamaCompletionResponse::from($response->json());
192191
}
193192

194193
protected function getClient()

Modules/LlmDriver/app/Orchestrate.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use App\Models\Filter;
99
use App\Models\Message;
1010
use App\Models\PromptHistory;
11-
use Facades\App\Domains\Messages\SearchAndSummarizeChatRepo;
11+
use Facades\App\Domains\Messages\RetrieveRelatedChatRepo;
1212
use Illuminate\Support\Facades\Bus;
1313
use Illuminate\Support\Facades\Log;
1414
use LlmLaraHub\LlmDriver\Functions\FunctionCallDto;
@@ -173,7 +173,7 @@ public function handle(
173173
} else {
174174
Log::info('[LaraChain] Orchestration No Functions Default Search And Summarize');
175175

176-
return SearchAndSummarizeChatRepo::search($chat, $message);
176+
return RetrieveRelatedChatRepo::search($chat, $message);
177177
}
178178
}
179179

Modules/LlmDriver/app/Responses/ClaudeCompletionResponse.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ public function __construct(
1212
#[WithCastable(ClaudeContentCaster::class)]
1313
public mixed $content,
1414
public string|Optional $stop_reason,
15-
public string|Optional $tool_used,
15+
public string|null $tool_used = "",
1616
/** @var array<ToolDto> */
1717
#[WithCastable(ClaudeToolCaster::class)]
1818
#[MapInputName('content')]
19-
public array|Optional $tool_calls,
19+
public array $tool_calls = [],
2020
#[MapInputName('usage.input_tokens')]
2121
public ?int $input_tokens = null,
2222
#[MapInputName('usage.output_tokens')]

Modules/LlmDriver/app/Responses/CompletionResponse.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ class CompletionResponse extends \Spatie\LaravelData\Data
99
public function __construct(
1010
public mixed $content,
1111
public string|Optional $stop_reason,
12-
public string|Optional $tool_used,
12+
public string|null $tool_used = "",
1313
/** @var array<ToolDto> */
14-
public array|Optional $tool_calls,
14+
public array $tool_calls = [],
1515
public ?int $input_tokens = null,
1616
public ?int $output_tokens = null,
1717
public ?string $model = null,

Modules/LlmDriver/app/Responses/OllamaCompletionResponse.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ public function __construct(
1212
public mixed $content,
1313
#[MapInputName('done_reason')]
1414
public string|Optional $stop_reason,
15-
public string|Optional $tool_used,
15+
public string|null $tool_used = "",
1616
/** @var array<OllamaToolDto> */
1717
#[MapInputName('message.tool_calls')]
18-
public array|Optional $tool_calls,
18+
public array $tool_calls = [],
1919
#[MapInputName('prompt_eval_count')]
2020
public ?int $input_tokens = null,
2121
#[MapInputName('eval_count')]

Modules/LlmDriver/app/SimpleSearchAndSummarizeOrchestrate.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace LlmLaraHub\LlmDriver;
44

55
use App\Models\Chat;
6-
use Facades\App\Domains\Messages\SearchAndSummarizeChatRepo;
6+
use Facades\App\Domains\Messages\RetrieveRelatedChatRepo;
77
use Illuminate\Support\Facades\Log;
88

9-
class SimpleSearchAndSummarizeOrchestrate
9+
class SimpleRetrieveRelatedOrchestrate
1010
{
1111
protected string $response = '';
1212

@@ -20,7 +20,7 @@ public function handle(string $message, Chat $chat): ?string
2020
$chat->chatable,
2121
'Searching data now to summarize content'
2222
);
23-
$response = SearchAndSummarizeChatRepo::search($chat, $message);
23+
$response = RetrieveRelatedChatRepo::search($chat, $message);
2424

2525
return $response;
2626
}

Modules/LlmDriver/tests/Feature/ClaudeClientTest.php

+8-11
Original file line numberDiff line numberDiff line change
@@ -321,25 +321,22 @@ public function test_remap_messages_with_tools_as_history()
321321
$messages[] = MessageInDto::from([
322322
'content' => 'test3',
323323
'role' => RoleEnum::Tool->value,
324-
'meta_data' => MetaDataDto::from([
325-
'tool' => 'test',
326-
'tool_id' => 'test_id',
327-
]),
324+
'tool' => 'test',
325+
'tool_id' => 'test_id',
326+
'meta_data' => MetaDataDto::from([]),
328327
]);
329328

330329
$results = (new ClaudeClient)->remapMessages($messages);
331330

332-
$this->assertCount(3, $results);
331+
$this->assertCount(5, $results);
333332

334333
$this->assertEquals('user', $results[0]['role']);
335334
$this->assertEquals('assistant', $results[1]['role']);
336-
$this->assertEquals('<thinking>test</thinking>', $results[1]['content'][0]['text']);
335+
$this->assertEquals('<thinking>test3</thinking>', $results[3]['content'][0]['text']);
337336

338337
$this->assertEquals('user', $results[2]['role']);
339-
$this->assertEquals('tool_result', $results[2]['content'][0]['type']);
340-
$this->assertEquals('test', $results[2]['content'][0]['content']);
341-
$this->assertEquals('test_id', $results[2]['content'][0]['tool_use_id']);
342-
343-
$this->assertArrayNotHasKey('tool_id', $results[2]);
338+
$this->assertEquals('tool_use', $results[3]['content'][1]['type']);
339+
$this->assertEquals('test', $results[3]['content'][1]['name']);
340+
$this->assertEquals('test_id', $results[3]['content'][1]['id']);
344341
}
345342
}

app/Domains/Messages/SearchAndSummarizeChatRepo.php renamed to app/Domains/Messages/RetrieveRelatedChatRepo.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
use LlmLaraHub\LlmDriver\Responses\EmbeddingsResponseDto;
2121
use LlmLaraHub\LlmDriver\ToolsHelper;
2222

23-
class SearchAndSummarizeChatRepo
23+
class RetrieveRelatedChatRepo
2424
{
2525
use CreateReferencesTrait;
2626
use ToolsHelper;

app/Jobs/EmailReplyOutputJob.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public function handle(): void
8787

8888
/**
8989
* @NOTE
90-
* Yes this is a lot like the SearchAndSummarizeChatRepo
90+
* Yes this is a lot like the RetrieveRelatedChatRepo
9191
* But just getting a sense of things
9292
*/
9393
foreach ($documentChunkResults as $result) {

app/Jobs/SimpleSearchAndSummarizeOrchestrateJob.php renamed to app/Jobs/SimpleRetrieveRelatedOrchestrateJob.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* This is used by LLMs that might not have functions
2323
* but still want to do a search and summarize
2424
*/
25-
class SimpleSearchAndSummarizeOrchestrateJob implements ShouldQueue
25+
class SimpleRetrieveRelatedOrchestrateJob implements ShouldQueue
2626
{
2727
use Batchable;
2828
use CreateReferencesTrait;
@@ -42,7 +42,7 @@ public function __construct(
4242
*/
4343
public function handle(): void
4444
{
45-
Log::info('[LaraChain] Skipping over functions doing SimpleSearchAndSummarizeOrchestrateJob');
45+
Log::info('[LaraChain] Skipping over functions doing SimpleRetrieveRelatedOrchestrateJob');
4646

4747
notify_ui(
4848
$this->message->getChatable(),

app/Models/Message.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use App\Events\ChatUiUpdateEvent;
99
use App\Events\MessageCreatedEvent;
1010
use App\Jobs\OrchestrateJob;
11+
use App\Jobs\SimpleRetrieveRelatedOrchestrateJob;
1112
use App\Jobs\SimpleSearchAndSummarizeOrchestrateJob;
1213
use Facades\App\Domains\Tokenizer\Templatizer;
1314
use Illuminate\Bus\Batch;
@@ -259,7 +260,7 @@ public function run(): void
259260
} else {
260261
Log::info('[LaraChain] Simple Search and Summarize added to queue');
261262
$this->batchJob([
262-
new SimpleSearchAndSummarizeOrchestrateJob($message),
263+
new SimpleRetrieveRelatedOrchestrateJob($message),
263264
], $chat, 'simple_search_and_summarize');
264265
}
265266

tests/Feature/Http/Controllers/ChatControllerTest.php

-24
Original file line numberDiff line numberDiff line change
@@ -178,31 +178,7 @@ public function test_kick_off_chat_makes_system()
178178

179179
}
180180

181-
public function test_no_functions()
182-
{
183-
Bus::fake();
184-
$user = User::factory()->create();
185-
$collection = Collection::factory()->create();
186-
$chat = Chat::factory()->create([
187-
'chatable_id' => $collection->id,
188-
'chatable_type' => Collection::class,
189-
'user_id' => $user->id,
190-
]);
191181

192-
LlmDriverFacade::shouldReceive('driver->hasFunctions')->once()->andReturn(false);
193-
LlmDriverFacade::shouldReceive('getFunctionsForUi')->andReturn([]);
194-
195-
$this->actingAs($user)->post(route('chats.messages.create', [
196-
'chat' => $chat->id,
197-
]),
198-
[
199-
'system_prompt' => 'Foo',
200-
'input' => 'user input',
201-
])->assertOk();
202-
203-
Bus::assertBatchCount(1);
204-
205-
}
206182

207183
public function test_standard_checker()
208184
{

tests/Feature/Models/DocumentTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public function test_factory(): void
2828
public function test_parent()
2929
{
3030
$modelParent = \App\Models\Document::factory()->create();
31+
3132
$model = \App\Models\Document::factory()->create([
3233
'parent_id' => $modelParent->id,
3334
]);

tests/Feature/OrchestrateTest.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use App\Models\Collection;
1010
use App\Models\Message;
1111
use App\Models\User;
12-
use Facades\App\Domains\Messages\SearchAndSummarizeChatRepo;
12+
use Facades\App\Domains\Messages\RetrieveRelatedChatRepo;
1313
use Illuminate\Support\Facades\Event;
14-
use LlmLaraHub\LlmDriver\Functions\SearchAndSummarize;
14+
use LlmLaraHub\LlmDriver\Functions\RetrieveRelated;
1515
use LlmLaraHub\LlmDriver\Functions\StandardsChecker;
1616
use LlmLaraHub\LlmDriver\Functions\SummarizeCollection;
1717
use LlmLaraHub\LlmDriver\LlmDriverFacade;
@@ -39,7 +39,7 @@ public function test_gets_summarize_function(): void
3939

4040
LlmDriverFacade::shouldReceive('driver->chat')->never();
4141

42-
SearchAndSummarizeChatRepo::shouldReceive('search')->never();
42+
RetrieveRelatedChatRepo::shouldReceive('search')->never();
4343

4444
$this->instance(
4545
'summarize_collection',
@@ -149,11 +149,11 @@ public function test_makes_history_no_message(): void
149149

150150
LlmDriverFacade::shouldReceive('driver->chat')->never();
151151

152-
SearchAndSummarizeChatRepo::shouldReceive('search')->never();
152+
RetrieveRelatedChatRepo::shouldReceive('search')->never();
153153

154154
$this->instance(
155155
'search_and_summarize',
156-
Mockery::mock(SearchAndSummarize::class, function ($mock) {
156+
Mockery::mock(RetrieveRelated::class, function ($mock) {
157157
$mock->shouldReceive('handle')
158158
->once()
159159
->andReturn(

tests/Feature/ReportingToolTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class ReportingToolTest extends TestCase
2525
*/
2626
public function test_can_generate_function_as_array(): void
2727
{
28-
$searchAndSummarize = new \LlmLaraHub\LlmDriver\Functions\ReportingTool();
28+
$RetrieveRelated = new \LlmLaraHub\LlmDriver\Functions\ReportingTool();
2929

30-
$function = $searchAndSummarize->getFunction();
30+
$function = $RetrieveRelated->getFunction();
3131

3232
$parameters = $function->parameters;
3333

tests/Feature/SearchAndSummarizeChatRepoTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use App\Domains\Agents\VerifyPromptOutputDto;
66
use App\Domains\Chat\MetaDataDto;
77
use App\Domains\Messages\RoleEnum;
8-
use App\Domains\Messages\SearchAndSummarizeChatRepo;
8+
use App\Domains\Messages\RetrieveRelatedChatRepo;
99
use App\Models\Chat;
1010
use App\Models\Collection;
1111
use App\Models\Document;
@@ -16,7 +16,7 @@
1616
use LlmLaraHub\LlmDriver\LlmDriverFacade;
1717
use Tests\TestCase;
1818

19-
class SearchAndSummarizeChatRepoTest extends TestCase
19+
class RetrieveRelatedChatRepoTest extends TestCase
2020
{
2121
/**
2222
* A basic feature test example.
@@ -84,7 +84,7 @@ public function test_can_search(): void
8484
]),
8585
]);
8686

87-
$results = (new SearchAndSummarizeChatRepo())->search($chat, $message);
87+
$results = (new RetrieveRelatedChatRepo())->search($chat, $message);
8888

8989
$this->assertNotNull($results);
9090
$this->assertDatabaseCount('message_document_references', 3);

tests/Feature/SearchAndSummarizeTest.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@
1313
use LlmLaraHub\LlmDriver\DistanceQuery\DistanceQueryFacade;
1414
use LlmLaraHub\LlmDriver\Functions\ParametersDto;
1515
use LlmLaraHub\LlmDriver\Functions\PropertyDto;
16-
use LlmLaraHub\LlmDriver\Functions\SearchAndSummarize;
16+
use LlmLaraHub\LlmDriver\Functions\RetrieveRelated;
1717
use LlmLaraHub\LlmDriver\LlmDriverFacade;
1818
use LlmLaraHub\LlmDriver\Requests\MessageInDto;
1919
use Tests\TestCase;
2020

21-
class SearchAndSummarizeTest extends TestCase
21+
class RetrieveRelatedTest extends TestCase
2222
{
2323
/**
2424
* A basic feature test example.
2525
*/
2626
public function test_can_generate_function_as_array(): void
2727
{
28-
$searchAndSummarize = new \LlmLaraHub\LlmDriver\Functions\SearchAndSummarize();
28+
$RetrieveRelated = new \LlmLaraHub\LlmDriver\Functions\RetrieveRelated();
2929

30-
$function = $searchAndSummarize->getFunction();
30+
$function = $RetrieveRelated->getFunction();
3131

3232
$parameters = $function->parameters;
3333

@@ -117,7 +117,7 @@ public function test_gets_user_input()
117117
));
118118

119119
$message = Message::factory()->user()->create(['chat_id' => $chat->id]);
120-
$results = (new SearchAndSummarize())->handle($message);
120+
$results = (new RetrieveRelated())->handle($message);
121121

122122
$this->assertNotNull($results);
123123
$this->assertDatabaseCount('message_document_references', 3);

0 commit comments

Comments
 (0)