Customizing the stored result | laravel-url-ai-transformer | Spatie       

 SPATIE  

  Laravel URL AI Transformer 
=============================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-url-ai-transformer](https://spatie.be/docs/laravel-url-ai-transformer/v2)  Advanced-usage  Customizing the stored result

 Version   v2   v1      

 Other versions for crawler [v2](https://spatie.be/docs/laravel-url-ai-transformer/v2) [v1](https://spatie.be/docs/laravel-url-ai-transformer/v1) 

  Customizing the stored result    
- [ Introduction ](https://spatie.be/docs/laravel-url-ai-transformer/v2/introduction)
- [ Support us ](https://spatie.be/docs/laravel-url-ai-transformer/v2/support-us)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-url-ai-transformer/v2/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-url-ai-transformer/v2/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-url-ai-transformer/v2/changelog)
- [ About us ](https://spatie.be/docs/laravel-url-ai-transformer/v2/about-us)

Basic usage
-----------

- [ Getting started ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/getting-started)
- [ Registering transformations ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/registering-transformations)
- [ Writing your own transformers ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/writing-your-own-transformers)

Advanced usage
--------------

- [ Structured output ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/structured-output)
- [ Customizing AI models ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-ai-models)
- [ Customizing the stored result ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-the-result)
- [ Conditional transformations ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/conditional-transformations)
- [ Crawling URLs ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/crawling-urls)
- [ Exploring command options ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/exploring-command-options)
- [ Regenerating results ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/regenerating-results)
- [ Handling failures ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/handling-failures)
- [ Listening for events ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/events)
- [ Using your own model ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/using-your-own-model)
- [ Customizing the job ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-the-job)
- [ Overriding actions ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/overriding-actions)
- [ Testing transformers ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/testing-transformers)

 Customizing the stored result
=============================

###  On this page 

1. [ Manipulating the response ](#content-manipulating-the-response)
2. [ Saving extra data on the model ](#content-saving-extra-data-on-the-model)
3. [ Controlling persistence ](#content-controlling-persistence)

By default a transformer stores the AI's text response, or, for a [structured output](./structured-output) transformer, its structured JSON. You can change what gets stored by overriding the `resultFrom()` method on your transformer.

`resultFrom()` receives the Laravel AI response, and whatever you return is stored in the `result` column.

Manipulating the response
-----------------------------------------------------------------------------------------------------------------------------------

Return a modified string to post-process the response before it is stored.

```
use Laravel\Ai\Responses\AgentResponse;
use Spatie\LaravelUrlAiTransformer\Transformers\Transformer;
use Stringable;

class SummaryTransformer extends Transformer
{
    public function instructions(): Stringable|string
    {
        return 'Summarize this webpage.';
    }

    protected function resultFrom(AgentResponse $response): string
    {
        return trim(strip_tags($response->text));
    }
}
```

Saving extra data on the model
--------------------------------------------------------------------------------------------------------------------------------------------------

The record that gets saved is available on the transformer as `$this->transformationResult`, so you can set additional attributes on it from within `resultFrom()`.

```
protected function resultFrom(AgentResponse $response): string
{
    $summary = trim($response->text);

    $this->transformationResult->word_count = str_word_count($summary);

    return $summary;
}
```

To persist extra columns like `word_count`, add them to a migration and point the package at [your own model](./using-your-own-model) via the `model` config key.

Controlling persistence
-----------------------------------------------------------------------------------------------------------------------------

`resultFrom()` runs while the transformer is producing the result. If you need to change how results are persisted more broadly (for example, saving to another table, or running side effects), [extend the process transformer job](./customizing-the-job) and register it with the `process_transformer_job` config key, or listen for the [`TransformerEnded` event](./events).

 A good
match?
-------------

### What we do best

- All things Laravel
- Custom frontend components
- Building APIs
- AI-powered features
- Simplifying things
- Clean solutions
- Integrating services

### Not our cup of tea

- WordPress themes
- Cutting corners
- Free mockups to win a job
- "Just execute the briefing"

 In short: we'd like to be a **substantial part** of your project.

 [ Get in touch via email ](mailto:info@spatie.be?subject=A%20good%20match%21&body=Tell%20us%20as%20much%20as%20you%20can%20about%0A-%20your%20online%20project%0A-%20your%20planning%0A-%20your%20budget%0A-%20%E2%80%A6%0A%0AAnything%20that%20helps%20us%20to%20start%20straightforward%21)
