From b2df3ffcb8482146a5fe5239af0c821921609237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 16 Nov 2025 19:25:18 -0300 Subject: [PATCH 01/26] feat(perplexity): add config --- config/prism.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/prism.php b/config/prism.php index 58ff34d82..62c9f4593 100644 --- a/config/prism.php +++ b/config/prism.php @@ -61,5 +61,9 @@ 'x_title' => env('OPENROUTER_SITE_X_TITLE', null), ], ], + 'perplexity' => [ + 'api_key' => env('PERPLEXITY_API_KEY', ''), + 'url' => env('PERPLEXITY_URL', 'https://api.perplexity.ai'), + ], ], ]; From 94a5dedba9451b4ff8ae85cc133c18d3ec12b138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 16 Nov 2025 19:28:22 -0300 Subject: [PATCH 02/26] feat(perplexity): add Perplexity factory to PrismManager --- src/Enums/Provider.php | 1 + src/PrismManager.php | 6 ++++++ src/Providers/Perplexity/Perplexity.php | 10 ++++++++++ 3 files changed, 17 insertions(+) create mode 100644 src/Providers/Perplexity/Perplexity.php diff --git a/src/Enums/Provider.php b/src/Enums/Provider.php index 21c7a17f6..02ba5115a 100644 --- a/src/Enums/Provider.php +++ b/src/Enums/Provider.php @@ -17,4 +17,5 @@ enum Provider: string case Gemini = 'gemini'; case VoyageAI = 'voyageai'; case ElevenLabs = 'elevenlabs'; + case Perplexity = 'perplexity'; } diff --git a/src/PrismManager.php b/src/PrismManager.php index 035a21f99..ea48f7ddd 100644 --- a/src/PrismManager.php +++ b/src/PrismManager.php @@ -20,6 +20,7 @@ use Prism\Prism\Providers\Provider; use Prism\Prism\Providers\VoyageAI\VoyageAI; use Prism\Prism\Providers\XAI\XAI; +use Prism\Prism\Providers\Perplexity\Perplexity; use RuntimeException; class PrismManager @@ -150,6 +151,11 @@ protected function createVoyageaiProvider(array $config): VoyageAI ); } + protected function createPerplexityProvider(array $config): Perplexity + { + return new Perplexity(apiKey: $config['api_key'] ?? '', url: $config['url'] ?? ''); + } + /** * @param array $config */ diff --git a/src/Providers/Perplexity/Perplexity.php b/src/Providers/Perplexity/Perplexity.php new file mode 100644 index 000000000..5167e72c3 --- /dev/null +++ b/src/Providers/Perplexity/Perplexity.php @@ -0,0 +1,10 @@ + Date: Sun, 16 Nov 2025 19:30:42 -0300 Subject: [PATCH 03/26] feat(perplexity): add structured and text handlers --- .../Concerns/ExtractsAdditionalContent.php | 19 ++++ .../Perplexity/Concerns/ExtractsMeta.php | 17 ++++ .../Perplexity/Concerns/ExtractsUsage.php | 16 ++++ .../Perplexity/Handlers/BaseHandler.php | 86 +++++++++++++++++++ .../Perplexity/Handlers/Structured.php | 70 +++++++++++++++ src/Providers/Perplexity/Handlers/Text.php | 40 +++++++++ src/Providers/Perplexity/Perplexity.php | 50 ++++++++++- 7 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php create mode 100644 src/Providers/Perplexity/Concerns/ExtractsMeta.php create mode 100644 src/Providers/Perplexity/Concerns/ExtractsUsage.php create mode 100644 src/Providers/Perplexity/Handlers/BaseHandler.php create mode 100644 src/Providers/Perplexity/Handlers/Structured.php create mode 100644 src/Providers/Perplexity/Handlers/Text.php diff --git a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php new file mode 100644 index 000000000..1068df88f --- /dev/null +++ b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php @@ -0,0 +1,19 @@ + + */ + protected function extractsAdditionalContent(array $data): array + { + return Arr::whereNotNull([ + 'citations' => data_get($data, 'citations'), + 'search_results' => data_get($data, 'search_results'), + ]); + } +} diff --git a/src/Providers/Perplexity/Concerns/ExtractsMeta.php b/src/Providers/Perplexity/Concerns/ExtractsMeta.php new file mode 100644 index 000000000..868eee0ee --- /dev/null +++ b/src/Providers/Perplexity/Concerns/ExtractsMeta.php @@ -0,0 +1,17 @@ +messages()) + ->map(static function (Message $message): array { + $documentMessages = []; + $imageMessages = []; + + if ($message instanceof UserMessage) { + $role = 'user'; + $text = $message->text(); + + $documentMessages = array_map(static fn (Document $content): array => [ + 'type' => 'file_url', + 'file_url' => [ + 'url' => $content->base64(), + ], + ], $message->documents()); + + $imageMessages = array_map(static fn (Image $image): array => [ + 'type' => 'image_url', + 'image_url' => [ + 'url' => "data:{$image->mimeType()};base64,{$image->base64()}", + ], + ], $message->images()); + + } elseif ($message instanceof AssistantMessage) { + $role = 'assistant'; + $text = $message->content; + } elseif ($message instanceof SystemMessage) { + $role = 'system'; + $text = $message->content; + } else { + throw new RuntimeException('Could not map message type '.$message::class); + } + + return [ + 'role' => $role, + 'content' => [ + [ + 'type' => 'text', + 'text' => $text, + ], + ...$documentMessages, + ...$imageMessages, + ], + ]; + }) + // Define custom order: system messages are always at the beginning of the list + ->sortBy(static fn (array $message): int => $message['role'] === 'system' ? 0 : 1) + ->values() + ->toArray(); + + $payload = array_merge([ + 'model' => $request->model(), + 'messages' => $messages, + 'max_tokens' => $request->maxTokens(), + ], Arr::whereNotNull([ + 'temperature' => $request->temperature(), + 'top_p' => $request->topP(), + 'reasoning_effort' => $request->providerOptions('reasoning_effort'), + 'web_search_options' => $request->providerOptions('web_search_options'), + + ])); + + return $client->post('/chat/completions', $payload); + } +} diff --git a/src/Providers/Perplexity/Handlers/Structured.php b/src/Providers/Perplexity/Handlers/Structured.php new file mode 100644 index 000000000..f4de15f9f --- /dev/null +++ b/src/Providers/Perplexity/Handlers/Structured.php @@ -0,0 +1,70 @@ +addMessage(new SystemMessage(sprintf( + "Respond with ONLY JSON (i.e. not in backticks or a code block, with NO CONTENT outside the JSON) that matches the following schema:\n %s", + json_encode($request->schema()->toArray(), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT), + ))); + + $response = $this->sendRequest($this->client, $request); + + $data = $response->json(); + $rawContent = data_get($data, 'choices.{last}.message.content'); + + return new StructuredResponse( + steps: collect(), + text: $rawContent, + structured: $this->parseStructuredOutput($rawContent), + finishReason: FinishReason::Stop, + usage: $this->extractUsage($data), + meta: $this->extractsMeta($data), + additionalContent: $this->extractsAdditionalContent($data), + ); + } + + protected function parseStructuredOutput(string $content): array + { + $stringable = Str::of($content); + + if ($stringable->contains('')) { + $stringable = $stringable->after('')->trim(); + } + + if ($stringable->startsWith('```json')) { + $stringable = $stringable->after('```json')->trim(); + } + + if ($stringable->startsWith('```')) { + $stringable = $stringable->substr(3)->trim(); + } + + if ($stringable->endsWith('```')) { + $stringable = $stringable->substr(0, $stringable->length() - 3)->trim(); + } + + return json_decode($stringable->trim(), associative: true, flags: JSON_THROW_ON_ERROR); + } +} diff --git a/src/Providers/Perplexity/Handlers/Text.php b/src/Providers/Perplexity/Handlers/Text.php new file mode 100644 index 000000000..41a680b23 --- /dev/null +++ b/src/Providers/Perplexity/Handlers/Text.php @@ -0,0 +1,40 @@ +sendRequest($this->client, $request); + $data = $response->json(); + + return new TextResponse( + steps: collect(), + text: data_get($data, 'choices.{last}.message.content'), + finishReason: FinishReason::Stop, + toolCalls: [], + toolResults: [], + usage: $this->extractUsage($data), + meta: $this->extractsMeta($data), + messages: collect($request->messages()), + additionalContent: $this->extractsAdditionalContent($data), + ); + } +} diff --git a/src/Providers/Perplexity/Perplexity.php b/src/Providers/Perplexity/Perplexity.php index 5167e72c3..f8e732c87 100644 --- a/src/Providers/Perplexity/Perplexity.php +++ b/src/Providers/Perplexity/Perplexity.php @@ -2,9 +2,57 @@ namespace Prism\Prism\Providers\Perplexity; +use Illuminate\Http\Client\PendingRequest; +use Prism\Prism\Concerns\InitializesClient; +use Prism\Prism\Providers\Perplexity\Handlers\Structured; +use Prism\Prism\Providers\Perplexity\Handlers\Text; use Prism\Prism\Providers\Provider; +use Prism\Prism\Structured\Request as StructuredRequest; +use Prism\Prism\Structured\Response as StructuredResponse; +use Prism\Prism\Text\Request as TextRequest; +use Prism\Prism\Text\Response as TextResponse; +use SensitiveParameter; +/** + * @link https://docs.perplexity.ai/api-reference/chat-completions-post + * @link https://docs.perplexity.ai/guides/image-attachments + * @link https://docs.perplexity.ai/guides/file-attachments + */ class Perplexity extends Provider { + use InitializesClient; -} \ No newline at end of file + public function __construct( + #[SensitiveParameter] + protected string $apiKey, + public readonly string $url, + ) {} + + public function text(TextRequest $request): TextResponse + { + $textHandler = new Text($this->client($request->clientOptions(), $request->clientRetry())); + + return $textHandler->handle($request); + } + + public function structured(StructuredRequest $request): StructuredResponse + { + $textHandler = new Structured($this->client($request->clientOptions(), $request->clientRetry())); + + return $textHandler->handle($request); + } + + /** + * @param array $options + * @param array $retry + */ + protected function client(array $options = [], array $retry = [], ?string $baseUrl = null): PendingRequest + { + return $this->baseClient() + ->when($this->apiKey, fn ($client) => $client->withToken($this->apiKey)) + ->withOptions($options) + ->when($retry !== [], fn ($client) => $client->retry(...$retry)) + ->acceptJson() + ->baseUrl($baseUrl ?? $this->url); + } +} From ceb3c555edc716ee02b8a19a5acac25e498e9436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 16 Nov 2025 19:33:25 -0300 Subject: [PATCH 04/26] test(perplexity): add basic tests --- .../generate-text-with-a-prompt-1.json | 159 ++++++++++++++++ tests/Fixtures/perplexity/structured-1.json | 177 ++++++++++++++++++ tests/Providers/Perplexity/StructuredTest.php | 105 +++++++++++ tests/Providers/Perplexity/TextTest.php | 30 +++ 4 files changed, 471 insertions(+) create mode 100644 tests/Fixtures/perplexity/generate-text-with-a-prompt-1.json create mode 100644 tests/Fixtures/perplexity/structured-1.json create mode 100644 tests/Providers/Perplexity/StructuredTest.php create mode 100644 tests/Providers/Perplexity/TextTest.php diff --git a/tests/Fixtures/perplexity/generate-text-with-a-prompt-1.json b/tests/Fixtures/perplexity/generate-text-with-a-prompt-1.json new file mode 100644 index 000000000..a828a0b93 --- /dev/null +++ b/tests/Fixtures/perplexity/generate-text-with-a-prompt-1.json @@ -0,0 +1,159 @@ +{ + "id": "cf5283ea-1537-4b16-9c98-86fb223b203b", + "model": "sonar", + "created": 1763328436, + "usage": { + "prompt_tokens": 8, + "completion_tokens": 346, + "total_tokens": 354, + "search_context_size": "low", + "cost": { + "input_tokens_cost": 0.0, + "output_tokens_cost": 0.0, + "request_cost": 0.005, + "total_cost": 0.005 + } + }, + "citations": [ + "https://www.sunheron.com/south-america/brazil/south-brazil-weather-november/", + "https://en.wikipedia.org/wiki/Climate_of_South_Brazil", + "https://www.weather25.com/south-america/brazil?page=month&month=November", + "https://www.weathercrave.com/weather-forecast-brazil/city-434476/weather-forecast-sul-brasil-today", + "https://en.climate-data.org/south-america/brazil-114/c/november-11/", + "https://www.savacations.com/destinations/brazil-tours-travel/brazil-weather/", + "https://www.accuweather.com/en/br/rio-grande/35734/november-weather/35734?year=2025", + "https://www.timeanddate.com/weather/brazil/sao-paulo", + "https://www.easeweather.com/south-america/brazil/november", + "https://www.accuweather.com/en/br/brazil-weather", + "https://en.climate-data.org/south-america/brazil/amazonas-95/r/november-11/", + "https://www.ventusky.com/brazil", + "https://www.accuweather.com/en/br/interlagos/2732265/november-weather/2732265?year=2025", + "https://boutiquetravelexperts.com/brazil/weather/" + ], + "search_results": [ + { + "title": "South Brazil weather in November 2025 - Sunheron", + "url": "https://www.sunheron.com/south-america/brazil/south-brazil-weather-november/", + "date": "2025-01-01", + "last_updated": "2025-10-28", + "snippet": "South Brazil weather in November 2025 \u00b7 Day. 24 \u00b0C \u00b7 Night. 18 \u00b0C \u00b7 Sea. 22 \u00b0C \u00b7 Precipitation. 119 mm. in month \u00b7 Rainy days. 15 days. in month \u00b7 Daylight. 13 ...", + "source": "web" + }, + { + "title": "Climate of South Brazil - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Climate_of_South_Brazil", + "date": "2019-05-22", + "last_updated": "2025-06-30", + "snippet": "Regarding temperatures: the winter is cool and the summer is hot. The annual medium temperatures range from 14 to 22 \u00b0C (57.2 to 71.6 \u00b0F), and in places with ...", + "source": "web" + }, + { + "title": "Brazil weather in November 2025 - Weather25.com", + "url": "https://www.weather25.com/south-america/brazil?page=month&month=November", + "date": "2025-11-01", + "last_updated": "2025-11-12", + "snippet": "The temperatures in Brazil in November are comfortable with low of 62\u00b0F and and high up to 77\u00b0F. You can expect rain for roughly half of the month.", + "source": "web" + }, + { + "title": "Weather Forecast Sul Brasil - Brazil (South Region) : free 15 day ...", + "url": "https://www.weathercrave.com/weather-forecast-brazil/city-434476/weather-forecast-sul-brasil-today", + "date": "2025-10-24", + "last_updated": "2025-10-24", + "snippet": "This afternoon in Sul Brasil, Very cloudy with risk of storms. Light showers. Temperatures will vary between 19 and 28\u00b0C, it will be warm in the afternoon. The ...", + "source": "web" + }, + { + "title": "Weather Brazil in November 2025: Temperature & Climate", + "url": "https://en.climate-data.org/south-america/brazil-114/c/november-11/", + "last_updated": "2023-11-19", + "snippet": "Temperatures in the first third of the month average 30.5\u00b0C | 86.9\u00b0F for daily highs and 16.5\u00b0C | 61.7\u00b0F for lows. From the 11th to 20th, highs and lows are ...", + "source": "web" + }, + { + "title": "Brazil Weather by Month | SA Vacations", + "url": "https://www.savacations.com/destinations/brazil-tours-travel/brazil-weather/", + "date": "2025-04-14", + "last_updated": "2025-11-14", + "snippet": "Meanwhile, further south, the beaches of Rio de Janeiro are host to hot and humid summers and mild winters. Temperatures can climb well into the 90's from ...", + "source": "web" + }, + { + "title": "Rio Grande, Rio Grande Do Sul, Brazil Monthly Weather", + "url": "https://www.accuweather.com/en/br/rio-grande/35734/november-weather/35734?year=2025", + "date": "2025-10-24", + "last_updated": "2025-10-24", + "snippet": "Get the monthly weather forecast for Rio Grande, Rio Grande Do Sul, Brazil, including daily high/low, historical averages, to help you plan ahead.", + "source": "web" + }, + { + "title": "Weather for S\u00e3o Paulo, S\u00e3o Paulo, Brazil - Time and Date", + "url": "https://www.timeanddate.com/weather/brazil/sao-paulo", + "date": "2025-11-16", + "last_updated": "2025-11-16", + "snippet": "Weather in S\u00e3o Paulo, S\u00e3o Paulo, Brazil ... Partly sunny. Feels Like: 79 \u00b0F Forecast: 70 / 65 \u00b0F Wind: 12 mph \u2191 from ...", + "source": "web" + }, + { + "title": "Weather in Brazil in November 2025 - Detailed Forecast", + "url": "https://www.easeweather.com/south-america/brazil/november", + "date": "2025-11-01", + "last_updated": "2025-11-16", + "snippet": "In general, the average temperature in Brazil at the beginning of November is 26.3 \u00b0C. \u00b7 Brazil experiences heavy rainfall in November, with over 20 rainy days ...", + "source": "web" + }, + { + "title": "Brazil Current Weather - AccuWeather", + "url": "https://www.accuweather.com/en/br/brazil-weather", + "date": "2025-11-16", + "last_updated": "2025-11-16", + "snippet": "Get the Brazil weather forecast including weather radar and current conditions in Brazil across major cities.", + "source": "web" + }, + { + "title": "Weather Amazonas in November 2025 - Climate Data", + "url": "https://en.climate-data.org/south-america/brazil/amazonas-95/r/november-11/", + "snippet": "In November, Amazonas sees its warmest day on 03.11 with a high of 31.4\u00b0C | 88.5\u00b0F, and its coldest on 27.11, where the temperature drops to 24.3\u00b0C ...", + "source": "web" + }, + { + "title": "Weather - Brazil - 14-Day Forecast & Rain - Ventusky", + "url": "https://www.ventusky.com/brazil", + "date": "2025-11-16", + "last_updated": "2025-11-16", + "snippet": "Mo clear sky with few clouds 11 \u00b0C \u00b7 Tu mixed with rain showers 13 \u00b0C \u00b7 We overcast 11 \u00b0C \u00b7 Th overcast with rain 14 \u00b0C \u00b7 Fr clear sky with few clouds 10 \u00b0C \u00b7 Sa", + "source": "web" + }, + { + "title": "Interlagos, Paran\u00e1, Brazil Monthly Weather - AccuWeather", + "url": "https://www.accuweather.com/en/br/interlagos/2732265/november-weather/2732265?year=2025", + "date": "2025-10-23", + "last_updated": "2025-10-23", + "snippet": "Get the monthly weather forecast for Interlagos, Paran\u00e1, Brazil, including daily high/low, historical averages, to help you plan ahead.", + "source": "web" + }, + { + "title": "Brazil Weather Month by Month - Travel Information 2025 & 2026", + "url": "https://boutiquetravelexperts.com/brazil/weather/", + "date": "2025-01-02", + "last_updated": "2025-11-13", + "snippet": "The dry season in the south runs from March to November, whereas December to February are wet and rainy. Best time to see whales in Praia de Rosa is from ...", + "source": "web" + } + ], + "object": "chat.completion", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The weather in southern Brazil in mid-November 2025 is generally **warm and comfortable**, with average daytime temperatures around **24\u00b0C (75\u00b0F)** and nighttime lows around **18\u00b0C (64\u00b0F)**. It is springtime there, with pleasant conditions suitable for outdoor activities and light clothing[1][3].\n\nHowever, November also marks a period with relatively frequent rain, averaging about **15 rainy days** and **119 mm (4.7 inches) of precipitation** in the month, meaning around 50% of the days may have some rainfall. Rain tends to occur intermittently rather than continuous heavy storms[1][3].\n\nDaylight is about **13 hours** long, and the sea temperature in coastal areas is around **22\u00b0C (71 \u00b0F)**, cool but comfortable for swimming[1].\n\nWind conditions are moderate, with an average wind scale of 4 (on a general scale), and UV index can be high during sunny periods[1][4].\n\nIn summary:\n\n| Aspect | Details |\n|------------------|--------------------------------|\n| Temperature | ~24\u00b0C (75\u00b0F) day, ~18\u00b0C (64\u00b0F) night |\n| Rainfall | About 15 rainy days; 119 mm (~4.7 in) monthly |\n| Daylight | ~13 hours |\n| Sea temperature | ~22\u00b0C (71\u00b0F) |\n| Wind | Moderate (scale 4) |\n| Weather type | Warm, partly cloudy, intermittent rain, comfortable for outdoor activities |\n\nThus, southern Brazil in November is warm and partly rainy, with pleasant temperatures and a mix of sun and showers typical for the spring season[1][3][4]." + }, + "delta": { + "role": "assistant", + "content": "" + }, + "finish_reason": "stop" + } + ] +} \ No newline at end of file diff --git a/tests/Fixtures/perplexity/structured-1.json b/tests/Fixtures/perplexity/structured-1.json new file mode 100644 index 000000000..2321f3265 --- /dev/null +++ b/tests/Fixtures/perplexity/structured-1.json @@ -0,0 +1,177 @@ +{ + "id": "68662390-4f30-4205-848f-c2397e23233f", + "model": "sonar", + "created": 1763330689, + "usage": { + "prompt_tokens": 249, + "completion_tokens": 788, + "total_tokens": 1037, + "search_context_size": "low", + "cost": { + "input_tokens_cost": 0.0, + "output_tokens_cost": 0.001, + "request_cost": 0.005, + "total_cost": 0.006 + } + }, + "citations": [ + "https://www.daemonology.net/hn-daily/2025-10-16.html", + "https://news.ycombinator.com/item?id=37427127", + "https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html", + "https://news.ycombinator.com/item?id=33748363", + "https://hackernewsrecap.buzzsprout.com", + "https://podcasts.apple.com/us/podcast/hacker-news-recap/id1681571416", + "https://news.ycombinator.com/front?day=2025-11-16", + "https://www.hntoplinks.com/year", + "https://news.ycombinator.com/item?id=45944870", + "https://github.com/headllines/hackernews-daily", + "https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html", + "https://hackernews.betacat.io", + "https://news.ycombinator.com/item?id=45893004", + "https://news.ycombinator.com/best", + "https://www.hntoplinks.com", + "https://news.ycombinator.com/item?id=45918802" + ], + "search_results": [ + { + "title": "Daily Hacker News for 2025-10-16 - daemonology.net", + "url": "https://www.daemonology.net/hn-daily/2025-10-16.html", + "date": "2025-10-16", + "last_updated": "2025-10-27", + "snippet": "Daily Hacker News for 2025-10-16. The 10 highest-rated articles on Hacker News on October 16, 2025 which have not appeared on any previous Hacker News Daily ...", + "source": "web" + }, + { + "title": "HackYourNews \u2013 AI summaries of the top HN stories | Hacker News", + "url": "https://news.ycombinator.com/item?id=37427127", + "date": "2023-09-07", + "last_updated": "2025-10-14", + "snippet": "HackYourNews uses OpenAI's gpt-3.5-turbo to summarize the destination article as well as the comments section. Summarization of the article is ...", + "source": "web" + }, + { + "title": "Weekly Recap: Hyper-V Malware, Malicious AI Bots, RDP Exploits ...", + "url": "https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html", + "date": "2025-11-10", + "last_updated": "2025-11-16", + "snippet": "Explore this week's top cyber stories: stealthy virtual machine attacks, AI side-channel leaks, spyware on Samsung phones, ...", + "source": "web" + }, + { + "title": "Show HN: Open Source Bot That Summarizes Top Hacker News ...", + "url": "https://news.ycombinator.com/item?id=33748363", + "date": "2022-11-26", + "last_updated": "2025-10-16", + "snippet": "HN Summary is an open source bot which sumarizes top stories on Hacker News and publishes the summaries to a Telegram channel.", + "source": "web" + }, + { + "title": "Hacker News Recap", + "url": "https://hackernewsrecap.buzzsprout.com", + "date": "2025-11-15", + "last_updated": "2025-11-16", + "snippet": "November 15th, 2025 | Our investigation into the suspicious pressure on Archive.today. This is a recap of the top 10 posts on Hacker News on November 15, 2025.", + "source": "web" + }, + { + "title": "Hacker News Recap - Apple Podcasts", + "url": "https://podcasts.apple.com/us/podcast/hacker-news-recap/id1681571416", + "date": "2025-11-15", + "last_updated": "2025-11-16", + "snippet": "This is a recap of the top 10 posts on Hacker News on November 10, 2025. ... The summaries get straight to the point, first summarizing the news, and then ...", + "source": "web" + }, + { + "title": "2025-11-16 front | Hacker News", + "url": "https://news.ycombinator.com/front?day=2025-11-16", + "snippet": "Hacker News \u00b7 1. AirPods libreated from Apple's ecosystem (github.com/kavishdevar) \u00b7 2. When UPS charged me a $684 tariff on $355 of vintage ...", + "source": "web" + }, + { + "title": "Yearly Favorites - HN Top Links - Popular Stories from Hacker News", + "url": "https://www.hntoplinks.com/year", + "date": "2025-08-31", + "last_updated": "2025-11-16", + "snippet": "1. Slack has raised our charges by $195k per year (skyfall. \u00b7 2. Show HN: I made an open-source laptop from scratch (byran.ee) \u00b7 3. Moon (ciechanow. \u00b7 4.", + "source": "web" + }, + { + "title": "The Internet Is No Longer a Safe Haven | Hacker News", + "url": "https://news.ycombinator.com/item?id=45944870", + "date": "2025-11-16", + "last_updated": "2025-11-16", + "snippet": "The internet is no longer a safe haven for software hobbyists. Maybe I've just had bad luck, but since I started hosting my own websites ...", + "source": "web" + }, + { + "title": "headllines/hackernews-daily: Hacker News daily top 10 posts - GitHub", + "url": "https://github.com/headllines/hackernews-daily", + "date": "2020-08-06", + "last_updated": "2025-10-22", + "snippet": "A script fetches top posts on hackernews every day; It opens an issue on this repo and store the headlines; People can subscribe to new issue by watching ...", + "source": "web" + }, + { + "title": "Iranian Hackers Launch 'SpearSpecter' Spy Operation on Defense ...", + "url": "https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html", + "date": "2025-11-14", + "last_updated": "2025-11-15", + "snippet": "Iran's APT42 launches SpearSpecter campaign using TAMECAT malware, targeting defense and government officials.", + "source": "web" + }, + { + "title": "Hacker News Summary - by ChatGPT", + "url": "https://hackernews.betacat.io", + "date": "2025-11-16", + "last_updated": "2025-11-16", + "snippet": "Hacker News Summary leverages AI technology to extract summaries and illustrations from Hacker News posts, providing a seamless news scanning experience.", + "source": "web" + }, + { + "title": "X5.1 solar flare, G4 geomagnetic storm watch | Hacker News", + "url": "https://news.ycombinator.com/item?id=45893004", + "date": "2025-11-11", + "last_updated": "2025-11-12", + "snippet": "A Geomagnetic Disturbance Warning has been issued for 19:25 on 11.11.2025 through 04:00 on 11.12.2025 . A GMD warning of K7 or greater is in ...", + "source": "web" + }, + { + "title": "Top Links - Hacker News", + "url": "https://news.ycombinator.com/best", + "last_updated": "2025-11-16", + "snippet": "Hacker News \u00b7 1. Our investigation into the suspicious pressure on Archive. \u00b7 2. AI World Clocks (brianmoore.com) \u00b7 3. AirPods libreated from Apple's ecosystem ( ...", + "source": "web" + }, + { + "title": "HN Top Links - Popular Stories from Hacker News", + "url": "https://www.hntoplinks.com", + "date": "2025-11-14", + "last_updated": "2025-11-16", + "snippet": "1. Our investigation into the suspicious pressure on Archive. \u00b7 2. AirPods libreated from Apple's ecosystem (github.com) \u00b7 3. TCP, the workhorse of the internet ( ...", + "source": "web" + }, + { + "title": "GPT-5.1 for Developers - Hacker News", + "url": "https://news.ycombinator.com/item?id=45918802", + "date": "2025-11-13", + "last_updated": "2025-11-15", + "snippet": "Claude 4.5 Sonnet definitely struggles with Swift 6.2 Concurrency semantics and has several times gotten itself stuck rather badly. Additionally ...", + "source": "web" + } + ], + "object": "chat.completion", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "{\n \"summaries\": [\n {\n \"title\": \"AirPods liberated from Apple's ecosystem\",\n \"url\": \"https://news.ycombinator.com/item?id=45944870\",\n \"summary\": \"A project on GitHub demonstrates how to free AirPods from Apple's strict ecosystem, allowing more versatile use and customization beyond Apple's limitations.\"\n },\n {\n \"title\": \"When UPS charged me a $684 tariff on $355 of vintage electronics\",\n \"url\": \"https://news.ycombinator.com/item?id=45944760\",\n \"summary\": \"A user shares an experience where UPS unexpectedly imposed a high tariff on a shipment of vintage electronics worth significantly less, discussing the implications of such fees on collectors and sellers.\"\n },\n {\n \"title\": \"Investigation into suspicious pressure on Archive.today\",\n \"url\": \"https://news.ycombinator.com/item?id=45944211\",\n \"summary\": \"Community discussion about an investigation revealing suspicious external pressures aimed at the web archiving service Archive.today, touching on concerns about internet censorship and data preservation.\"\n },\n {\n \"title\": \"Open Source Bot That Summarizes Top Hacker News Stories\",\n \"url\": \"https://news.ycombinator.com/item?id=33748363\",\n \"summary\": \"A Show HN post presents an open source bot that automatically summarizes top Hacker News stories using OpenAI's GPT-3, sending concise summaries to a Telegram channel to enhance content accessibility.\"\n },\n {\n \"title\": \"Weekly Cybersecurity Recap: Hyper-V Malware and AI Side-Channel Leaks\",\n \"url\": \"https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html\",\n \"summary\": \"A summary of the week's top cybersecurity threats including stealthy malware targeting Hyper-V virtual machines, AI side-channel leaks identifying encrypted chat topics, and exploits targeting popular platforms.\"\n },\n {\n \"title\": \"Iranian Hackers Launch 'SpearSpecter' Campaign Targeting Defense Officials\",\n \"url\": \"https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html\",\n \"summary\": \"Report on Iran's APT42 group deploying the TAMECAT malware in the 'SpearSpecter' campaign to spy on defense and government officials, illustrating ongoing geopolitical cyber espionage activities.\"\n },\n {\n \"title\": \"Firefox Expands Fingerprint Protections\",\n \"url\": \"https://news.ycombinator.com/item?id=45888891\",\n \"summary\": \"Firefox has enhanced its browser fingerprinting protections to better safeguard users from tracking and profiling techniques on the web.\"\n },\n {\n \"title\": \"Meta Replaces WhatsApp for Windows with a Web Wrapper\",\n \"url\": \"https://news.ycombinator.com/item?id=45910347\",\n \"summary\": \"Meta has replaced the native WhatsApp Windows app with a web wrapper version, sparking debate about performance and user experience implications.\"\n },\n {\n \"title\": \"Google to Allow Sideloading Android Apps Without Verification\",\n \"url\": \"https://news.ycombinator.com/item?id=45908938\",\n \"summary\": \"Google announced plans to permit users to sideload Android applications without requiring developer verification, raising conversations around app security and user control.\"\n },\n {\n \"title\": \"The Internet Is No Longer a Safe Haven for Software Hobbyists\",\n \"url\": \"https://news.ycombinator.com/item?id=45944870\",\n \"summary\": \"An opinion piece and community reactions reflecting concerns about increasing challenges and risks for hobbyist developers hosting personal projects online.\"\n }\n ]\n}" + }, + "delta": { + "role": "assistant", + "content": "" + }, + "finish_reason": "stop" + } + ] +} \ No newline at end of file diff --git a/tests/Providers/Perplexity/StructuredTest.php b/tests/Providers/Perplexity/StructuredTest.php new file mode 100644 index 000000000..8dcfadcad --- /dev/null +++ b/tests/Providers/Perplexity/StructuredTest.php @@ -0,0 +1,105 @@ +set('prism.providers.perplexity.api_key', env('PERPLEXITY_API_KEY', 'pplx-FJr')); +}); + +it('sends the correct basic request structure', function (): void { + FixtureResponse::fakeResponseSequence('chat/completions', 'perplexity/structured'); + + $response = Prism::structured() + ->using(Provider::Perplexity, 'sonar') + ->withPrompt('Summarize the top 10 posts on Hacker News today') + ->withSchema(new ObjectSchema( + name: 'summaries', + description: 'The summaries of the top posts', + properties: [ + new ArraySchema( + name: 'summaries', + description: 'A list of summaries', + items: new ObjectSchema( + name: 'summary', + description: 'A summary of a single post', + properties: [ + new StringSchema('title', 'The title of the post'), + new StringSchema('url', 'The URL of the post'), + new StringSchema('summary', 'A brief summary of the post'), + ], + requiredFields: ['title', 'url', 'summary'] + ) + ), + ], + requiredFields: ['summaries'] + )) + ->asStructured(); + + expect($response->usage->promptTokens)->toBe(249) + ->and($response->usage->completionTokens)->toBe(788) + ->and($response->usage->cacheWriteInputTokens)->toBeNull() + ->and($response->usage->cacheReadInputTokens)->toBeNull() + ->and($response->meta->id)->toBe('68662390-4f30-4205-848f-c2397e23233f') + ->and($response->meta->model)->toBe('sonar') + ->and($response->structured)->toBe([ + 'summaries' => [ + [ + 'title' => 'AirPods liberated from Apple\'s ecosystem', + 'url' => 'https://news.ycombinator.com/item?id=45944870', + 'summary' => 'A project on GitHub demonstrates how to free AirPods from Apple\'s strict ecosystem, allowing more versatile use and customization beyond Apple\'s limitations.', + ], + [ + 'title' => 'When UPS charged me a $684 tariff on $355 of vintage electronics', + 'url' => 'https://news.ycombinator.com/item?id=45944760', + 'summary' => 'A user shares an experience where UPS unexpectedly imposed a high tariff on a shipment of vintage electronics worth significantly less, discussing the implications of such fees on collectors and sellers.', + ], + [ + 'title' => 'Investigation into suspicious pressure on Archive.today', + 'url' => 'https://news.ycombinator.com/item?id=45944211', + 'summary' => 'Community discussion about an investigation revealing suspicious external pressures aimed at the web archiving service Archive.today, touching on concerns about internet censorship and data preservation.', + ], + [ + 'title' => 'Open Source Bot That Summarizes Top Hacker News Stories', + 'url' => 'https://news.ycombinator.com/item?id=33748363', + 'summary' => 'A Show HN post presents an open source bot that automatically summarizes top Hacker News stories using OpenAI\'s GPT-3, sending concise summaries to a Telegram channel to enhance content accessibility.', + ], + [ + 'title' => 'Weekly Cybersecurity Recap: Hyper-V Malware and AI Side-Channel Leaks', + 'url' => 'https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html', + 'summary' => 'A summary of the week\'s top cybersecurity threats including stealthy malware targeting Hyper-V virtual machines, AI side-channel leaks identifying encrypted chat topics, and exploits targeting popular platforms.', + ], + [ + 'title' => 'Iranian Hackers Launch \'SpearSpecter\' Campaign Targeting Defense Officials', + 'url' => 'https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html', + 'summary' => 'Report on Iran\'s APT42 group deploying the TAMECAT malware in the \'SpearSpecter\' campaign to spy on defense and government officials, illustrating ongoing geopolitical cyber espionage activities.', + ], + [ + 'title' => 'Firefox Expands Fingerprint Protections', + 'url' => 'https://news.ycombinator.com/item?id=45888891', + 'summary' => 'Firefox has enhanced its browser fingerprinting protections to better safeguard users from tracking and profiling techniques on the web.', + ], + [ + 'title' => 'Meta Replaces WhatsApp for Windows with a Web Wrapper', + 'url' => 'https://news.ycombinator.com/item?id=45910347', + 'summary' => 'Meta has replaced the native WhatsApp Windows app with a web wrapper version, sparking debate about performance and user experience implications.', + ], + [ + 'title' => 'Google to Allow Sideloading Android Apps Without Verification', + 'url' => 'https://news.ycombinator.com/item?id=45908938', + 'summary' => 'Google announced plans to permit users to sideload Android applications without requiring developer verification, raising conversations around app security and user control.', + ], + [ + 'title' => 'The Internet Is No Longer a Safe Haven for Software Hobbyists', + 'url' => 'https://news.ycombinator.com/item?id=45944870', + 'summary' => 'An opinion piece and community reactions reflecting concerns about increasing challenges and risks for hobbyist developers hosting personal projects online.', + ], + ], + ]); +}); diff --git a/tests/Providers/Perplexity/TextTest.php b/tests/Providers/Perplexity/TextTest.php new file mode 100644 index 000000000..a7c3baf96 --- /dev/null +++ b/tests/Providers/Perplexity/TextTest.php @@ -0,0 +1,30 @@ +set('prism.providers.perplexity.api_key', env('PERPLEXITY_API_KEY', 'pplx-FJr')); +}); + +it('generates text with a prompt', function (): void { + FixtureResponse::fakeResponseSequence('chat/completions', 'perplexity/generate-text-with-a-prompt'); + + $response = Prism::text() + ->using(Provider::Perplexity, 'sonar') + ->withPrompt("How's the weather in southern Brazil?") + ->asText(); + + expect($response->usage->promptTokens)->toBe(8) + ->and($response->usage->completionTokens)->toBe(346) + ->and($response->usage->cacheWriteInputTokens)->toBeNull() + ->and($response->usage->cacheReadInputTokens)->toBeNull() + ->and($response->meta->id)->toBe('cf5283ea-1537-4b16-9c98-86fb223b203b') + ->and($response->meta->model)->toBe('sonar') + ->and($response->text)->toBe( + "The weather in southern Brazil in mid-November 2025 is generally **warm and comfortable**, with average daytime temperatures around **24°C (75°F)** and nighttime lows around **18°C (64°F)**. It is springtime there, with pleasant conditions suitable for outdoor activities and light clothing[1][3].\n\nHowever, November also marks a period with relatively frequent rain, averaging about **15 rainy days** and **119 mm (4.7 inches) of precipitation** in the month, meaning around 50% of the days may have some rainfall. Rain tends to occur intermittently rather than continuous heavy storms[1][3].\n\nDaylight is about **13 hours** long, and the sea temperature in coastal areas is around **22°C (71 °F)**, cool but comfortable for swimming[1].\n\nWind conditions are moderate, with an average wind scale of 4 (on a general scale), and UV index can be high during sunny periods[1][4].\n\nIn summary:\n\n| Aspect | Details |\n|------------------|--------------------------------|\n| Temperature | ~24°C (75°F) day, ~18°C (64°F) night |\n| Rainfall | About 15 rainy days; 119 mm (~4.7 in) monthly |\n| Daylight | ~13 hours |\n| Sea temperature | ~22°C (71°F) |\n| Wind | Moderate (scale 4) |\n| Weather type | Warm, partly cloudy, intermittent rain, comfortable for outdoor activities |\n\nThus, southern Brazil in November is warm and partly rainy, with pleasant temperatures and a mix of sun and showers typical for the spring season[1][3][4]." + ); +}); From 4e76dcc14da0e1fff854b65c1fde409e1a6dc12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 16 Nov 2025 19:45:57 -0300 Subject: [PATCH 05/26] refactor(perplexity): add todos --- .../Perplexity/Concerns/ExtractsAdditionalContent.php | 1 + src/Providers/Perplexity/Handlers/BaseHandler.php | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php index 1068df88f..99e96d694 100644 --- a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php +++ b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php @@ -11,6 +11,7 @@ trait ExtractsAdditionalContent */ protected function extractsAdditionalContent(array $data): array { + // TODO: add reasoning for models that provide it return Arr::whereNotNull([ 'citations' => data_get($data, 'citations'), 'search_results' => data_get($data, 'search_results'), diff --git a/src/Providers/Perplexity/Handlers/BaseHandler.php b/src/Providers/Perplexity/Handlers/BaseHandler.php index 2f9eb4f19..fa1c697fe 100644 --- a/src/Providers/Perplexity/Handlers/BaseHandler.php +++ b/src/Providers/Perplexity/Handlers/BaseHandler.php @@ -19,6 +19,7 @@ class BaseHandler { protected function sendRequest(PendingRequest $client, TextRequest|StructuredRequest $request): HttpResponse { + // TODO: move the payload mapping to a dedicated mapper class $messages = collect($request->messages()) ->map(static function (Message $message): array { $documentMessages = []; @@ -28,6 +29,7 @@ protected function sendRequest(PendingRequest $client, TextRequest|StructuredReq $role = 'user'; $text = $message->text(); + // TODO: handle provided files as URLs if needed $documentMessages = array_map(static fn (Document $content): array => [ 'type' => 'file_url', 'file_url' => [ @@ -78,7 +80,7 @@ protected function sendRequest(PendingRequest $client, TextRequest|StructuredReq 'top_p' => $request->topP(), 'reasoning_effort' => $request->providerOptions('reasoning_effort'), 'web_search_options' => $request->providerOptions('web_search_options'), - + // TODO: check if there are more Perplexity specific options to add ])); return $client->post('/chat/completions', $payload); From ac18eebba3df4b2c327fff2c5d98558b05705c07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:14:54 -0300 Subject: [PATCH 06/26] refactor(perplexity): create media mappers --- .../Perplexity/Maps/DocumentMapper.php | 47 +++++++++++++++++++ src/Providers/Perplexity/Maps/ImageMapper.php | 37 +++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/Providers/Perplexity/Maps/DocumentMapper.php create mode 100644 src/Providers/Perplexity/Maps/ImageMapper.php diff --git a/src/Providers/Perplexity/Maps/DocumentMapper.php b/src/Providers/Perplexity/Maps/DocumentMapper.php new file mode 100644 index 000000000..68764de0c --- /dev/null +++ b/src/Providers/Perplexity/Maps/DocumentMapper.php @@ -0,0 +1,47 @@ + + */ + public function toPayload(): array + { + $fileName = null; + + if ($this->media->isUrl()) { + $url = $this->media->url(); + } else { + $url = "data:{$this->media->mimeType()};base64,{$this->media->base64()}"; + $fileName = $this->media->fileName(); + } + + $payload = [ + 'type' => 'file_url', + 'file_url' => [ + 'url' => $url, + ], + 'file_name' => $fileName, + ]; + + return array_filter($payload); + } + + protected function provider(): string|Provider + { + return Provider::Perplexity; + } + + protected function validateMedia(): bool + { + if ($this->media->isUrl()) { + return true; + } + return $this->media->hasRawContent(); + } +} diff --git a/src/Providers/Perplexity/Maps/ImageMapper.php b/src/Providers/Perplexity/Maps/ImageMapper.php new file mode 100644 index 000000000..60d2f706b --- /dev/null +++ b/src/Providers/Perplexity/Maps/ImageMapper.php @@ -0,0 +1,37 @@ + + */ + public function toPayload(): array + { + $url = $this->media->isUrl() ? $this->media->url() : "data:{$this->media->mimeType()};base64,{$this->media->base64()}"; + + return [ + 'type' => 'image_url', + 'image_url' => [ + 'url' => $url, + ], + ]; + } + + protected function provider(): string|Provider + { + return Provider::Perplexity; + } + + protected function validateMedia(): bool + { + if ($this->media->isUrl()) { + return true; + } + return $this->media->hasRawContent(); + } +} From cdbe3fcb2e9e75425e21e1f414c895188833085b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:15:09 -0300 Subject: [PATCH 07/26] refactor(perplexity): create messages mapper --- .../Perplexity/Maps/MessagesMapper.php | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/Providers/Perplexity/Maps/MessagesMapper.php diff --git a/src/Providers/Perplexity/Maps/MessagesMapper.php b/src/Providers/Perplexity/Maps/MessagesMapper.php new file mode 100644 index 000000000..c5123ad72 --- /dev/null +++ b/src/Providers/Perplexity/Maps/MessagesMapper.php @@ -0,0 +1,117 @@ + $messages + */ + public function __construct( + private array $messages, + ) {} + + /** + * @return array + * + * @throws Exception + */ + public function toPayload(): array + { + // Sort so that 'system' role messages come first in the messages list + usort($this->messages, static function (Message $a, Message $b): int { + $aIsSystem = ($a instanceof SystemMessage) ? 0 : 1; + $bIsSystem = ($b instanceof SystemMessage) ? 0 : 1; + + return $aIsSystem <=> $bIsSystem; + }); + + return array_map( + fn (Message $message): array => match ($message::class) { + UserMessage::class => $this->mapUserMessage($message), + AssistantMessage::class => $this->mapAssistantMessage($message), + SystemMessage::class => $this->mapSystemMessage($message), + default => throw new Exception('Could not map message type '.$message::class), + }, + $this->messages + ); + } + + /** + * @return array + */ + protected function mapUserMessage(UserMessage $message): array + { + return [ + 'role' => 'user', + 'content' => [ + [ + 'type' => 'text', + 'text' => $message->text(), + ], + ...$this->mapImageParts($message->images()), + ...$this->mapDocumentParts($message->documents()), + ], + ]; + } + + /** + * @return array + */ + protected function mapAssistantMessage(AssistantMessage $assistantMessage): array + { + return [ + 'role' => 'assistant', + 'content' => [ + [ + 'type' => 'assistant', + 'text' => $assistantMessage->content, + ], + ], + ]; + } + + /** + * @return array + */ + protected function mapSystemMessage(SystemMessage $systemMessage): array + { + return [ + 'role' => 'system', + 'content' => [ + [ + 'type' => 'system', + 'text' => $systemMessage->content, + ], + ], + ]; + } + + /** + * @param Image[] $parts + * @return array + */ + protected function mapImageParts(array $parts): array + { + return array_map(static fn (Image $image): array => (new ImageMapper($image))->toPayload(), $parts); + } + + /** + * @param Document[] $parts + * @return array + */ + protected function mapDocumentParts(array $parts): array + { + return array_map(static fn (Document $document): array => (new DocumentMapper($document))->toPayload(), $parts); + } +} From 07d539fed8deee03a1ba4cb3f56c7f3d6fca62ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:15:31 -0300 Subject: [PATCH 08/26] refactor(perplexity): move Http handling logic to a concern --- .../Concerns/HandlesHttpRequests.php | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/Providers/Perplexity/Concerns/HandlesHttpRequests.php diff --git a/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php new file mode 100644 index 000000000..72ae4fdd5 --- /dev/null +++ b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php @@ -0,0 +1,57 @@ +post( + '/chat/completions', + $this->buildHttpRequestPayload($request) + ); + } + + /** + * @return array + * + * @throws \Exception + */ + protected function buildHttpRequestPayload(PrismRequest $request): array + { + return array_merge([ + 'model' => $request->model(), + 'messages' => (new MessagesMapper($request->messages()))->toPayload(), + 'max_tokens' => $request->maxTokens(), + ], Arr::whereNotNull([ + 'temperature' => $request->temperature(), + 'top_p' => $request->topP(), + 'top_k' => $request->providerOptions('top_k'), + 'reasoning_effort' => $request->providerOptions('reasoning_effort'), + 'web_search_options' => $request->providerOptions('web_search_options'), + 'search_mode' => $request->providerOptions('search_mode'), + 'language_preference' => $request->providerOptions('language_preference'), + 'search_domain_filter' => $request->providerOptions('search_domain_filter'), + 'return_images' => $request->providerOptions('return_images'), + 'return_related_questions' => $request->providerOptions('return_related_questions'), + 'search_recency_filter' => $request->providerOptions('search_recency_filter'), + 'search_after_date_filter' => $request->providerOptions('search_after_date_filter'), + 'search_before_date_filter' => $request->providerOptions('search_before_date_filter'), + 'last_updated_after_filter' => $request->providerOptions('last_updated_after_filter'), + 'last_updated_before_filter' => $request->providerOptions('last_updated_before_filter'), + 'presence_penalty' => $request->providerOptions('presence_penalty'), + 'frequency_penalty' => $request->providerOptions('frequency_penalty'), + 'disable_search' => $request->providerOptions('disable_search'), + 'enable_search_classifier' => $request->providerOptions('enable_search_classifier'), + 'media_response' => $request->providerOptions('media_response'), + ])); + } +} From 8be1ef89383ac0d1c5a0742f8988f30acc822703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:15:46 -0300 Subject: [PATCH 09/26] refactor(perplexity): use HandleHttpRequests concern --- .../Perplexity/Handlers/BaseHandler.php | 88 ------------------- .../Perplexity/Handlers/Structured.php | 4 +- src/Providers/Perplexity/Handlers/Text.php | 4 +- 3 files changed, 6 insertions(+), 90 deletions(-) delete mode 100644 src/Providers/Perplexity/Handlers/BaseHandler.php diff --git a/src/Providers/Perplexity/Handlers/BaseHandler.php b/src/Providers/Perplexity/Handlers/BaseHandler.php deleted file mode 100644 index fa1c697fe..000000000 --- a/src/Providers/Perplexity/Handlers/BaseHandler.php +++ /dev/null @@ -1,88 +0,0 @@ -messages()) - ->map(static function (Message $message): array { - $documentMessages = []; - $imageMessages = []; - - if ($message instanceof UserMessage) { - $role = 'user'; - $text = $message->text(); - - // TODO: handle provided files as URLs if needed - $documentMessages = array_map(static fn (Document $content): array => [ - 'type' => 'file_url', - 'file_url' => [ - 'url' => $content->base64(), - ], - ], $message->documents()); - - $imageMessages = array_map(static fn (Image $image): array => [ - 'type' => 'image_url', - 'image_url' => [ - 'url' => "data:{$image->mimeType()};base64,{$image->base64()}", - ], - ], $message->images()); - - } elseif ($message instanceof AssistantMessage) { - $role = 'assistant'; - $text = $message->content; - } elseif ($message instanceof SystemMessage) { - $role = 'system'; - $text = $message->content; - } else { - throw new RuntimeException('Could not map message type '.$message::class); - } - - return [ - 'role' => $role, - 'content' => [ - [ - 'type' => 'text', - 'text' => $text, - ], - ...$documentMessages, - ...$imageMessages, - ], - ]; - }) - // Define custom order: system messages are always at the beginning of the list - ->sortBy(static fn (array $message): int => $message['role'] === 'system' ? 0 : 1) - ->values() - ->toArray(); - - $payload = array_merge([ - 'model' => $request->model(), - 'messages' => $messages, - 'max_tokens' => $request->maxTokens(), - ], Arr::whereNotNull([ - 'temperature' => $request->temperature(), - 'top_p' => $request->topP(), - 'reasoning_effort' => $request->providerOptions('reasoning_effort'), - 'web_search_options' => $request->providerOptions('web_search_options'), - // TODO: check if there are more Perplexity specific options to add - ])); - - return $client->post('/chat/completions', $payload); - } -} diff --git a/src/Providers/Perplexity/Handlers/Structured.php b/src/Providers/Perplexity/Handlers/Structured.php index f4de15f9f..85d2b01cf 100644 --- a/src/Providers/Perplexity/Handlers/Structured.php +++ b/src/Providers/Perplexity/Handlers/Structured.php @@ -8,15 +8,17 @@ use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; +use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; use Prism\Prism\Structured\Request as StructuredRequest; use Prism\Prism\Structured\Response as StructuredResponse; use Prism\Prism\ValueObjects\Messages\SystemMessage; -class Structured extends BaseHandler +class Structured { use ExtractsAdditionalContent; use ExtractsMeta; use ExtractsUsage; + use HandlesHttpRequests; public function __construct( protected PendingRequest $client, diff --git a/src/Providers/Perplexity/Handlers/Text.php b/src/Providers/Perplexity/Handlers/Text.php index 41a680b23..b22b62751 100644 --- a/src/Providers/Perplexity/Handlers/Text.php +++ b/src/Providers/Perplexity/Handlers/Text.php @@ -7,14 +7,16 @@ use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; +use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; use Prism\Prism\Text\Request; use Prism\Prism\Text\Response as TextResponse; -class Text extends BaseHandler +class Text { use ExtractsAdditionalContent; use ExtractsMeta; use ExtractsUsage; + use HandlesHttpRequests; public function __construct( protected PendingRequest $client, From 4c157d2f2302b589c3df382a8cd281b4a612455b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:41:04 -0300 Subject: [PATCH 10/26] test(perplexity): testing document mapper --- .../Perplexity/Maps/DocumentMapper.php | 12 +--- .../Perplexity/DocumentMapperTest.php | 57 +++++++++++++++++++ 2 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 tests/Providers/Perplexity/DocumentMapperTest.php diff --git a/src/Providers/Perplexity/Maps/DocumentMapper.php b/src/Providers/Perplexity/Maps/DocumentMapper.php index 68764de0c..2c303f122 100644 --- a/src/Providers/Perplexity/Maps/DocumentMapper.php +++ b/src/Providers/Perplexity/Maps/DocumentMapper.php @@ -12,21 +12,14 @@ class DocumentMapper extends ProviderMediaMapper */ public function toPayload(): array { - $fileName = null; - - if ($this->media->isUrl()) { - $url = $this->media->url(); - } else { - $url = "data:{$this->media->mimeType()};base64,{$this->media->base64()}"; - $fileName = $this->media->fileName(); - } + $url = $this->media->isUrl() ? $this->media->url() : "data:{$this->media->mimeType()};base64,{$this->media->base64()}"; $payload = [ 'type' => 'file_url', 'file_url' => [ 'url' => $url, ], - 'file_name' => $fileName, + 'file_name' => $this->media->fileName(), ]; return array_filter($payload); @@ -42,6 +35,7 @@ protected function validateMedia(): bool if ($this->media->isUrl()) { return true; } + return $this->media->hasRawContent(); } } diff --git a/tests/Providers/Perplexity/DocumentMapperTest.php b/tests/Providers/Perplexity/DocumentMapperTest.php new file mode 100644 index 000000000..7a0230be9 --- /dev/null +++ b/tests/Providers/Perplexity/DocumentMapperTest.php @@ -0,0 +1,57 @@ +assertEquals($mapper->toPayload(), [ + 'type' => 'file_url', + 'file_url' => [ + 'url' => $url, + ], + ]); +}); + +it('maps document from raw content', function (): void { + $base64 = base64_encode('fake-document-content'); + $mimeType = 'application/pdf'; + + $media = new Document(base64: $base64, mimeType: $mimeType); + $mapper = new DocumentMapper(media: $media); + + $this->assertEquals([ + 'type' => 'file_url', + 'file_url' => [ + 'url' => "data:{$mimeType};base64,{$base64}", + ], + ], $mapper->toPayload()); +}); + +it('includes the file name in the payload when it is available', function (): void { + $url = 'https://example.com/document.pdf'; + + $media = new Document(url: $url); + $media->as('document.pdf'); + $mapper = new DocumentMapper(media: $media); + + $this->assertEquals($mapper->toPayload(), [ + 'type' => 'file_url', + 'file_url' => [ + 'url' => $url, + ], + 'file_name' => 'document.pdf', + ]); +}); + +it("doesn't map document with invalid media", function (): void { + $media = new Document; + new DocumentMapper(media: $media); +})->throws(PrismException::class); From 249ab95a6e2eab8162876cbbac4e2293fd9bdee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Thu, 20 Nov 2025 11:41:13 -0300 Subject: [PATCH 11/26] test(perplexity): testing image mapper --- src/Providers/Perplexity/Maps/ImageMapper.php | 1 + .../Providers/Perplexity/ImageMapperTest.php | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/Providers/Perplexity/ImageMapperTest.php diff --git a/src/Providers/Perplexity/Maps/ImageMapper.php b/src/Providers/Perplexity/Maps/ImageMapper.php index 60d2f706b..dd2ce98b7 100644 --- a/src/Providers/Perplexity/Maps/ImageMapper.php +++ b/src/Providers/Perplexity/Maps/ImageMapper.php @@ -32,6 +32,7 @@ protected function validateMedia(): bool if ($this->media->isUrl()) { return true; } + return $this->media->hasRawContent(); } } diff --git a/tests/Providers/Perplexity/ImageMapperTest.php b/tests/Providers/Perplexity/ImageMapperTest.php new file mode 100644 index 000000000..0e3a2d012 --- /dev/null +++ b/tests/Providers/Perplexity/ImageMapperTest.php @@ -0,0 +1,43 @@ +toPayload(); + + expect($payload)->toBe([ + 'type' => 'image_url', + 'image_url' => [ + 'url' => $imageUrl, + ], + ]); +}); + +it('maps image base64 to payload', function (): void { + $base64Data = base64_encode('fake-image-content'); + $mimeType = 'image/jpeg'; + $media = new Image(base64: $base64Data, mimeType: $mimeType); + $mapper = new ImageMapper(media: $media); + + $payload = $mapper->toPayload(); + + expect($payload)->toBe([ + 'type' => 'image_url', + 'image_url' => [ + 'url' => "data:{$mimeType};base64,{$base64Data}", + ], + ]); +}); + +it("doesn't map image with invalid media", function (): void { + $media = new Image; + new ImageMapper(media: $media); +})->throws(PrismException::class); From b0baf95199e3f2614d678c618172755306aae544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 15:17:38 -0300 Subject: [PATCH 12/26] refactor(perplexity): add ExtractsStructuredOutput trait for parsing structured JSON output --- .../Concerns/ExtractsStructuredOutput.php | 42 +++++++++++++ .../Perplexity/Handlers/Structured.php | 26 +------- .../ExtractsStructuredOutputTraitTest.php | 60 +++++++++++++++++++ 3 files changed, 104 insertions(+), 24 deletions(-) create mode 100644 src/Providers/Perplexity/Concerns/ExtractsStructuredOutput.php create mode 100644 tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php diff --git a/src/Providers/Perplexity/Concerns/ExtractsStructuredOutput.php b/src/Providers/Perplexity/Concerns/ExtractsStructuredOutput.php new file mode 100644 index 000000000..e42cb55ea --- /dev/null +++ b/src/Providers/Perplexity/Concerns/ExtractsStructuredOutput.php @@ -0,0 +1,42 @@ +... or ```json ... ``` + * + * @param string $content + * + * @return array + * @throws \JsonException + */ + protected function parseStructuredOutput(string $content): array + { + $str = Str::of($content) + ->trim() + ->when( + static fn (Stringable $str) => $str->contains(''), + static fn (Stringable $str) => $str->after('')->trim() + ) + ->when( + static fn (Stringable $str) => $str->startsWith('```json'), + static fn (Stringable $str) => $str->after('```json')->trim() + ) + ->when( + static fn (Stringable $str) => $str->startsWith('```'), + static fn (Stringable $str) => $str->substr(3)->trim() + ) + ->when( + static fn (Stringable $str) => $str->endsWith('```'), + static fn (Stringable $str) => $str->substr(0, $str->length('UTF-8') - 3)->trim() + ); + + return json_decode($str, associative: true, flags: JSON_THROW_ON_ERROR); + } +} diff --git a/src/Providers/Perplexity/Handlers/Structured.php b/src/Providers/Perplexity/Handlers/Structured.php index 85d2b01cf..fd47bb3da 100644 --- a/src/Providers/Perplexity/Handlers/Structured.php +++ b/src/Providers/Perplexity/Handlers/Structured.php @@ -3,10 +3,10 @@ namespace Prism\Prism\Providers\Perplexity\Handlers; use Illuminate\Http\Client\PendingRequest; -use Illuminate\Support\Str; use Prism\Prism\Enums\FinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; +use Prism\Prism\Providers\Perplexity\Concerns\ExtractsStructuredOutput; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; use Prism\Prism\Structured\Request as StructuredRequest; @@ -17,6 +17,7 @@ class Structured { use ExtractsAdditionalContent; use ExtractsMeta; + use ExtractsStructuredOutput; use ExtractsUsage; use HandlesHttpRequests; @@ -46,27 +47,4 @@ public function handle(StructuredRequest $request): StructuredResponse additionalContent: $this->extractsAdditionalContent($data), ); } - - protected function parseStructuredOutput(string $content): array - { - $stringable = Str::of($content); - - if ($stringable->contains('')) { - $stringable = $stringable->after('')->trim(); - } - - if ($stringable->startsWith('```json')) { - $stringable = $stringable->after('```json')->trim(); - } - - if ($stringable->startsWith('```')) { - $stringable = $stringable->substr(3)->trim(); - } - - if ($stringable->endsWith('```')) { - $stringable = $stringable->substr(0, $stringable->length() - 3)->trim(); - } - - return json_decode($stringable->trim(), associative: true, flags: JSON_THROW_ON_ERROR); - } } diff --git a/tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php b/tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php new file mode 100644 index 000000000..2a9441d00 --- /dev/null +++ b/tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php @@ -0,0 +1,60 @@ +parseStructuredOutput($rawContent); + } + }; + + $this->assertEquals($expectedOutput, (new $testClass)->testParseStructuredOutput($rawContent)); +})->with([ + 'plain json' => [ + 'rawContent' => '{"key1": "value1", "key2": 2, "key3": {"subkey": "subvalue"}}', + 'expectedOutput' => [ + 'key1' => 'value1', + 'key2' => 2, + 'key3' => [ + 'subkey' => 'subvalue', + ], + ], + ], + 'wrapped json' => [ + 'rawContent' => ' + ```json + {"foo": "bar"} + ``` + ', + 'expectedOutput' => ['foo' => 'bar'], + ], + 'plain json with reasoning block' => [ + 'rawContent' => <<<'EOT' + + The model reasoning process + + + { "foo": "bar" } + EOT, + 'expectedOutput' => ['foo' => 'bar'], + ], + 'wrapped json with reasoning block' => [ + 'rawContent' => <<<'EOT' + + The model reasoning process + + + ```json + { "foo": "bar" } + ``` + EOT, + 'expectedOutput' => ['foo' => 'bar'], + ], +]); From 43eb7d61723d6a65b0e8a09d32f2c7698b98f573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 15:50:59 -0300 Subject: [PATCH 13/26] feat(perplexity): add ExtractsReasoning trait for extracting reasoning from content --- .../Perplexity/Concerns/ExtractsReasoning.php | 27 ++++++++++++++ .../Perplexity/ExtractsReasoningTest.php | 36 +++++++++++++++++++ ...t.php => ExtractsStructuredOutputTest.php} | 0 3 files changed, 63 insertions(+) create mode 100644 src/Providers/Perplexity/Concerns/ExtractsReasoning.php create mode 100644 tests/Providers/Perplexity/ExtractsReasoningTest.php rename tests/Providers/Perplexity/{ExtractsStructuredOutputTraitTest.php => ExtractsStructuredOutputTest.php} (100%) diff --git a/src/Providers/Perplexity/Concerns/ExtractsReasoning.php b/src/Providers/Perplexity/Concerns/ExtractsReasoning.php new file mode 100644 index 000000000..eaa808c81 --- /dev/null +++ b/src/Providers/Perplexity/Concerns/ExtractsReasoning.php @@ -0,0 +1,27 @@ +reasoning or ```json ... ``` + * + * @param string $content + * + * @return string|null + * @throws \JsonException + */ + protected function extractsReasoning(string $content): ?string + { + $str = Str::of($content); + if (! $str->contains('')) { + return null; + } + + return $str->between('', '')->trim()->toString(); + } +} diff --git a/tests/Providers/Perplexity/ExtractsReasoningTest.php b/tests/Providers/Perplexity/ExtractsReasoningTest.php new file mode 100644 index 000000000..7a4e35d00 --- /dev/null +++ b/tests/Providers/Perplexity/ExtractsReasoningTest.php @@ -0,0 +1,36 @@ +extractsReasoning($rawContent); + } + }; + + $this->assertEquals($expectedOutput, (new $testClass)->testExtractsReasoning($rawContent)); +})->with([ + 'with reasoning block' => [ + 'rawContent' => <<<'EOT' + + The model reasoning process + + + { "foo": "bar" } + EOT, + 'expectedOutput' => 'The model reasoning process', + ], + 'without reasoning block' => [ + 'rawContent' => <<<'EOT' + { "foo": "bar" } + EOT, + 'expectedOutput' => null, + ], +]); diff --git a/tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php b/tests/Providers/Perplexity/ExtractsStructuredOutputTest.php similarity index 100% rename from tests/Providers/Perplexity/ExtractsStructuredOutputTraitTest.php rename to tests/Providers/Perplexity/ExtractsStructuredOutputTest.php From a65bd50d38c93d30f2c0eb43691bd819e91f6760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 16:03:00 -0300 Subject: [PATCH 14/26] refactor(perplexity): merge ExtractsReasoning trait with ExtractsAdditionalContent --- .../Concerns/ExtractsAdditionalContent.php | 21 ++++++ .../Perplexity/Concerns/ExtractsReasoning.php | 27 ------- .../ExtractsAdditionalContentTest.php | 74 +++++++++++++++++++ .../Perplexity/ExtractsReasoningTest.php | 36 --------- 4 files changed, 95 insertions(+), 63 deletions(-) delete mode 100644 src/Providers/Perplexity/Concerns/ExtractsReasoning.php create mode 100644 tests/Providers/Perplexity/ExtractsAdditionalContentTest.php delete mode 100644 tests/Providers/Perplexity/ExtractsReasoningTest.php diff --git a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php index 99e96d694..1a4ffc2ea 100644 --- a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php +++ b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php @@ -3,6 +3,7 @@ namespace Prism\Prism\Providers\Perplexity\Concerns; use Illuminate\Support\Arr; +use Illuminate\Support\Str; trait ExtractsAdditionalContent { @@ -15,6 +16,26 @@ protected function extractsAdditionalContent(array $data): array return Arr::whereNotNull([ 'citations' => data_get($data, 'citations'), 'search_results' => data_get($data, 'search_results'), + 'reasoning' => $this->extractsReasoning(data_get($data, 'choices.{last}.message.content')), ]); } + + /*** + * It extracts the reasoning part from a given string content which might include the reasoning tags. + * e.g reasoning or ```json ... ``` + * + * @param string $content + * + * @return string|null + * @throws \JsonException + */ + protected function extractsReasoning(string $content): ?string + { + $str = Str::of($content); + if (! $str->contains('')) { + return null; + } + + return $str->between('', '')->trim()->toString(); + } } diff --git a/src/Providers/Perplexity/Concerns/ExtractsReasoning.php b/src/Providers/Perplexity/Concerns/ExtractsReasoning.php deleted file mode 100644 index eaa808c81..000000000 --- a/src/Providers/Perplexity/Concerns/ExtractsReasoning.php +++ /dev/null @@ -1,27 +0,0 @@ -reasoning or ```json ... ``` - * - * @param string $content - * - * @return string|null - * @throws \JsonException - */ - protected function extractsReasoning(string $content): ?string - { - $str = Str::of($content); - if (! $str->contains('')) { - return null; - } - - return $str->between('', '')->trim()->toString(); - } -} diff --git a/tests/Providers/Perplexity/ExtractsAdditionalContentTest.php b/tests/Providers/Perplexity/ExtractsAdditionalContentTest.php new file mode 100644 index 000000000..feb854bd0 --- /dev/null +++ b/tests/Providers/Perplexity/ExtractsAdditionalContentTest.php @@ -0,0 +1,74 @@ +extractsReasoning($rawResponse); + } + }; + + $this->assertEquals($expectedOutput, (new $testClass)->testExtractsReasoning($rawResponse)); +})->with([ + 'with reasoning block' => [ + 'rawResponse' => <<<'EOT' + + The model reasoning process + + + { "foo": "bar" } + EOT, + 'expectedOutput' => 'The model reasoning process', + ], + 'without reasoning block' => [ + 'rawResponse' => <<<'EOT' + { "foo": "bar" } + EOT, + 'expectedOutput' => null, + ], +]); + +it('extracts additional content from the response data', function (): void { + $testClass = new class + { + use ExtractsAdditionalContent; + + public function testExtractsAdditionalContent(array $data): array + { + return $this->extractsAdditionalContent($data); + } + }; + + $responseData = [ + 'citations' => ['Citation 1', 'Citation 2'], + 'search_results' => ['Result 1', 'Result 2'], + 'choices' => [ + [ + 'message' => [ + 'content' => <<<'EOT' + + The model reasoning process + + + { "foo": "bar" } + EOT, + ], + ], + ], + ]; + + $expectedOutput = [ + 'citations' => ['Citation 1', 'Citation 2'], + 'search_results' => ['Result 1', 'Result 2'], + 'reasoning' => 'The model reasoning process', + ]; + + $this->assertEquals($expectedOutput, (new $testClass)->testExtractsAdditionalContent($responseData)); +}); diff --git a/tests/Providers/Perplexity/ExtractsReasoningTest.php b/tests/Providers/Perplexity/ExtractsReasoningTest.php deleted file mode 100644 index 7a4e35d00..000000000 --- a/tests/Providers/Perplexity/ExtractsReasoningTest.php +++ /dev/null @@ -1,36 +0,0 @@ -extractsReasoning($rawContent); - } - }; - - $this->assertEquals($expectedOutput, (new $testClass)->testExtractsReasoning($rawContent)); -})->with([ - 'with reasoning block' => [ - 'rawContent' => <<<'EOT' - - The model reasoning process - - - { "foo": "bar" } - EOT, - 'expectedOutput' => 'The model reasoning process', - ], - 'without reasoning block' => [ - 'rawContent' => <<<'EOT' - { "foo": "bar" } - EOT, - 'expectedOutput' => null, - ], -]); From 12b656b15f80ae2f8bbec02943f4199023778e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 16:03:27 -0300 Subject: [PATCH 15/26] refactor(perplexity): remove todo --- .../Perplexity/Concerns/ExtractsAdditionalContent.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php index 1a4ffc2ea..085cff044 100644 --- a/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php +++ b/src/Providers/Perplexity/Concerns/ExtractsAdditionalContent.php @@ -9,10 +9,11 @@ trait ExtractsAdditionalContent { /** * @return array + * + * @throws \JsonException */ protected function extractsAdditionalContent(array $data): array { - // TODO: add reasoning for models that provide it return Arr::whereNotNull([ 'citations' => data_get($data, 'citations'), 'search_results' => data_get($data, 'search_results'), From 99ad084836e925580d4adda3ff429f83b16959ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 16:23:16 -0300 Subject: [PATCH 16/26] feat(perplexity): validating allowed image mime types --- src/Providers/Perplexity/Maps/ImageMapper.php | 14 +++++++++++++- tests/Providers/Perplexity/ImageMapperTest.php | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Providers/Perplexity/Maps/ImageMapper.php b/src/Providers/Perplexity/Maps/ImageMapper.php index dd2ce98b7..78f5c070a 100644 --- a/src/Providers/Perplexity/Maps/ImageMapper.php +++ b/src/Providers/Perplexity/Maps/ImageMapper.php @@ -7,6 +7,14 @@ class ImageMapper extends ProviderMediaMapper { + public const SUPPORTED_MIME_TYPES = [ + 'image/jpeg', + 'image/jpg', + 'image/png', + 'image/gif', + 'image/webp', + ]; + /** * @return array */ @@ -33,6 +41,10 @@ protected function validateMedia(): bool return true; } - return $this->media->hasRawContent(); + if ($this->media->mimeType() && $this->media->hasRawContent()) { + return in_array($this->media->mimeType(), self::SUPPORTED_MIME_TYPES, true); + } + + return false; } } diff --git a/tests/Providers/Perplexity/ImageMapperTest.php b/tests/Providers/Perplexity/ImageMapperTest.php index 0e3a2d012..72d9387a5 100644 --- a/tests/Providers/Perplexity/ImageMapperTest.php +++ b/tests/Providers/Perplexity/ImageMapperTest.php @@ -37,6 +37,20 @@ ]); }); +it('map files with the allowed mime types', function (string $mimeType): void { + $base64Data = base64_encode('fake-image-content'); + $media = new Image(base64: $base64Data, mimeType: $mimeType); + $mapper = new ImageMapper(media: $media); + + expect($mapper->toPayload())->toBeArray(); +})->with(ImageMapper::SUPPORTED_MIME_TYPES); + +it('doesnt map image with unsupported mime type', function (): void { + $base64Data = base64_encode('fake-image-content'); + $media = new Image(base64: $base64Data, mimeType: 'image/bmp'); + new ImageMapper(media: $media); +})->throws(PrismException::class); + it("doesn't map image with invalid media", function (): void { $media = new Image; new ImageMapper(media: $media); From dbb341a4534705d10275250f06bc892ea2866845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sat, 22 Nov 2025 16:34:45 -0300 Subject: [PATCH 17/26] feat(perplexity): validating allowed document mime types --- .../Perplexity/Maps/DocumentMapper.php | 15 +++++++- src/Providers/Perplexity/Maps/ImageMapper.php | 2 +- .../Perplexity/DocumentMapperTest.php | 38 ++++++++++++++++++- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/Providers/Perplexity/Maps/DocumentMapper.php b/src/Providers/Perplexity/Maps/DocumentMapper.php index 2c303f122..ad0e662cd 100644 --- a/src/Providers/Perplexity/Maps/DocumentMapper.php +++ b/src/Providers/Perplexity/Maps/DocumentMapper.php @@ -7,6 +7,15 @@ class DocumentMapper extends ProviderMediaMapper { + public const SUPPORTED_MIME_TYPES = [ + 'application/pdf', + 'application/msword', + 'application/rtf', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'text/plain', + 'text/rtf', + ]; + /** * @return array */ @@ -36,6 +45,10 @@ protected function validateMedia(): bool return true; } - return $this->media->hasRawContent(); + if ($this->media->hasMimeType() && $this->media->hasRawContent()) { + return in_array($this->media->mimeType(), self::SUPPORTED_MIME_TYPES, true); + } + + return false; } } diff --git a/src/Providers/Perplexity/Maps/ImageMapper.php b/src/Providers/Perplexity/Maps/ImageMapper.php index 78f5c070a..a3f11341d 100644 --- a/src/Providers/Perplexity/Maps/ImageMapper.php +++ b/src/Providers/Perplexity/Maps/ImageMapper.php @@ -41,7 +41,7 @@ protected function validateMedia(): bool return true; } - if ($this->media->mimeType() && $this->media->hasRawContent()) { + if ($this->media->hasMimeType() && $this->media->hasRawContent()) { return in_array($this->media->mimeType(), self::SUPPORTED_MIME_TYPES, true); } diff --git a/tests/Providers/Perplexity/DocumentMapperTest.php b/tests/Providers/Perplexity/DocumentMapperTest.php index 7a0230be9..ab67faeb6 100644 --- a/tests/Providers/Perplexity/DocumentMapperTest.php +++ b/tests/Providers/Perplexity/DocumentMapperTest.php @@ -51,7 +51,41 @@ ]); }); -it("doesn't map document with invalid media", function (): void { - $media = new Document; +it('throws exception when document has base64 content but no mime type', function (): void { + $base64 = base64_encode('fake-document-content'); + + $media = new Document(base64: $base64); + new DocumentMapper(media: $media); +})->throws(PrismException::class); + +it('throws exception for various unsupported mime types', function (string $mimeType): void { + $base64 = base64_encode('fake-document-content'); + + $media = new Document(base64: $base64, mimeType: $mimeType); + new DocumentMapper(media: $media); +})->with([ + 'image/jpeg', + 'image/png', + 'video/mp4', + 'audio/mpeg', + 'application/json', + 'application/zip', + 'application/x-tar', + 'text/html', +])->throws(PrismException::class); + +it('successfully maps document with all supported mime types', function (string $mimeType): void { + $base64 = base64_encode('fake-document-content'); + + $media = new Document(base64: $base64, mimeType: $mimeType); + $mapper = new DocumentMapper(media: $media); + + $payload = $mapper->toPayload(); + + expect($payload)->toBeArray(); +})->with(DocumentMapper::SUPPORTED_MIME_TYPES); + +it('throws exception when document has mime type but no raw content', function (): void { + $media = new Document(mimeType: 'application/pdf'); new DocumentMapper(media: $media); })->throws(PrismException::class); From 0002b210b05be82e8473bf77243caa70a93445eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 13:00:30 -0300 Subject: [PATCH 18/26] fix(perplexity): document mapper to only send the encoded bytes without any prefix --- src/Providers/Perplexity/Maps/DocumentMapper.php | 2 +- tests/Providers/Perplexity/DocumentMapperTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Providers/Perplexity/Maps/DocumentMapper.php b/src/Providers/Perplexity/Maps/DocumentMapper.php index ad0e662cd..1c06aea1b 100644 --- a/src/Providers/Perplexity/Maps/DocumentMapper.php +++ b/src/Providers/Perplexity/Maps/DocumentMapper.php @@ -21,7 +21,7 @@ class DocumentMapper extends ProviderMediaMapper */ public function toPayload(): array { - $url = $this->media->isUrl() ? $this->media->url() : "data:{$this->media->mimeType()};base64,{$this->media->base64()}"; + $url = $this->media->isUrl() ? $this->media->url() : $this->media->base64(); $payload = [ 'type' => 'file_url', diff --git a/tests/Providers/Perplexity/DocumentMapperTest.php b/tests/Providers/Perplexity/DocumentMapperTest.php index ab67faeb6..46f9a8baa 100644 --- a/tests/Providers/Perplexity/DocumentMapperTest.php +++ b/tests/Providers/Perplexity/DocumentMapperTest.php @@ -30,7 +30,7 @@ $this->assertEquals([ 'type' => 'file_url', 'file_url' => [ - 'url' => "data:{$mimeType};base64,{$base64}", + 'url' => $base64, ], ], $mapper->toPayload()); }); From e5545db2c9204eab8c24c55319a6d09aec4fcce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 13:19:04 -0300 Subject: [PATCH 19/26] feature(perplexity): using the native structure output with the response_format parameter --- .../Concerns/HandlesHttpRequests.php | 13 ++ .../Perplexity/Handlers/Structured.php | 6 - tests/Fixtures/perplexity/structured-1.json | 177 ++++++++++-------- tests/Providers/Perplexity/StructuredTest.php | 66 +++---- 4 files changed, 144 insertions(+), 118 deletions(-) diff --git a/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php index 72ae4fdd5..13020ccaf 100644 --- a/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php +++ b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php @@ -9,6 +9,7 @@ use Illuminate\Support\Arr; use Prism\Prism\Contracts\PrismRequest; use Prism\Prism\Providers\Perplexity\Maps\MessagesMapper; +use Prism\Prism\Structured\Request as StructuredRequest; trait HandlesHttpRequests { @@ -27,11 +28,23 @@ protected function sendRequest(PendingRequest $client, PrismRequest $request): R */ protected function buildHttpRequestPayload(PrismRequest $request): array { + $responseFormat = null; + + if ($request->is(StructuredRequest::class)) { + $responseFormat = Arr::whereNotNull([ + 'type' => 'json_schema', + 'json_schema' => [ + 'schema' => $request->schema()->toArray(), + ], + ]); + } + return array_merge([ 'model' => $request->model(), 'messages' => (new MessagesMapper($request->messages()))->toPayload(), 'max_tokens' => $request->maxTokens(), ], Arr::whereNotNull([ + 'response_format' => $responseFormat, 'temperature' => $request->temperature(), 'top_p' => $request->topP(), 'top_k' => $request->providerOptions('top_k'), diff --git a/src/Providers/Perplexity/Handlers/Structured.php b/src/Providers/Perplexity/Handlers/Structured.php index fd47bb3da..56cc5cb51 100644 --- a/src/Providers/Perplexity/Handlers/Structured.php +++ b/src/Providers/Perplexity/Handlers/Structured.php @@ -11,7 +11,6 @@ use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; use Prism\Prism\Structured\Request as StructuredRequest; use Prism\Prism\Structured\Response as StructuredResponse; -use Prism\Prism\ValueObjects\Messages\SystemMessage; class Structured { @@ -27,11 +26,6 @@ public function __construct( public function handle(StructuredRequest $request): StructuredResponse { - $request->addMessage(new SystemMessage(sprintf( - "Respond with ONLY JSON (i.e. not in backticks or a code block, with NO CONTENT outside the JSON) that matches the following schema:\n %s", - json_encode($request->schema()->toArray(), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT), - ))); - $response = $this->sendRequest($this->client, $request); $data = $response->json(); diff --git a/tests/Fixtures/perplexity/structured-1.json b/tests/Fixtures/perplexity/structured-1.json index 2321f3265..97315d8d0 100644 --- a/tests/Fixtures/perplexity/structured-1.json +++ b/tests/Fixtures/perplexity/structured-1.json @@ -1,11 +1,11 @@ { - "id": "68662390-4f30-4205-848f-c2397e23233f", + "id": "9d3d3b6a-26ac-40bc-b0d2-4d7a1292b04e", "model": "sonar", - "created": 1763330689, + "created": 1763914566, "usage": { - "prompt_tokens": 249, - "completion_tokens": 788, - "total_tokens": 1037, + "prompt_tokens": 12, + "completion_tokens": 746, + "total_tokens": 758, "search_context_size": "low", "cost": { "input_tokens_cost": 0.0, @@ -15,30 +15,32 @@ } }, "citations": [ - "https://www.daemonology.net/hn-daily/2025-10-16.html", + "https://www.daemonology.net/hn-daily/", "https://news.ycombinator.com/item?id=37427127", - "https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html", + "https://podcasts.apple.com/us/podcast/november-22nd-2025-the-privacy-nightmare-of/id1681571416?i=1000737965528", "https://news.ycombinator.com/item?id=33748363", - "https://hackernewsrecap.buzzsprout.com", + "https://thehackernews.com/2025/11/rondodox-exploits-unpatched-xwiki.html", "https://podcasts.apple.com/us/podcast/hacker-news-recap/id1681571416", - "https://news.ycombinator.com/front?day=2025-11-16", - "https://www.hntoplinks.com/year", - "https://news.ycombinator.com/item?id=45944870", + "https://news.ycombinator.com/item?id=46003144", "https://github.com/headllines/hackernews-daily", - "https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html", - "https://hackernews.betacat.io", - "https://news.ycombinator.com/item?id=45893004", - "https://news.ycombinator.com/best", + "https://news.ycombinator.com/front", + "https://open.spotify.com/show/0wxM2R4roeaOBJclemjWcG", "https://www.hntoplinks.com", - "https://news.ycombinator.com/item?id=45918802" + "https://news.ycombinator.com/item?id=43092504", + "https://news.ycombinator.com/item?id=46006810", + "https://hackernews.betacat.io", + "https://news.ycombinator.com/item?id=45938517", + "https://www.hntoplinks.com/year", + "https://news.ycombinator.com/item?id=45869146", + "https://bestofshowhn.com" ], "search_results": [ { - "title": "Daily Hacker News for 2025-10-16 - daemonology.net", - "url": "https://www.daemonology.net/hn-daily/2025-10-16.html", - "date": "2025-10-16", - "last_updated": "2025-10-27", - "snippet": "Daily Hacker News for 2025-10-16. The 10 highest-rated articles on Hacker News on October 16, 2025 which have not appeared on any previous Hacker News Daily ...", + "title": "Hacker News Daily - daemonology.net", + "url": "https://www.daemonology.net/hn-daily/", + "date": "2025-11-23", + "last_updated": "2025-11-23", + "snippet": "Daily Hacker News for 2025-11-22. The 10 highest-rated articles on Hacker News on November 22, 2025 which have not appeared on any previous Hacker News ...", "source": "web" }, { @@ -46,15 +48,15 @@ "url": "https://news.ycombinator.com/item?id=37427127", "date": "2023-09-07", "last_updated": "2025-10-14", - "snippet": "HackYourNews uses OpenAI's gpt-3.5-turbo to summarize the destination article as well as the comments section. Summarization of the article is ...", + "snippet": "Summary: HackYourNews is a website that uses OpenAI's gpt-3.5-turbo to provide AI summaries of the top Hacker News stories and their comments.", "source": "web" }, { - "title": "Weekly Recap: Hyper-V Malware, Malicious AI Bots, RDP Exploits ...", - "url": "https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html", - "date": "2025-11-10", - "last_updated": "2025-11-16", - "snippet": "Explore this week's top cyber stories: stealthy virtual machine attacks, AI side-channel leaks, spyware on Samsung phones, ...", + "title": "November 22nd, 2025 | The priv\u2026 - Hacker News Recap", + "url": "https://podcasts.apple.com/us/podcast/november-22nd-2025-the-privacy-nightmare-of/id1681571416?i=1000737965528", + "date": "2025-11-23", + "last_updated": "2025-11-23", + "snippet": "This is a recap of the top 10 posts on Hacker News on November 22, 2025. This podcast was generated by wondercraft.ai", "source": "web" }, { @@ -66,96 +68,113 @@ "source": "web" }, { - "title": "Hacker News Recap", - "url": "https://hackernewsrecap.buzzsprout.com", + "title": "RondoDox Exploits Unpatched XWiki Servers to Pull More Devices ...", + "url": "https://thehackernews.com/2025/11/rondodox-exploits-unpatched-xwiki.html", "date": "2025-11-15", - "last_updated": "2025-11-16", - "snippet": "November 15th, 2025 | Our investigation into the suspicious pressure on Archive.today. This is a recap of the top 10 posts on Hacker News on November 15, 2025.", + "last_updated": "2025-11-22", + "snippet": "RondoDox targets unpatched XWiki servers via CVE-2025-24893, driving record exploitation surges in November.", "source": "web" }, { "title": "Hacker News Recap - Apple Podcasts", "url": "https://podcasts.apple.com/us/podcast/hacker-news-recap/id1681571416", - "date": "2025-11-15", - "last_updated": "2025-11-16", - "snippet": "This is a recap of the top 10 posts on Hacker News on November 10, 2025. ... The summaries get straight to the point, first summarizing the news, and then ...", + "date": "2025-11-22", + "last_updated": "2025-11-23", + "snippet": "... top 10 posts on Hacker News on November 20, 2025. This podcast was generated by wondercraft.ai (00:30): Nano Banana Pro Original post: https://news.ycombinator ...", "source": "web" }, { - "title": "2025-11-16 front | Hacker News", - "url": "https://news.ycombinator.com/front?day=2025-11-16", - "snippet": "Hacker News \u00b7 1. AirPods libreated from Apple's ecosystem (github.com/kavishdevar) \u00b7 2. When UPS charged me a $684 tariff on $355 of vintage ...", + "title": "FAWK: LLMs can write a language interpreter | Hacker News", + "url": "https://news.ycombinator.com/item?id=46003144", + "date": "2025-11-22", + "last_updated": "2025-11-21", + "snippet": "People used the same explanation with regard to bash shell scripts or perl (typically more often available on a cluster than python or ruby). I ...", "source": "web" }, { - "title": "Yearly Favorites - HN Top Links - Popular Stories from Hacker News", - "url": "https://www.hntoplinks.com/year", - "date": "2025-08-31", - "last_updated": "2025-11-16", - "snippet": "1. Slack has raised our charges by $195k per year (skyfall. \u00b7 2. Show HN: I made an open-source laptop from scratch (byran.ee) \u00b7 3. Moon (ciechanow. \u00b7 4.", + "title": "headllines/hackernews-daily: Hacker News daily top 10 posts - GitHub", + "url": "https://github.com/headllines/hackernews-daily", + "date": "2020-08-06", + "last_updated": "2025-10-22", + "snippet": "Hacker News daily top 10 posts. Contribute to headllines/hackernews-daily development by creating an account on GitHub.", "source": "web" }, { - "title": "The Internet Is No Longer a Safe Haven | Hacker News", - "url": "https://news.ycombinator.com/item?id=45944870", - "date": "2025-11-16", - "last_updated": "2025-11-16", - "snippet": "The internet is no longer a safe haven for software hobbyists. Maybe I've just had bad luck, but since I started hosting my own websites ...", + "title": "2025-11-22 front - Hacker News", + "url": "https://news.ycombinator.com/front", + "date": "2025-11-22", + "last_updated": "2025-11-23", + "snippet": "11. Original Superman comic becomes the highest-priced comic book ever sold (bbc.com).", "source": "web" }, { - "title": "headllines/hackernews-daily: Hacker News daily top 10 posts - GitHub", - "url": "https://github.com/headllines/hackernews-daily", - "date": "2020-08-06", - "last_updated": "2025-10-22", - "snippet": "A script fetches top posts on hackernews every day; It opens an issue on this repo and store the headlines; People can subscribe to new issue by watching ...", + "title": "Hacker News Highlights | Podcast on Spotify", + "url": "https://open.spotify.com/show/0wxM2R4roeaOBJclemjWcG", + "snippet": "Listen to Hacker News Highlights on Spotify. Daily overview of the Top 10 Hacker News posts. Post and comment summarization by AI.", + "source": "web" + }, + { + "title": "HN Top Links - Popular Stories from Hacker News", + "url": "https://www.hntoplinks.com", + "date": "2025-11-21", + "last_updated": "2025-11-23", + "snippet": "1. The privacy nightmare of browser fingerprinting (kevinboone.me) \u00b7 2. Meta buried 'causal' evidence of social media harm, US court filings allege (reuters.com).", "source": "web" }, { - "title": "Iranian Hackers Launch 'SpearSpecter' Spy Operation on Defense ...", - "url": "https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html", - "date": "2025-11-14", - "last_updated": "2025-11-15", - "snippet": "Iran's APT42 launches SpearSpecter campaign using TAMECAT malware, targeting defense and government officials.", + "title": "Show HN: Hacker News with AI-generated summaries", + "url": "https://news.ycombinator.com/item?id=43092504", + "date": "2025-02-20", + "last_updated": "2025-10-12", + "snippet": "I built this clone of Hacker News to get a quick summary of articles before deciding to read them. Summaries are cached in localStorage. Not useful for links to ...", + "source": "web" + }, + { + "title": "Two minutes on a porch, a misunderstanding and a gunshot killed a ...", + "url": "https://news.ycombinator.com/item?id=46006810", + "date": "2025-11-21", + "last_updated": "2025-11-22", + "snippet": "Say some young folk is coming back home very wasted after a good night party, and mistakes his house. The fact that it depends on the good ...", "source": "web" }, { "title": "Hacker News Summary - by ChatGPT", "url": "https://hackernews.betacat.io", - "date": "2025-11-16", - "last_updated": "2025-11-16", + "date": "2025-11-23", + "last_updated": "2025-11-23", "snippet": "Hacker News Summary leverages AI technology to extract summaries and illustrations from Hacker News posts, providing a seamless news scanning experience.", "source": "web" }, { - "title": "X5.1 solar flare, G4 geomagnetic storm watch | Hacker News", - "url": "https://news.ycombinator.com/item?id=45893004", - "date": "2025-11-11", - "last_updated": "2025-11-12", - "snippet": "A Geomagnetic Disturbance Warning has been issued for 19:25 on 11.11.2025 through 04:00 on 11.12.2025 . A GMD warning of K7 or greater is in ...", + "title": "Show HN: Continuous Claude \u2013 run Claude Code in a loop", + "url": "https://news.ycombinator.com/item?id=45938517", + "date": "2025-11-17", + "last_updated": "2025-11-17", + "snippet": "Continuous Claude is a CLI wrapper I made that runs Claude Code in an iterative loop with persistent context, automatically driving a ...", "source": "web" }, { - "title": "Top Links - Hacker News", - "url": "https://news.ycombinator.com/best", - "last_updated": "2025-11-16", - "snippet": "Hacker News \u00b7 1. Our investigation into the suspicious pressure on Archive. \u00b7 2. AI World Clocks (brianmoore.com) \u00b7 3. AirPods libreated from Apple's ecosystem ( ...", + "title": "Yearly Favorites - HN Top Links - Popular Stories from Hacker News", + "url": "https://www.hntoplinks.com/year", + "date": "2025-08-31", + "last_updated": "2025-11-23", + "snippet": "HN Top Links Today This Week This Month This Year All | Subscribe \u00b7 Home /. Yearly Favorites. Most Upvoted Most ... \u00a9 2013 - 2025 Hacker News Top Links.", "source": "web" }, { - "title": "HN Top Links - Popular Stories from Hacker News", - "url": "https://www.hntoplinks.com", - "date": "2025-11-14", - "last_updated": "2025-11-16", - "snippet": "1. Our investigation into the suspicious pressure on Archive. \u00b7 2. AirPods libreated from Apple's ecosystem (github.com) \u00b7 3. TCP, the workhorse of the internet ( ...", + "title": "Ask HN: What Are You Working On? (Nov 2025) - Hacker News", + "url": "https://news.ycombinator.com/item?id=45869146", + "date": "2025-11-10", + "last_updated": "2025-11-23", + "snippet": "A time-sorted list of top posts from Hacker News, Tildes, Lobsters, Slashdot, Bear, and some science, tech & programming related subreddits ...", "source": "web" }, { - "title": "GPT-5.1 for Developers - Hacker News", - "url": "https://news.ycombinator.com/item?id=45918802", - "date": "2025-11-13", - "last_updated": "2025-11-15", - "snippet": "Claude 4.5 Sonnet definitely struggles with Swift 6.2 Concurrency semantics and has several times gotten itself stuck rather badly. Additionally ...", + "title": "Best of Hacker News Shown HN of All The Time: 2008 - 2025", + "url": "https://bestofshowhn.com", + "date": "2024-09-12", + "last_updated": "2025-11-23", + "snippet": "Best of Show HN all time \u00b7 #1 Show HN: This up votes itself \u00b7 #2 Show HN: I made an open-source laptop from scratch \u00b7 #3 Show HN: If YouTube had actual channels \u00b7 # ...", "source": "web" } ], @@ -165,7 +184,7 @@ "index": 0, "message": { "role": "assistant", - "content": "{\n \"summaries\": [\n {\n \"title\": \"AirPods liberated from Apple's ecosystem\",\n \"url\": \"https://news.ycombinator.com/item?id=45944870\",\n \"summary\": \"A project on GitHub demonstrates how to free AirPods from Apple's strict ecosystem, allowing more versatile use and customization beyond Apple's limitations.\"\n },\n {\n \"title\": \"When UPS charged me a $684 tariff on $355 of vintage electronics\",\n \"url\": \"https://news.ycombinator.com/item?id=45944760\",\n \"summary\": \"A user shares an experience where UPS unexpectedly imposed a high tariff on a shipment of vintage electronics worth significantly less, discussing the implications of such fees on collectors and sellers.\"\n },\n {\n \"title\": \"Investigation into suspicious pressure on Archive.today\",\n \"url\": \"https://news.ycombinator.com/item?id=45944211\",\n \"summary\": \"Community discussion about an investigation revealing suspicious external pressures aimed at the web archiving service Archive.today, touching on concerns about internet censorship and data preservation.\"\n },\n {\n \"title\": \"Open Source Bot That Summarizes Top Hacker News Stories\",\n \"url\": \"https://news.ycombinator.com/item?id=33748363\",\n \"summary\": \"A Show HN post presents an open source bot that automatically summarizes top Hacker News stories using OpenAI's GPT-3, sending concise summaries to a Telegram channel to enhance content accessibility.\"\n },\n {\n \"title\": \"Weekly Cybersecurity Recap: Hyper-V Malware and AI Side-Channel Leaks\",\n \"url\": \"https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html\",\n \"summary\": \"A summary of the week's top cybersecurity threats including stealthy malware targeting Hyper-V virtual machines, AI side-channel leaks identifying encrypted chat topics, and exploits targeting popular platforms.\"\n },\n {\n \"title\": \"Iranian Hackers Launch 'SpearSpecter' Campaign Targeting Defense Officials\",\n \"url\": \"https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html\",\n \"summary\": \"Report on Iran's APT42 group deploying the TAMECAT malware in the 'SpearSpecter' campaign to spy on defense and government officials, illustrating ongoing geopolitical cyber espionage activities.\"\n },\n {\n \"title\": \"Firefox Expands Fingerprint Protections\",\n \"url\": \"https://news.ycombinator.com/item?id=45888891\",\n \"summary\": \"Firefox has enhanced its browser fingerprinting protections to better safeguard users from tracking and profiling techniques on the web.\"\n },\n {\n \"title\": \"Meta Replaces WhatsApp for Windows with a Web Wrapper\",\n \"url\": \"https://news.ycombinator.com/item?id=45910347\",\n \"summary\": \"Meta has replaced the native WhatsApp Windows app with a web wrapper version, sparking debate about performance and user experience implications.\"\n },\n {\n \"title\": \"Google to Allow Sideloading Android Apps Without Verification\",\n \"url\": \"https://news.ycombinator.com/item?id=45908938\",\n \"summary\": \"Google announced plans to permit users to sideload Android applications without requiring developer verification, raising conversations around app security and user control.\"\n },\n {\n \"title\": \"The Internet Is No Longer a Safe Haven for Software Hobbyists\",\n \"url\": \"https://news.ycombinator.com/item?id=45944870\",\n \"summary\": \"An opinion piece and community reactions reflecting concerns about increasing challenges and risks for hobbyist developers hosting personal projects online.\"\n }\n ]\n}" + "content": "{\"summaries\":[{\"title\":\"The privacy nightmare of browser fingerprinting\",\"url\":\"https://news.ycombinator.com/item?id=46016249\",\"summary\":\"Discusses the serious privacy concerns raised by browser fingerprinting techniques that can uniquely identify users without consent, threatening user anonymity online.\"},{\"title\":\"Meta buried 'causal' evidence of social media harm, US court filings allege\",\"url\":\"https://news.ycombinator.com/item?id=46019817\",\"summary\":\"Allegations claim that Meta hid causal evidence about the harmful impacts of social media on users, as revealed in recent US court documents, sparking debate about corporate transparency and user safety.\"},{\"title\":\"WorldGen \u2013 Text to Immersive 3D Worlds\",\"url\":\"https://news.ycombinator.com/item?id=46018380\",\"summary\":\"Introducing WorldGen, a tool that generates immersive 3D worlds from textual descriptions, leveraging AI to dramatically simplify 3D content creation processes.\"},{\"title\":\"The Mozilla Cycle, Part III: Mozilla Dies in Ignominy\",\"url\":\"https://news.ycombinator.com/item?id=46017910\",\"summary\":\"An opinion piece reflecting on the decline of Mozilla, analyzing how organizational and strategic decisions led to its diminished influence in the web ecosystem.\"},{\"title\":\"'The French people want to save us': help pours in for glassmaker Duralex\",\"url\":\"https://news.ycombinator.com/item?id=46015379\",\"summary\":\"Describes a community-driven effort in France to save the iconic glassmaker Duralex, highlighting public support and national sentiment for preserving local industry.\"},{\"title\":\"RondoDox Exploits Unpatched XWiki Servers to Pull More Devices into Botnet\",\"url\":\"https://thehackernews.com/2025/11/rondodox-exploits-unpatched-xwiki.html\",\"summary\":\"Reports on the rapid exploitation surge of unpatched XWiki servers by the RondoDox botnet starting November 2025, used for launching massive DDoS attacks via HTTP, UDP, and TCP protocols.\"},{\"title\":\"FAWK: LLMs can write a language interpreter\",\"url\":\"https://news.ycombinator.com/item?id=46003144\",\"summary\":\"Community discussion on the capability of large language models (LLMs) to autonomously write language interpreters, with parallels drawn to earlier scripting languages and cluster availability.\"},{\"title\":\"Open Source Bot That Summarizes Top Hacker News Stories\",\"url\":\"https://news.ycombinator.com/item?id=33748363\",\"summary\":\"Announcement of HN Summary, an open-source bot that uses GPT-3 to summarize top Hacker News stories and shares them on Telegram, aiming to enhance content accessibility and experiment with language models.\"},{\"title\":\"HackYourNews \u2013 AI summaries of the top Hacker News stories\",\"url\":\"https://news.ycombinator.com/item?id=37427127\",\"summary\":\"Presentation of HackYourNews, a website leveraging GPT-3.5-turbo to provide AI-generated summaries of the top Hacker News stories and comments, simplifying news consumption and focus.\"},{\"title\":\"November 22nd, 2025 | The privacy nightmare of browser fingerprinting (Podcast)\",\"url\":\"https://podcasts.apple.com/us/podcast/november-22nd-2025-the-privacy-nightmare-of/id1681571416?i=1000737965528\",\"summary\":\"A podcast episode recapping the top Hacker News posts of the day, emphasizing browser fingerprinting\u2019s privacy issues, Meta\u2019s social media harm evidence, AI-driven 3D world generation, and other key topics.\"}]}" }, "delta": { "role": "assistant", diff --git a/tests/Providers/Perplexity/StructuredTest.php b/tests/Providers/Perplexity/StructuredTest.php index 8dcfadcad..647fec938 100644 --- a/tests/Providers/Perplexity/StructuredTest.php +++ b/tests/Providers/Perplexity/StructuredTest.php @@ -42,63 +42,63 @@ )) ->asStructured(); - expect($response->usage->promptTokens)->toBe(249) - ->and($response->usage->completionTokens)->toBe(788) + expect($response->usage->promptTokens)->toBe(12) + ->and($response->usage->completionTokens)->toBe(746) ->and($response->usage->cacheWriteInputTokens)->toBeNull() ->and($response->usage->cacheReadInputTokens)->toBeNull() - ->and($response->meta->id)->toBe('68662390-4f30-4205-848f-c2397e23233f') + ->and($response->meta->id)->toBe('9d3d3b6a-26ac-40bc-b0d2-4d7a1292b04e') ->and($response->meta->model)->toBe('sonar') ->and($response->structured)->toBe([ 'summaries' => [ [ - 'title' => 'AirPods liberated from Apple\'s ecosystem', - 'url' => 'https://news.ycombinator.com/item?id=45944870', - 'summary' => 'A project on GitHub demonstrates how to free AirPods from Apple\'s strict ecosystem, allowing more versatile use and customization beyond Apple\'s limitations.', + 'title' => 'The privacy nightmare of browser fingerprinting', + 'url' => 'https://news.ycombinator.com/item?id=46016249', + 'summary' => 'Discusses the serious privacy concerns raised by browser fingerprinting techniques that can uniquely identify users without consent, threatening user anonymity online.', ], [ - 'title' => 'When UPS charged me a $684 tariff on $355 of vintage electronics', - 'url' => 'https://news.ycombinator.com/item?id=45944760', - 'summary' => 'A user shares an experience where UPS unexpectedly imposed a high tariff on a shipment of vintage electronics worth significantly less, discussing the implications of such fees on collectors and sellers.', + 'title' => 'Meta buried \'causal\' evidence of social media harm, US court filings allege', + 'url' => 'https://news.ycombinator.com/item?id=46019817', + 'summary' => 'Allegations claim that Meta hid causal evidence about the harmful impacts of social media on users, as revealed in recent US court documents, sparking debate about corporate transparency and user safety.', ], [ - 'title' => 'Investigation into suspicious pressure on Archive.today', - 'url' => 'https://news.ycombinator.com/item?id=45944211', - 'summary' => 'Community discussion about an investigation revealing suspicious external pressures aimed at the web archiving service Archive.today, touching on concerns about internet censorship and data preservation.', + 'title' => 'WorldGen – Text to Immersive 3D Worlds', + 'url' => 'https://news.ycombinator.com/item?id=46018380', + 'summary' => 'Introducing WorldGen, a tool that generates immersive 3D worlds from textual descriptions, leveraging AI to dramatically simplify 3D content creation processes.', ], [ - 'title' => 'Open Source Bot That Summarizes Top Hacker News Stories', - 'url' => 'https://news.ycombinator.com/item?id=33748363', - 'summary' => 'A Show HN post presents an open source bot that automatically summarizes top Hacker News stories using OpenAI\'s GPT-3, sending concise summaries to a Telegram channel to enhance content accessibility.', + 'title' => 'The Mozilla Cycle, Part III: Mozilla Dies in Ignominy', + 'url' => 'https://news.ycombinator.com/item?id=46017910', + 'summary' => 'An opinion piece reflecting on the decline of Mozilla, analyzing how organizational and strategic decisions led to its diminished influence in the web ecosystem.', ], [ - 'title' => 'Weekly Cybersecurity Recap: Hyper-V Malware and AI Side-Channel Leaks', - 'url' => 'https://thehackernews.com/2025/11/weekly-recap-hyper-v-malware-malicious.html', - 'summary' => 'A summary of the week\'s top cybersecurity threats including stealthy malware targeting Hyper-V virtual machines, AI side-channel leaks identifying encrypted chat topics, and exploits targeting popular platforms.', + 'title' => '\'The French people want to save us\': help pours in for glassmaker Duralex', + 'url' => 'https://news.ycombinator.com/item?id=46015379', + 'summary' => 'Describes a community-driven effort in France to save the iconic glassmaker Duralex, highlighting public support and national sentiment for preserving local industry.', ], [ - 'title' => 'Iranian Hackers Launch \'SpearSpecter\' Campaign Targeting Defense Officials', - 'url' => 'https://thehackernews.com/2025/11/iranian-hackers-launch-spearspecter-spy.html', - 'summary' => 'Report on Iran\'s APT42 group deploying the TAMECAT malware in the \'SpearSpecter\' campaign to spy on defense and government officials, illustrating ongoing geopolitical cyber espionage activities.', + 'title' => 'RondoDox Exploits Unpatched XWiki Servers to Pull More Devices into Botnet', + 'url' => 'https://thehackernews.com/2025/11/rondodox-exploits-unpatched-xwiki.html', + 'summary' => 'Reports on the rapid exploitation surge of unpatched XWiki servers by the RondoDox botnet starting November 2025, used for launching massive DDoS attacks via HTTP, UDP, and TCP protocols.', ], [ - 'title' => 'Firefox Expands Fingerprint Protections', - 'url' => 'https://news.ycombinator.com/item?id=45888891', - 'summary' => 'Firefox has enhanced its browser fingerprinting protections to better safeguard users from tracking and profiling techniques on the web.', + 'title' => 'FAWK: LLMs can write a language interpreter', + 'url' => 'https://news.ycombinator.com/item?id=46003144', + 'summary' => 'Community discussion on the capability of large language models (LLMs) to autonomously write language interpreters, with parallels drawn to earlier scripting languages and cluster availability.', ], [ - 'title' => 'Meta Replaces WhatsApp for Windows with a Web Wrapper', - 'url' => 'https://news.ycombinator.com/item?id=45910347', - 'summary' => 'Meta has replaced the native WhatsApp Windows app with a web wrapper version, sparking debate about performance and user experience implications.', + 'title' => 'Open Source Bot That Summarizes Top Hacker News Stories', + 'url' => 'https://news.ycombinator.com/item?id=33748363', + 'summary' => 'Announcement of HN Summary, an open-source bot that uses GPT-3 to summarize top Hacker News stories and shares them on Telegram, aiming to enhance content accessibility and experiment with language models.', ], [ - 'title' => 'Google to Allow Sideloading Android Apps Without Verification', - 'url' => 'https://news.ycombinator.com/item?id=45908938', - 'summary' => 'Google announced plans to permit users to sideload Android applications without requiring developer verification, raising conversations around app security and user control.', + 'title' => 'HackYourNews – AI summaries of the top Hacker News stories', + 'url' => 'https://news.ycombinator.com/item?id=37427127', + 'summary' => 'Presentation of HackYourNews, a website leveraging GPT-3.5-turbo to provide AI-generated summaries of the top Hacker News stories and comments, simplifying news consumption and focus.', ], [ - 'title' => 'The Internet Is No Longer a Safe Haven for Software Hobbyists', - 'url' => 'https://news.ycombinator.com/item?id=45944870', - 'summary' => 'An opinion piece and community reactions reflecting concerns about increasing challenges and risks for hobbyist developers hosting personal projects online.', + 'title' => 'November 22nd, 2025 | The privacy nightmare of browser fingerprinting (Podcast)', + 'url' => 'https://podcasts.apple.com/us/podcast/november-22nd-2025-the-privacy-nightmare-of/id1681571416?i=1000737965528', + 'summary' => 'A podcast episode recapping the top Hacker News posts of the day, emphasizing browser fingerprinting’s privacy issues, Meta’s social media harm evidence, AI-driven 3D world generation, and other key topics.', ], ], ]); From ec05f2342ada451e67d944cd4a9fe7575e76d886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 13:19:36 -0300 Subject: [PATCH 20/26] docs(perplexity): create docs page for perplexity --- docs/providers/perplexity.md | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/providers/perplexity.md diff --git a/docs/providers/perplexity.md b/docs/providers/perplexity.md new file mode 100644 index 000000000..1544900b9 --- /dev/null +++ b/docs/providers/perplexity.md @@ -0,0 +1,62 @@ +# Perplexity +## Configuration + +```php +'perplexity' => [ + 'api_key' => env('PERPLEXITY_API_KEY', ''), + 'url' => env('PERPLEXITY_URL', 'https://api.perplexity.ai'), +] +``` + +## Documents + +Sonar models support document analysis through file uploads. You can provide files either as URLs to publicly accessible documents or as base64 encoded bytes. Ask questions about document content, get summaries, extract information, and perform detailed analysis of uploaded files in multiple formats including PDF, DOC, DOCX, TXT, and RTF. +- The maximum file size is 50MB. Files larger than this limit will not be processed +- Ensure provided HTTPS URLs are publicly accessible +Check it out the Perplexity documentation for more details: https://docs.perplexity.ai/guides/file-attachments + +## Images +Sonar models support image analysis through direct image uploads. You can include images in your API requests to support multi-modal conversations alongside text. Images can be provided either as base64 encoded strings within a data URI or as standard HTTPS URLs. +- When using base64 encoding, the API currently only supports images up to 50 MB per image +- Supported formats for base64 encoded images: PNG (image/png), JPEG (image/jpeg), WEBP (image/webp), and GIF (image/gif) +- When using an HTTPS URL, the model will attempt to fetch the image from the provided URL. Ensure the URL is publicly accessible. + +## Considerations +### Message Order + +- Message order matters. Perplexity is strict about the message order being: + +1. `SystemMessage` +2. `UserMessage` +3. `AssistantMessage` + +### Additional fields +Perplexity outputs additional fields in the response, such as `citations`, `search_results`, and the `reasoning` that is extracted from the model response. These fields are exposed in the response object +via the property `additionalFields`. e.g `$response->additionalFields['citations']`. + +### Structured Output + +Perplexity supports two types of structured outputs: JSON Schema and Regex; but currently Prism only supports JSON Schema. + +Here's an example of how to use JSON Schema for structured output: + +```php +use Prism\Prism\Enums\Provider; +use Prism\Prism\Facades\Prism; +use Prism\Prism\Schema\ObjectSchema; +use Prism\Prism\Schema\StringSchema; + +$response = Prism::structured() + ->withSchema(new ObjectSchema( + 'weather_report', + 'Weather forecast with recommendations', + [ + new StringSchema('forecast', 'The weather forecast'), + new StringSchema('recommendation', 'Clothing recommendation') + ], + ['forecast', 'recommendation'] + )) + ->using(Provider::Perplexity, 'sonar-pro') + ->withPrompt('What\'s the weather like and what should I wear?') + ->asStructured(); +``` \ No newline at end of file From 5e37c863538c12a85175c7b7560688f4608f58dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 13:33:54 -0300 Subject: [PATCH 21/26] docs(perplexity): add support table and links --- docs/.vitepress/config.mts | 4 ++++ docs/components/ExceptionSupport.vue | 8 +++++++- docs/components/ProviderSupport.vue | 12 ++++++++++++ docs/getting-started/introduction.md | 1 + docs/providers/perplexity.md | 2 +- 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 51f5c117c..17935000a 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -215,6 +215,10 @@ export default defineConfig({ text: "XAI", link: "/providers/xai", }, + { + text: "Perplexity", + link: "/providers/perplexity", + }, ], }, { diff --git a/docs/components/ExceptionSupport.vue b/docs/components/ExceptionSupport.vue index 33fa1edc0..177de7e5b 100644 --- a/docs/components/ExceptionSupport.vue +++ b/docs/components/ExceptionSupport.vue @@ -164,7 +164,13 @@ export default { rateLimited: Supported, overloaded: Unsupported, tooLarge: Unsupported, - }, + }, + { + name: "Perplexity", + rateLimited: Supported, + overloaded: Unsupported, + tooLarge: Unsupported, + }, ], }; }, diff --git a/docs/components/ProviderSupport.vue b/docs/components/ProviderSupport.vue index bd7e3e3bd..a4a98dfc2 100644 --- a/docs/components/ProviderSupport.vue +++ b/docs/components/ProviderSupport.vue @@ -367,6 +367,18 @@ export default { documents: Unsupported, moderation: Unsupported, }, + { + name: "Perplexity", + text: Supported, + streaming: Supported, + structured: Supported, + embeddings: Unsupported, + image: Unsupported, + "speech-to-text": Unsupported, + "text-to-speech": Unsupported, + tools: Unsupported, + documents: Unsupported, + }, ], }; }, diff --git a/docs/getting-started/introduction.md b/docs/getting-started/introduction.md index bd84074fb..e2d2e0b46 100644 --- a/docs/getting-started/introduction.md +++ b/docs/getting-started/introduction.md @@ -93,6 +93,7 @@ We currently offer first-party support for these leading AI providers: - [Ollama](/providers/ollama.md) - [OpenAI](/providers/openai.md) - [xAI](/providers/xai.md) +- [Perplexity](/providers/perplexity.md) Each provider brings its own strengths to the table, and Prism makes it easy to use them all through a consistent, elegant interface. diff --git a/docs/providers/perplexity.md b/docs/providers/perplexity.md index 1544900b9..b88f59183 100644 --- a/docs/providers/perplexity.md +++ b/docs/providers/perplexity.md @@ -13,7 +13,7 @@ Sonar models support document analysis through file uploads. You can provide files either as URLs to publicly accessible documents or as base64 encoded bytes. Ask questions about document content, get summaries, extract information, and perform detailed analysis of uploaded files in multiple formats including PDF, DOC, DOCX, TXT, and RTF. - The maximum file size is 50MB. Files larger than this limit will not be processed - Ensure provided HTTPS URLs are publicly accessible -Check it out the Perplexity documentation for more details: https://docs.perplexity.ai/guides/file-attachments +Check it out the [documentation for more details](https://docs.perplexity.ai/guides/file-attachments) ## Images Sonar models support image analysis through direct image uploads. You can include images in your API requests to support multi-modal conversations alongside text. Images can be provided either as base64 encoded strings within a data URI or as standard HTTPS URLs. From c7add2b09bf0576062a75543c38cb2a109b40517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 15:47:07 -0300 Subject: [PATCH 22/26] feature(perplexity): add streaming handler --- .../Concerns/HandlesHttpRequests.php | 7 +- src/Providers/Perplexity/Handlers/Stream.php | 231 ++++++++++++++++++ src/Providers/Perplexity/Perplexity.php | 12 + .../perplexity/stream-basic-text-1.sse | 52 ++++ tests/Providers/Perplexity/StreamTest.php | 55 +++++ 5 files changed, 354 insertions(+), 3 deletions(-) create mode 100644 src/Providers/Perplexity/Handlers/Stream.php create mode 100644 tests/Fixtures/perplexity/stream-basic-text-1.sse create mode 100644 tests/Providers/Perplexity/StreamTest.php diff --git a/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php index 13020ccaf..f37f9537b 100644 --- a/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php +++ b/src/Providers/Perplexity/Concerns/HandlesHttpRequests.php @@ -13,11 +13,11 @@ trait HandlesHttpRequests { - protected function sendRequest(PendingRequest $client, PrismRequest $request): Response + protected function sendRequest(PendingRequest $client, PrismRequest $request, bool $stream = false): Response { return $client->post( '/chat/completions', - $this->buildHttpRequestPayload($request) + $this->buildHttpRequestPayload($request, $stream) ); } @@ -26,7 +26,7 @@ protected function sendRequest(PendingRequest $client, PrismRequest $request): R * * @throws \Exception */ - protected function buildHttpRequestPayload(PrismRequest $request): array + protected function buildHttpRequestPayload(PrismRequest $request, bool $stream = false): array { $responseFormat = null; @@ -43,6 +43,7 @@ protected function buildHttpRequestPayload(PrismRequest $request): array 'model' => $request->model(), 'messages' => (new MessagesMapper($request->messages()))->toPayload(), 'max_tokens' => $request->maxTokens(), + 'stream' => $stream, ], Arr::whereNotNull([ 'response_format' => $responseFormat, 'temperature' => $request->temperature(), diff --git a/src/Providers/Perplexity/Handlers/Stream.php b/src/Providers/Perplexity/Handlers/Stream.php new file mode 100644 index 000000000..06e4f468d --- /dev/null +++ b/src/Providers/Perplexity/Handlers/Stream.php @@ -0,0 +1,231 @@ +state = new StreamState; + } + + /** + * @return Generator + */ + public function handle(Request $request): Generator + { + $response = $this->sendRequest($this->client, $request, true); + + yield from $this->processStream($response, $request); + } + + /** + * @return Generator + */ + protected function processStream(Response $response, Request $request): Generator + { + $this->state->reset(); + $text = ''; + + while (! $response->getBody()->eof()) { + $data = $this->parseNextDataLine($response->getBody()); + + if ($data === null) { + continue; + } + + // Emit stream start event if not already started + if ($this->state->shouldEmitStreamStart()) { + $this->state->withMessageId(EventID::generate())->markStreamStarted(); + + yield new StreamStartEvent( + id: EventID::generate(), + timestamp: time(), + model: $request->model(), + provider: ProviderEnum::Perplexity->value + ); + } + + // Handle error chunks per Perplexity streaming guide + if ($this->hasError($data)) { + yield from $this->handleErrors($data, $request); + + // Do not process further content in this chunk + continue; + } + + $content = data_get($data, 'choices.0.delta.content', ''); + + if ($content !== '') { + if ($this->state->shouldEmitTextStart()) { + $this->state->markTextStarted(); + + yield new TextStartEvent( + id: EventID::generate(), + timestamp: time(), + messageId: $this->state->messageId() + ); + } + + $text .= $content; + + yield new TextDeltaEvent( + id: EventID::generate(), + timestamp: time(), + delta: $content, + messageId: $this->state->messageId() + ); + } + + // Check for finish reason + $rawFinishReason = data_get($data, 'choices.0.finish_reason'); + if ($rawFinishReason !== null) { + $finishReason = $this->mapFinishReason($rawFinishReason); + + // Complete text if we have any + if ($text !== '' && $this->state->hasTextStarted()) { + yield new TextCompleteEvent( + id: EventID::generate(), + timestamp: time(), + messageId: $this->state->messageId() + ); + } + + // Extract usage information from the final chunk + $usage = $this->extractUsage($data); + + yield new StreamEndEvent( + id: EventID::generate(), + timestamp: time(), + finishReason: $finishReason, + usage: $usage + ); + } + } + } + + /** + * @return array|null Parsed JSON data or null if line should be skipped + * + * @throws PrismStreamDecodeException + */ + protected function parseNextDataLine(StreamInterface $stream): ?array + { + $line = $this->readLine($stream); + + if (! str_starts_with($line, 'data:')) { + return null; + } + + $line = trim(substr($line, strlen('data: '))); + + if ($line === '' || $line === '[DONE]') { + return null; + } + + try { + return json_decode($line, true, flags: JSON_THROW_ON_ERROR); + } catch (Throwable $e) { + throw new PrismStreamDecodeException(ProviderEnum::Perplexity->value, $e); + } + } + + protected function readLine(StreamInterface $stream): string + { + $buffer = ''; + + while (! $stream->eof()) { + $byte = $stream->read(1); + + if ($byte === '') { + return $buffer; + } + + $buffer .= $byte; + + if ($byte === "\n") { + break; + } + } + + return $buffer; + } + + /** + * @param array $data + */ + protected function hasError(array $data): bool + { + return data_get($data, 'error') !== null; + } + + /** + * @param array $data + * @return Generator + */ + protected function handleErrors(array $data, Request $request): Generator + { + $error = data_get($data, 'error', []); + $type = (string) data_get($error, 'type', 'unknown_error'); + $message = (string) data_get($error, 'message', 'No error message provided'); + + // If rate limit, throw so caller can handle retry semantics + if ($type === 'rate_limit_exceeded') { + throw new PrismRateLimitedException([]); + } + + // Non-rate-limit errors are emitted as events (not recoverable) and we stop processing further content from this chunk + yield new ErrorEvent( + id: EventID::generate(), + timestamp: time(), + errorType: $type, + message: $message, + recoverable: false, + metadata: [ + 'model' => $request->model(), + ] + ); + } + + protected function mapFinishReason(?string $reason): FinishReason + { + return match ($reason) { + 'stop' => FinishReason::Stop, + default => FinishReason::Unknown, + }; + } +} diff --git a/src/Providers/Perplexity/Perplexity.php b/src/Providers/Perplexity/Perplexity.php index f8e732c87..6d7aed91d 100644 --- a/src/Providers/Perplexity/Perplexity.php +++ b/src/Providers/Perplexity/Perplexity.php @@ -2,8 +2,10 @@ namespace Prism\Prism\Providers\Perplexity; +use Generator; use Illuminate\Http\Client\PendingRequest; use Prism\Prism\Concerns\InitializesClient; +use Prism\Prism\Providers\Perplexity\Handlers\Stream; use Prism\Prism\Providers\Perplexity\Handlers\Structured; use Prism\Prism\Providers\Perplexity\Handlers\Text; use Prism\Prism\Providers\Provider; @@ -28,6 +30,7 @@ public function __construct( public readonly string $url, ) {} + #[\Override] public function text(TextRequest $request): TextResponse { $textHandler = new Text($this->client($request->clientOptions(), $request->clientRetry())); @@ -35,6 +38,7 @@ public function text(TextRequest $request): TextResponse return $textHandler->handle($request); } + #[\Override] public function structured(StructuredRequest $request): StructuredResponse { $textHandler = new Structured($this->client($request->clientOptions(), $request->clientRetry())); @@ -42,6 +46,14 @@ public function structured(StructuredRequest $request): StructuredResponse return $textHandler->handle($request); } + #[\Override] + public function stream(TextRequest $request): Generator + { + $handler = new Stream($this->client($request->clientOptions(), $request->clientRetry())); + + return $handler->handle($request); + } + /** * @param array $options * @param array $retry diff --git a/tests/Fixtures/perplexity/stream-basic-text-1.sse b/tests/Fixtures/perplexity/stream-basic-text-1.sse new file mode 100644 index 000000000..b40926d31 --- /dev/null +++ b/tests/Fixtures/perplexity/stream-basic-text-1.sse @@ -0,0 +1,52 @@ +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921963, "usage": {"prompt_tokens": 4, "completion_tokens": 1, "total_tokens": 5, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I"}, "delta": {"role": "assistant", "content": "I"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921963, "usage": {"prompt_tokens": 4, "completion_tokens": 7, "total_tokens": 11, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large"}, "delta": {"role": "assistant", "content": " am Qwen, a large"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921963, "usage": {"prompt_tokens": 4, "completion_tokens": 9, "total_tokens": 13, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language"}, "delta": {"role": "assistant", "content": "-scale language"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 13, "total_tokens": 17, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba"}, "delta": {"role": "assistant", "content": " model developed by Alibaba"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 16, "total_tokens": 20, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tong"}, "delta": {"role": "assistant", "content": " Cloud's Tong"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 18, "total_tokens": 22, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab"}, "delta": {"role": "assistant", "content": "yi Lab"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 24, "total_tokens": 28, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human"}, "delta": {"role": "assistant", "content": ". I am not a human"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 26, "total_tokens": 30, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an"}, "delta": {"role": "assistant", "content": " but an"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 31, "total_tokens": 35, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide"}, "delta": {"role": "assistant", "content": " AI assistant designed to provide"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 33, "total_tokens": 37, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and"}, "delta": {"role": "assistant", "content": " help and"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 36, "total_tokens": 40, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas"}, "delta": {"role": "assistant", "content": " support in areas"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 41, "total_tokens": 45, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture"}, "delta": {"role": "assistant", "content": " such as technology, culture"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 44, "total_tokens": 48, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life"}, "delta": {"role": "assistant", "content": ", and life"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 48, "total_tokens": 52, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer"}, "delta": {"role": "assistant", "content": ". I can answer"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 51, "total_tokens": 55, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create"}, "delta": {"role": "assistant", "content": " questions, create"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 53, "total_tokens": 57, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such"}, "delta": {"role": "assistant", "content": " text such"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 58, "total_tokens": 62, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents"}, "delta": {"role": "assistant", "content": " as stories, official documents"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 62, "total_tokens": 66, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts"}, "delta": {"role": "assistant", "content": ", emails, scripts"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921964, "usage": {"prompt_tokens": 4, "completion_tokens": 65, "total_tokens": 69, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning"}, "delta": {"role": "assistant", "content": ", logical reasoning"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 72, "total_tokens": 76, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as"}, "delta": {"role": "assistant", "content": ", programming, and more, as"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 76, "total_tokens": 80, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions"}, "delta": {"role": "assistant", "content": " well as express opinions"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 81, "total_tokens": 85, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions and play games. I"}, "delta": {"role": "assistant", "content": " and play games. I"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 88, "total_tokens": 92, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions and play games. I am here to assist you anytime."}, "delta": {"role": "assistant", "content": " am here to assist you anytime."}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 92, "total_tokens": 96, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions and play games. I am here to assist you anytime. Is there anything I"}, "delta": {"role": "assistant", "content": " Is there anything I"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 97, "total_tokens": 101, "search_context_size": "low"}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.chunk", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions and play games. I am here to assist you anytime. Is there anything I can help you with?"}, "delta": {"role": "assistant", "content": " can help you with?"}}]} + +data: {"id": "2aac4169-004c-48c6-8da3-bb9d4db974bb", "model": "sonar", "created": 1763921965, "usage": {"prompt_tokens": 4, "completion_tokens": 97, "total_tokens": 101, "search_context_size": "low", "cost": {"input_tokens_cost": 0.0, "output_tokens_cost": 0.0, "request_cost": 0.005, "total_cost": 0.005}}, "citations": ["https://www.simpplr.com/glossary/ai-assistant/", "https://www.youtube.com/watch?v=MTWD52ny0Wk", "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "https://en.wikipedia.org/wiki/Who_Are_You", "https://gmelius.com/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=PNbBDrceCy8", "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "https://www.youtube.com/watch?v=LYb_nqU_43w", "https://www.lindy.ai/blog/what-is-an-ai-assistant", "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "https://aisera.com/chatbots-virtual-assistants-conversational-ai/"], "search_results": [{"title": "What is an AI Assistant? Definition, Types, Productivity - Simpplr", "url": "https://www.simpplr.com/glossary/ai-assistant/", "date": "2025-07-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant is a software application that uses artificial intelligence to perform tasks and provide support in real-time, mimicking human-like interaction.", "source": "web"}, {"title": "The Who Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=MTWD52ny0Wk", "date": "2014-12-30", "last_updated": "2025-07-26", "snippet": "Another Who's epic from \"Who Are You\" (1979), the last Who's album featuring Keith Moon on drums. We miss you Keith. Rest in Peace.", "source": "web"}, {"title": "What is an AI assistant? |Definition from TechTarget", "url": "https://www.techtarget.com/searchcustomerexperience/definition/virtual-assistant-AI-assistant", "date": "2024-12-11", "last_updated": "2025-11-23", "snippet": "An AI assistant, or digital assistant, is software that uses artificial intelligence to understand natural language voice commands and complete tasks for the ...", "source": "web"}, {"title": "Who Are You (song) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You_(song)", "date": "2005-10-13", "last_updated": "2025-11-22", "snippet": "\"Who Are You\" is the title track on the Who's eighth studio album, Who Are You (1978), the last album released by the band before Keith Moon's death in ...", "source": "web"}, {"title": "How Does an AI Assistant Work? | Workgrid", "url": "https://www.workgrid.com/blog/ai-assistant-how-it-works/", "date": "2024-11-03", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as an enterprise copilot, virtual assistant, or digital assistant, is a cutting-edge technology that leverages ...", "source": "web"}, {"title": "Who Are You - Wikipedia", "url": "https://en.wikipedia.org/wiki/Who_Are_You", "date": "2004-10-05", "last_updated": "2025-11-22", "snippet": "Who Are You is the eighth studio album by the English rock band the Who, released on 18 August 1978 [1] by Polydor Records in the United Kingdom", "source": "web"}, {"title": "What Is an AI Assistant? Definition, Types & Best Examples - Gmelius", "url": "https://gmelius.com/blog/what-is-an-ai-assistant", "date": "2025-09-23", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software agent that leverages artificial intelligence, typically natural language processing (NLP), machine learning (ML), and sometimes ...", "source": "web"}, {"title": "The Who - Who Are You (Promo Video) - YouTube", "url": "https://www.youtube.com/watch?v=PNbBDrceCy8", "date": "2019-10-17", "last_updated": "2025-11-23", "snippet": "A promo film for The Who's 1978 single 'Who Are You' from the album of the same name. Filmed at The Who's Ramport Studios in Battersea, ...", "source": "web"}, {"title": "What is an AI Assistant? Everything Businesses Need to Know", "url": "https://www.moveworks.com/us/en/resources/blog/what-is-an-ai-assistant", "date": "2025-03-07", "last_updated": "2025-11-23", "snippet": "An AI assistant is a conversational AI interface using LLMs, NLP, generative AI, and machine learning to perform tasks, understanding text and ...", "source": "web"}, {"title": "Who Are You - YouTube", "url": "https://www.youtube.com/watch?v=LYb_nqU_43w", "date": "2018-08-10", "last_updated": "2025-11-23", "snippet": "Provided to YouTube by Universal Music Group Who Are You \u00b7 The Who Who Are You \u2117 1978 Polydor Ltd. (UK) Released on: 1978-08-18 Producer: ...", "source": "web"}, {"title": "What Is an AI Assistant? 12 Capabilities You Need to Know - Lindy", "url": "https://www.lindy.ai/blog/what-is-an-ai-assistant", "date": "2025-05-19", "last_updated": "2025-11-23", "snippet": "An AI assistant is software using AI, natural language processing, and machine learning to understand natural English and respond helpfully.", "source": "web"}, {"title": "Who Are You - song and lyrics by The Who - Spotify", "url": "https://open.spotify.com/track/3x2bXiU0o4WbsPkawXlfDA", "last_updated": "2023-12-23", "snippet": "Listen to Who Are You on Spotify. Song \u00b7 The Who \u00b7 1978.", "source": "web"}, {"title": "AI Agents vs. AI Assistants - IBM", "url": "https://www.ibm.com/think/topics/ai-agents-vs-ai-assistants", "date": "2024-10-29", "last_updated": "2025-11-23", "snippet": "AI assistants are reactive, performing tasks at request, while AI agents are proactive, working autonomously to achieve a goal.", "source": "web"}, {"title": "The iconic album 'WHO ARE YOU' to be released as a Super Deluxe ...", "url": "https://www.thewho.com/who-are-you-to-be-released-as-a-super-deluxe-edition/", "date": "2025-09-02", "last_updated": "2025-11-23", "snippet": "Initially released in August 1978, WHO ARE YOU marked a significant chapter in The Who's career while a commercial triumph, peaking at No. 2 on ...", "source": "web"}, {"title": "AI Assistants: What They Are How They Help Businesses - Slack", "url": "https://slack.com/blog/transformation/ai-assistants-what-they-do-and-why-you-need-them", "date": "2024-01-01", "last_updated": "2025-11-23", "snippet": "An AI assistant is a software application that uses machine learning, natural language processing, and large language models to provide accurate information and ...", "source": "web"}, {"title": "The Who - Who Are You (Full Album) - YouTube", "url": "https://www.youtube.com/playlist?list=PLBnJv6rImVe-gowVe9xC0YhXpsNoMBsBk", "date": "2025-03-24", "last_updated": "2025-03-26", "snippet": "The Who - Who Are You (Full Album) \u00b7 New Song \u00b7 Had Enough \u00b7 905 \u00b7 Sister Disco \u00b7 Music Must Change \u00b7 Trick Of The Light \u00b7 Guitar And Pen \u00b7 Love Is Coming Down.", "source": "web"}, {"title": "AI Assistant: Boost Personal and Work Productivity - Aisera", "url": "https://aisera.com/chatbots-virtual-assistants-conversational-ai/", "date": "2025-11-14", "last_updated": "2025-11-23", "snippet": "An AI Assistant, also known as a virtual assistant, is a software application that uses artificial intelligence to talk to users in natural language, ...", "source": "web"}], "object": "chat.completion.done", "choices": [{"index": 0, "message": {"role": "assistant", "content": "I am Qwen, a large-scale language model developed by Alibaba Cloud's Tongyi Lab. I am not a human but an AI assistant designed to provide help and support in areas such as technology, culture, and life. I can answer questions, create text such as stories, official documents, emails, scripts, logical reasoning, programming, and more, as well as express opinions and play games. I am here to assist you anytime. Is there anything I can help you with?"}, "delta": {"role": "assistant", "content": ""}, "finish_reason": "stop"}]} + diff --git a/tests/Providers/Perplexity/StreamTest.php b/tests/Providers/Perplexity/StreamTest.php new file mode 100644 index 000000000..d425d4b3b --- /dev/null +++ b/tests/Providers/Perplexity/StreamTest.php @@ -0,0 +1,55 @@ +set('prism.providers.perplexity.api_key', env('PERPLEXITY_API_KEY', 'pplx')); +}); + +it('can generate text with a basic stream', function (): void { + FixtureResponse::fakeStreamResponses('chat/completions', 'perplexity/stream-basic-text'); + + $response = Prism::text() + ->using(Provider::Perplexity, 'sonar') + ->withPrompt('Who are you?') + ->asStream(); + + $text = ''; + $events = []; + + foreach ($response as $event) { + $events[] = $event; + + if ($event instanceof TextDeltaEvent) { + $text .= $event->delta; + echo $text; + } + } + + expect($events)->not->toBeEmpty(); + + /** + * @var StreamEndEvent $lastEvent + */ + $lastEvent = end($events); + + expect($lastEvent)->toBeInstanceOf(StreamEndEvent::class) + ->and($lastEvent->usage)->not->toBeNull() + ->and($lastEvent->usage->promptTokens)->toBe(4) + ->and($lastEvent->usage->completionTokens)->toBe(97) + ->and($text)->not->toBeEmpty(); + + Http::assertSent(static function (Request $request): bool { + $body = json_decode($request->body(), true); + + return $body['stream'] === true; + }); +}); From 7644066742a85df1166433ba0fb088a1ee771b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 15:55:02 -0300 Subject: [PATCH 23/26] refactor(perplexity): move finish reason to a concern --- .../Concerns/ExtractsFinishReason.php | 18 +++++++ src/Providers/Perplexity/Handlers/Stream.php | 7 +-- .../Perplexity/Handlers/Structured.php | 5 +- src/Providers/Perplexity/Handlers/Text.php | 5 +- .../Perplexity/ExtractsFinishReasonTest.php | 53 +++++++++++++++++++ 5 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 src/Providers/Perplexity/Concerns/ExtractsFinishReason.php create mode 100644 tests/Providers/Perplexity/ExtractsFinishReasonTest.php diff --git a/src/Providers/Perplexity/Concerns/ExtractsFinishReason.php b/src/Providers/Perplexity/Concerns/ExtractsFinishReason.php new file mode 100644 index 000000000..3c9e668b9 --- /dev/null +++ b/src/Providers/Perplexity/Concerns/ExtractsFinishReason.php @@ -0,0 +1,18 @@ + FinishReason::Stop, + default => FinishReason::Unknown, + }; + } +} diff --git a/src/Providers/Perplexity/Handlers/Stream.php b/src/Providers/Perplexity/Handlers/Stream.php index 06e4f468d..14c39069d 100644 --- a/src/Providers/Perplexity/Handlers/Stream.php +++ b/src/Providers/Perplexity/Handlers/Stream.php @@ -12,6 +12,7 @@ use Prism\Prism\Exceptions\PrismRateLimitedException; use Prism\Prism\Exceptions\PrismStreamDecodeException; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; +use Prism\Prism\Providers\Perplexity\Concerns\ExtractsFinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; @@ -31,6 +32,7 @@ class Stream { use ExtractsAdditionalContent; + use ExtractsFinishReason; use ExtractsMeta; use ExtractsUsage; use HandlesHttpRequests; @@ -112,9 +114,8 @@ protected function processStream(Response $response, Request $request): Generato } // Check for finish reason - $rawFinishReason = data_get($data, 'choices.0.finish_reason'); - if ($rawFinishReason !== null) { - $finishReason = $this->mapFinishReason($rawFinishReason); + if (data_has($data, 'choices.0.finish_reason')) { + $finishReason = $this->extractsFinishReason($data); // Complete text if we have any if ($text !== '' && $this->state->hasTextStarted()) { diff --git a/src/Providers/Perplexity/Handlers/Structured.php b/src/Providers/Perplexity/Handlers/Structured.php index 56cc5cb51..6a09e6466 100644 --- a/src/Providers/Perplexity/Handlers/Structured.php +++ b/src/Providers/Perplexity/Handlers/Structured.php @@ -3,8 +3,8 @@ namespace Prism\Prism\Providers\Perplexity\Handlers; use Illuminate\Http\Client\PendingRequest; -use Prism\Prism\Enums\FinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; +use Prism\Prism\Providers\Perplexity\Concerns\ExtractsFinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsStructuredOutput; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; @@ -15,6 +15,7 @@ class Structured { use ExtractsAdditionalContent; + use ExtractsFinishReason; use ExtractsMeta; use ExtractsStructuredOutput; use ExtractsUsage; @@ -35,7 +36,7 @@ public function handle(StructuredRequest $request): StructuredResponse steps: collect(), text: $rawContent, structured: $this->parseStructuredOutput($rawContent), - finishReason: FinishReason::Stop, + finishReason: $this->extractsFinishReason($data), usage: $this->extractUsage($data), meta: $this->extractsMeta($data), additionalContent: $this->extractsAdditionalContent($data), diff --git a/src/Providers/Perplexity/Handlers/Text.php b/src/Providers/Perplexity/Handlers/Text.php index b22b62751..1a1646a10 100644 --- a/src/Providers/Perplexity/Handlers/Text.php +++ b/src/Providers/Perplexity/Handlers/Text.php @@ -3,8 +3,8 @@ namespace Prism\Prism\Providers\Perplexity\Handlers; use Illuminate\Http\Client\PendingRequest; -use Prism\Prism\Enums\FinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsAdditionalContent; +use Prism\Prism\Providers\Perplexity\Concerns\ExtractsFinishReason; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsMeta; use Prism\Prism\Providers\Perplexity\Concerns\ExtractsUsage; use Prism\Prism\Providers\Perplexity\Concerns\HandlesHttpRequests; @@ -14,6 +14,7 @@ class Text { use ExtractsAdditionalContent; + use ExtractsFinishReason; use ExtractsMeta; use ExtractsUsage; use HandlesHttpRequests; @@ -30,7 +31,7 @@ public function handle(Request $request): TextResponse return new TextResponse( steps: collect(), text: data_get($data, 'choices.{last}.message.content'), - finishReason: FinishReason::Stop, + finishReason: $this->extractsFinishReason($data), toolCalls: [], toolResults: [], usage: $this->extractUsage($data), diff --git a/tests/Providers/Perplexity/ExtractsFinishReasonTest.php b/tests/Providers/Perplexity/ExtractsFinishReasonTest.php new file mode 100644 index 000000000..51e89456c --- /dev/null +++ b/tests/Providers/Perplexity/ExtractsFinishReasonTest.php @@ -0,0 +1,53 @@ +extractsFinishReason($data); + } + }; + + expect((new $testClass)->testExtractsFinishReason($data))->toBe($expected); +})->with([ + 'stop finish reason' => [ + 'data' => [ + 'choices' => [ + ['finish_reason' => 'stop'], + ], + ], + 'expected' => FinishReason::Stop, + ], + 'length finish reason (unsupported -> unknown)' => [ + 'data' => [ + 'choices' => [ + ['finish_reason' => 'length'], + ], + ], + 'expected' => FinishReason::Unknown, + ], + 'missing finish reason key' => [ + 'data' => [ + 'choices' => [ + ['content' => 'Hello world'], + ], + ], + 'expected' => FinishReason::Unknown, + ], + 'null finish reason value' => [ + 'data' => [ + 'choices' => [ + ['finish_reason' => null], + ], + ], + 'expected' => FinishReason::Unknown, + ], +]); From 9e4ce7c73935b721e19bc80f186e28b769a858c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 16:01:13 -0300 Subject: [PATCH 24/26] refactor(perplexity): remove unused method --- src/Providers/Perplexity/Handlers/Stream.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/Providers/Perplexity/Handlers/Stream.php b/src/Providers/Perplexity/Handlers/Stream.php index 14c39069d..752181f98 100644 --- a/src/Providers/Perplexity/Handlers/Stream.php +++ b/src/Providers/Perplexity/Handlers/Stream.php @@ -7,7 +7,6 @@ use Generator; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; -use Prism\Prism\Enums\FinishReason; use Prism\Prism\Enums\Provider as ProviderEnum; use Prism\Prism\Exceptions\PrismRateLimitedException; use Prism\Prism\Exceptions\PrismStreamDecodeException; @@ -221,12 +220,4 @@ protected function handleErrors(array $data, Request $request): Generator ] ); } - - protected function mapFinishReason(?string $reason): FinishReason - { - return match ($reason) { - 'stop' => FinishReason::Stop, - default => FinishReason::Unknown, - }; - } } From 0a4d2ebd5affffffc6b18db3adf086ca936adafc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salom=C3=A3o?= Date: Sun, 23 Nov 2025 16:03:16 -0300 Subject: [PATCH 25/26] docs(perplexity): add link to Perplexity streaming docs --- src/Providers/Perplexity/Handlers/Stream.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Providers/Perplexity/Handlers/Stream.php b/src/Providers/Perplexity/Handlers/Stream.php index 752181f98..e9d3a8643 100644 --- a/src/Providers/Perplexity/Handlers/Stream.php +++ b/src/Providers/Perplexity/Handlers/Stream.php @@ -21,13 +21,16 @@ use Prism\Prism\Streaming\Events\StreamEvent; use Prism\Prism\Streaming\Events\StreamStartEvent; use Prism\Prism\Streaming\Events\TextCompleteEvent; -use Prism\Prism\Streaming\Events\TextDeltaEvent; // added +use Prism\Prism\Streaming\Events\TextDeltaEvent; use Prism\Prism\Streaming\Events\TextStartEvent; use Prism\Prism\Streaming\StreamState; use Prism\Prism\Text\Request; use Psr\Http\Message\StreamInterface; use Throwable; +/** + * @link https://docs.perplexity.ai/guides/streaming-responses + */ class Stream { use ExtractsAdditionalContent; From 9a638af0e6a893c912ba58a6bca236579909116d Mon Sep 17 00:00:00 2001 From: TJ Miller Date: Mon, 26 Jan 2026 17:57:28 -0500 Subject: [PATCH 26/26] Formatting --- src/PrismManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PrismManager.php b/src/PrismManager.php index ea48f7ddd..cc07aa561 100644 --- a/src/PrismManager.php +++ b/src/PrismManager.php @@ -17,10 +17,10 @@ use Prism\Prism\Providers\Ollama\Ollama; use Prism\Prism\Providers\OpenAI\OpenAI; use Prism\Prism\Providers\OpenRouter\OpenRouter; +use Prism\Prism\Providers\Perplexity\Perplexity; use Prism\Prism\Providers\Provider; use Prism\Prism\Providers\VoyageAI\VoyageAI; use Prism\Prism\Providers\XAI\XAI; -use Prism\Prism\Providers\Perplexity\Perplexity; use RuntimeException; class PrismManager