1
0
cms11/app/Services/Ollama.php

59 lines
1.7 KiB
PHP
Raw Normal View History

<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
class Ollama
{
/**
* Provides a description for specified image(s) using the llava model
* with ollama
*/
public static function describeImage(array $base64JpegImages, ?string $title = null)
{
$prompt = 'Décris cette image en français en une phrase ou deux';
if (!empty($title)) {
$prompt .= ". Le titre de l'article où elle est utilisée est \"" . $title . '"';
}
$result = Http::throw()
->timeout(240)
->withHeader('Authorization', 'Bearer ' . env('OPENWEBUI_KEY'))
->post(sprintf('%s/ollama/api/generate', env('OLLAMA_HOST')), [
'model' => 'llava',
'prompt' => $prompt,
'stream' => false,
'keepalive' => 0,
'images' => $base64JpegImages,
])
->json();
return $result['response'];
}
public static function summarizeText(string $title, string $text)
{
$result = Http::throw()
->timeout(240)
->withHeader('Authorization', 'Bearer ' . env('OPENWEBUI_KEY'))
->post(sprintf('%s/ollama/api/generate', env('OLLAMA_HOST')), [
'model' => 'llama3',
'prompt' => sprintf(
'
Résume le texte suivant en français et en moins de 255 caractères :
# %s
%s',
$title,
$text
),
'stream' => false,
'keepalive' => 0,
])
->json();
return $result['response'];
}
}