Tutorial · Laravel · 27.07.2024

Einen KI-Bot für Laravel erstellen

nach über zehn Jahren in der Webentwicklung und zahlreichen Projekten, die von einfachen Webseiten bis hin zu komplexen Anwendungen reichen, stehe ich heute vor...

Schritt 1: Grundlagen schaffen

Bevor wir mit der eigentlichen Entwicklung beginnen, müssen wir sicherstellen, dass wir alle notwendigen Tools und Bibliotheken installiert haben. Beginnen wir mit der Einrichtung unseres Laravel-Projekts.
shell
composer create-project --prefer-dist laravel/laravel ki-bot-laravel

Schritt 2: KI-Bibliothek auswählen

Für unser Projekt habe ich mich für OpenAI's GPT-3 entschieden, da es eine der fortschrittlichsten und flexibelsten KI-Bibliotheken auf dem Markt ist. Um GPT-3 in Laravel zu verwenden, benötigen wir einen API-Schlüssel von OpenAI.
php
https://beta.openai.com/signup/
Meldet euch an und erstellt einen API-Schlüssel.

Schritt 3: OpenAI-Paket installieren

Um mit der OpenAI-API in Laravel zu kommunizieren, verwenden wir ein PHP-Paket. Hierfür bietet sich openai-php/client an.
shell
composer require openai-php/client

Schritt 4: OpenAI-Client konfigurieren

Wir müssen nun unseren OpenAI-Client in Laravel konfigurieren. Fügen wir zunächst den API-Schlüssel in unsere .env-Datei hinzu:

Erstellen wir dann einen Service-Provider, um den OpenAI-Client zu konfigurieren:

php
OPENAI_API_KEY=your-openai-api-key-here

In der OpenAIServiceProvider.php-Datei fügen wir die Konfiguration hinzu:

shell
php artisan make:provider OpenAIServiceProvider
php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use OpenAI\Client;

class OpenAIServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Client::class, function ($app) {
            return new Client([
                'api_key' => env('OPENAI_API_KEY'),
            ]);
        });
    }

    public function boot()
    {
        //
    }
}
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use OpenAI\Client;

class OpenAIServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Client::class, function ($app) {
            return new Client([
                'api_key' => env('OPENAI_API_KEY'),
            ]);
        });
    }

    public function boot()
    {
        //
    }
}
Registrieren wir diesen Service-Provider in config/app.php:
php
'providers' => [
    // ...
    App\Providers\OpenAIServiceProvider::class,
],

Schritt 5: Erstellen eines Befehls zur Kommunikation mit der KI

Jetzt, wo unser OpenAI-Client konfiguriert ist, erstellen wir einen neuen Artisan-Befehl, um mit der KI zu kommunizieren. Dieser Befehl wird eine Nachricht an die KI senden und die Antwort zurückgeben.

In der ChatWithOpenAI.php-Datei fügen wir den Code hinzu:

shell
php artisan make:command ChatWithOpenAI
php
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use OpenAI\Client;

class ChatWithOpenAI extends Command
{
    protected $signature = 'openai:chat {message}';
    protected $description = 'Send a message to OpenAI and get a response';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle(Client $client)
    {
        $message = $this->argument('message');

        $response = $client->completions()->create([
            'model' => 'text-davinci-003',
            'prompt' => $message,
            'max_tokens' => 150,
        ]);

        $this->info("Response from OpenAI: " . $response['choices'][0]['text']);
    }
}

Schritt 6: Den Befehl testen

Um sicherzustellen, dass alles korrekt funktioniert, testen wir unseren neuen Befehl. Führen wir den Befehl aus und sehen, wie die KI antwortet:
shell
php artisan openai:chat "Erzähl mir einen Witz."
Wenn alles richtig konfiguriert ist, sollte die KI mit einem Witz antworten. Wenn nicht, prüft sorgfältig die API-Schlüssel und die Konfiguration.

Schritt 7: Integration in eine Laravel-Anwendung

Nun wollen wir die Funktionalität in unsere Laravel-Anwendung integrieren. Erstellen wir eine einfache Weboberfläche, über die Benutzer Nachrichten an die KI senden können.
Route hinzufügen: In routes/web.php fügen wir eine neue Route hinzu:
php
use App\Http\Controllers\OpenAIController;

Route::get('/chat', [OpenAIController::class, 'index']);
Route::post('/chat', [OpenAIController::class, 'chat']);

Controller erstellen:

Erstellen wir den OpenAIController:

In OpenAIController.php fügen wir den Code hinzu:

shell
php artisan make:controller OpenAIController
php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use OpenAI\Client;

class OpenAIController extends Controller
{
    public function index()
    {
        return view('chat');
    }

    public function chat(Request $request, Client $client)
    {
        $message = $request->input('message');

        $response = $client->completions()->create([
            'model' => 'text-davinci-003',
            'prompt' => $message,
            'max_tokens' => 150,
        ]);

        return view('chat', ['response' => $response['choices'][0]['text']]);
    }
}

View erstellen:

Erstellen wir eine einfache View-Datei resources/views/chat.blade.php:
blade
<h1>Chat with OpenAI</h1>
    <form method="POST" action="/chat">
        @csrf
        <label for="message">Nachricht:</label>
        <input type="text" id="message" name="message">
        <button type="submit">Senden</button>
    </form>

    @if(isset($response))
        <h2>Antwort:</h2>
        <p>{{ $response }}</p>
    @endif
Mit dieser Anleitung habt ihr die Grundlagen, um einen KI-Bot in eure Laravel-Anwendung zu integrieren. Es war eine aufregende Reise, bei der ich viel gelernt habe – von der Konfiguration des OpenAI-Clients bis hin zur Integration in Laravel. Mit dieser mächtigen Kombination könnt ihr beeindruckende und interaktive Anwendungen erstellen. Bleibt neugierig und probiert es selbst aus! Bei Fragen oder Anregungen stehe ich euch gerne zur Verfügung.
Quelle: https://birdapi.de/blog/tutorials-laravel/einen-ki-bot-fur-laravel-erstellen