Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 43 Nächste Version anzeigen »

  • Sie benötigen eine gültige FH-Benutzerkennung (z.B. ab123456).
  • Sie benötigen eine aktive Internetverbindung.​
  • Sie benötigen die Mitgliedschaft in der Gruppe "LiteLLM_Users"
  • Sie müssen sich im FH-Netz befinden (VPN oder vor Ort im Eduroam)


Einleitung

Mit LiteLLM stellt die FH Münster einen zentralen Dienst bereit, über den verschiedene Sprachmodelle genutzt werden können. Der Zugriff erfolgt nicht direkt mit persönlichen Zugangsdaten, sondern über individuelle API-Schlüssel (LiteLLM Keys). 

Diese Schlüssel ermöglichen es, die bereitgestellten KI-Modelle einfach und sicher in eigenen Anwendungen, Skripten oder Tools einzubinden. Durch die Verwendung von API-Keys wird die Handhabung für Nutzerinnen und Nutzer erleichtert und gleichzeitig ein sicherer Zugang gewährleistet

Verfügbare Modelle und Preise

Alle über LiteLLM verfügbaren Modelle (inkl. Kosten) sind hier abrufbar: https://litellm-models.fh-muenster.de/

Videomodelle werden nicht über Token sondern über Videolänge abgerechnet. Hier geht's zu den Preisen für Google's Veo.

Inhalt

01. Anfrage eines LiteLLM Schlüssels

02. Day 2 Actions

03. API-Informationen

04. Beispiele

05. Budget

06. Feedback

01. Anfrage eines LiteLLM Schlüssels


  • Navigieren Sie zu https://vra02.vmware.fh-muenster.de/ und loggen sich mit Ihrer FH-Kennung und dem zugehörigen Passwort ein.
  • Klicken Sie im Service Broker auf "Consume", tippen Sie im Suchfeld "LiteLLM" ein und bestätigen die Eingabe mit drücken der Enter-Taste. Klicken Sie anschließend unter "LiteLLM" auf "Request".




  • Klicken Sie auf "Submit".


Das Deployment läuft jetzt automatisch. Sie erhalten nach wenigen Sekunden eine Email mit dem generierten Schlüssel. Diesen können Sie jetzt, solange Sie sich im Netz der FH Münster befinden, verwenden. Geben Sie diesen Schlüssel nicht an Andere weiter.


02. Day 2 Actions

02a. Budgetabfrage

Um Ihre aktuellen Budgetinformationen abzufragen (Maximalbudget und bisheriger Verbrauch) können Sie eine Funktion im vRA benutzen. Aktuell bekommt jeder neue Nutzer ein Budget von 30 USD.


  • Gehen Sie im Service Broker auf "Deployments", öffnen die Detailansicht Ihres LiteLLM-Deployments und öffnen das Meatballmenü neben "litellmParent".
  • Hier können Sie jetzt die Funktion "Budgetabfrage" auswählen. Zukünftig hinzugefügte Funktionen werden auch hier zu finden sein.




  • Bestätigen Sie die Sicherheitsabfrage mit "Submit"


Sie erhalten daraufhin eine Email mit Ihren aktuellen Budgetinformationen.



02b. Budget erweitern

Falls Ihr Initialbudget erschöpft ist können Sie eine Erweiterung des Budgets beantragen.


  • Gehen Sie im Service Broker auf "Deployments", öffnen die Detailansicht Ihres LiteLLM-Deployments und öffnen das Meatballmenü neben "litellmParent".
  • Hier können Sie jetzt die Funktion "Budget erweitern" auswählen. 




  • Geben Sie die gewünschte Budgeterweiterung in USD an und bestätigen mit einem Klick auf "Submit".


Ihr Antrag wird dann automatisch an die DVZ geschickt. Sobald der Antrag genehmigt wird, wird die Budgeterweiterung automatisch ausgeführt und Sie bekommen eine Benachrichtigung per Email.

03. API-Informationen


  • Navigieren Sie zu https://litellm.fh-muenster.de/
  • In der Swagger UI können Sie die möglichen Endpunkte einsehen und Details zu der jeweiligen Nutzung einsehen.
  • Wenn Sie gewisse Endpunkte testen möchten, können Sie sich unter "Authorize" mit ihrem LiteLLM Key authorisieren. Sie sind als Nutzer nicht für alle Endpunkte authorisiert. Im Folgenden zeige ich Ihnen welche für Sie von Interesse sein könnten.

03b) Chat completion Prompts


  • Prompts an die verschiedenen LLM Modelle machen Sie an den Endpunkt: /v1/chat/completions


04. Beispiele

04a) Chat-Modelle

Hier ein beispielhafter API Call:

curl https://litellm.fh-muenster.de/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{ "model": "azure/gpt-5", "messages": [ {"role": "user", "content": "Was ist der Sinn des Lebens?"} ] }'


04b) Audio-Transkription

Beispiel für Audio-Transkriptionsmodelle:

curl --location 'https://litellm.fh-muenster.de/v1/audio/transcriptions' --header 'Authorization: Bearer sk-...' --form 'file=@"/home/FHID/filename.mp3"' --form 'model="NOT-EU-azure/gpt-4o-transcribe"'


04c) Video-Modelle

Videoerstellung starten:

curl --location 'https://litellm.fh-muenster.de/v1/videos' -H 'Content-Type: application/json' -H 'Authorization: Bearer sk-...' -d '{"model": "NOT-EU-vertex/veo-3.1-generate-preview", "prompt": "A beautiful sunset over the ocean"}'

In der response gibt es eine Video ID. Die wird benötigt. Beispiel:

"id":"video_bGl0ZWxsbTpjdXN0b21fbGxtX3Byb3ZpZGVyOnZlcnRleF9haTttb2RlbF9pZDp2ZW8tMy4xLWdlbmVyYXRlLXByZXZpZXc7dmlkZW9faWQ6cHJvamVjdHMvZmhtdWVuc3Rlci1raS9sb2NhdGlvbnMvdXMtY2VudHJhbDEvcHVibGlzaGVycy9nb29nbGUvbW9kZWxzL3Zlby0zLjEtZ2VuZXJhdGUtcHJldmlldy9vcGVyYXRpb25zLzIzNzIxMWRjLTViNmEtNDEzYS2efdgegreghxYWFmYzIwZQ=="


Status überprüfen:

curl -k https://litellm.fh-muenster.de/v1/videos/video_bGl0ZWxsbTpjdX... -H "Authorization: Bearer sk-..."


Video herunterladen:

curl -k "https://litellm.fh-muenster.de/v1/videos/video_bGl0ZWxsbTpjdX.../content" -H "Authorization: Bearer sk-..." --output sunset.mp4


Video mit Referenzbild geht nur mit Python script:

import time
import requests

# FH Münster LiteLLM Server
API_BASE = "https://litellm.fh-muenster.de"
API_KEY = "sk-..." # Hier Ihren LiteLLM API Schlüssen einfügen

def generate_and_download_video(prompt, reference_image_path=None):
    headers = {
        "Authorization": f"Bearer {API_KEY}"
    }
    
    # Step 1: Generate video
    print("Starting video generation...")
    
    if reference_image_path:
        with open(reference_image_path, "rb") as f:
            files = {
                "input_reference": f
            }
            data = {
                "model": "NOT-EU-vertex/veo-3.1-generate-preview", # Modell auswählen
                "prompt": prompt
            }
            response = requests.post(
                f"{API_BASE}/v1/videos",
                headers=headers,
                data=data,
                files=files
            )
    else:
        data = {
            "model": "NOT-EU-vertex/veo-3.1-generate-preview", # Modell ohne Referenzbild
            "prompt": prompt
        }
        response = requests.post(
            f"{API_BASE}/v1/videos",
            headers=headers,
            data=data
        )
    
    print(f"Response status: {response.status_code}")
    print(f"Response: {response.text}")
    
    result = response.json()
    video_id = result.get("id")
    
    if not video_id:
        print("Error: No video ID received")
        return None
    
    print(f"Video ID: {video_id}")
    
    # Step 2: Poll for completion
    print("Waiting for video processing...")
    max_attempts = 60
    attempt = 0
    
    while attempt < max_attempts:
        try:
            # Check status
            status_response = requests.get(
                f"{API_BASE}/v1/videos/{video_id}",
                headers=headers
            )
            
            print(f"Status response: {status_response.status_code}")
            
            if status_response.status_code == 200:
                status_data = status_response.json()
                status = status_data.get("status")
                print(f"Attempt {attempt + 1}: Status = {status}")
                
                if status == "completed":
                    print("Video completed! Downloading...")
                    
                    # Try to get content
                    content_response = requests.get(
                        f"{API_BASE}/v1/videos/{video_id}/content",
                        headers=headers
                    )
                    
                    if content_response.status_code == 200:
                        filename = f"video_{video_id[:20]}.mp4"
                        with open(filename, "wb") as f:
                            f.write(content_response.content)
                        print(f"Video saved: {filename}")
                        return filename
                    else:
                        print(f"Content download failed: {content_response.status_code}")
                        print(f"Response: {content_response.text}")
                        
                        # Maybe the video URL is in the status response?
                        print(f"Full status data: {status_data}")
                        return None
                        
                elif status == "failed":
                    print(f"Video generation failed: {status_data}")
                    return None
                    
        except Exception as e:
            print(f"Attempt {attempt + 1}: Error - {e}")
        
        time.sleep(10)
        attempt += 1
    
    print("Timeout: Video generation took too long")
    return None


if __name__ == "__main__":
    result = generate_and_download_video(
        prompt="Make the dog in the reference image bark", # Geben Sie hier Ihren Prompt ein
        reference_image_path="C:/Users/mm123456/Desktop/Veo/reference2.png" # Pfad zum Referenzbild
    )
    
    if result:
        print(f"Success! Video saved as: {result}")
    else:
        print("Failed to generate video")



Weitere mögliche Parameter: https://docs.litellm.ai/docs/providers/vertex_ai/videos#video-generation-parameters


Hier zu beachten:

  • Ersetzen Sie „sk-...“ durch Ihren persönlichen LiteLLM-API-Key.
  • Ersetzen Sie "azure/gpt-5" durch das gewünschte Modell
  • Ersetzen Sie "Was ist der Sinn des Lebens?" durch Ihren gewünschten Prompt
  • bei Videomodellen: Ersetzen Sie "video_..." durch ihre Video ID


05. Budget

Aktuell befindet sich das Projekt noch in der Testphase - daher gibt es noch kein konkretes Budgetmodell. Während der Testphase bekommt jeder Nutzer ein 30$ Budget.


06. Feedback

Feedback, Änderungswünsche und feature requests gerne per Mail an: it-support@fh-muenster.de



  • Keine Stichwörter