Weihnachtliche AI-Spielereien mit OpenAI, Azure und Ollama

Draußen wird es langsam kalt und der Duft von Plätzchen liegt auch wieder in der Luft. Ich würde daher gerne die Gelegenheit nutzen und in diesem Beitrag ein paar einfache, weihnachtliche AI- Spielereien mit euch teilen. Ein Gastbeitrag von unseren langjährigen Leser Thomas Sebastian Jensen.
Kurz zu mir: Mein Name ist Thomas Sebastian, aber seit Kindertagen werde ich nur Sebastian genannt. Ich bin Senior Software Engineer bei der Firma Medialesson in Pforzheim und beschäftige mich beruflich schon seit einiger Zeit intensiv mit AI, welche ich auch in meinem Blog immer wieder vorstelle. Seit kurzem darf ich auch den Titel Microsoft Most Valuable Professional in der Kategorie Developer Technologies tragen.
Ein besonders spannendes Projekt im letzten Jahr war der Bau einer riesigen Klemmbaustein-Stadt aus etwa 125.000 Steinen, 1.000 LED-Lichtern und 360 Metern Kabel, die sich mit Hilfe von AI steuern lässt.
Dazu gehören einfache Befehle wie das Einschalten von Lichtern in einzelnen Gebäuden, aber auch komplexere Funktionen wie das Generieren einer Geschichte. Diese Geschichte wird vorgelesen, während im Hintergrund ein passendes Bild generiert und angezeigt wird. Anschließend kann der Nutzer per Sprache eine der vorgeschlagenen Optionen auswählen, um die Geschichte weiterzuerzählen.
In diesem Beitrag möchte ich euch zeigen, wie ihr mit wenigen Codezeilen selbst kreativ werden könnt – sei es für einen Weihnachtsgruß, eine Weihnachtsgeschichte oder ein leckeres Rezept. Wir nutzen dafür Visual Studio und C#, um eine kleine Konsolenanwendung zu schreiben, die es euch ermöglicht, AI-Modelle von Azure oder OpenAI zu verwenden. Zusätzlich zeige ich euch, wie ihr ein lokales Modell einrichten könnt. Gerade wenn Begriffe wie Azure oder OpenAI fallen, kommt häufig direkt die Frage nach den Kosten auf – denn die Online-Modelle werden in der Regel nicht kostenfrei zur Verfügung gestellt.
Ollama – die lokale Alternative
Beginnen wir mit der lokalen Variante. Hierfür kann ich euch Ollama empfehlen. Der Vorteil von Ollama ist die Unterstützung einer Vielzahl von Modellen, die bequem bei Bedarf geladen werden können. Außerdem bietet Ollama eine API, die mit der OpenAI-Spezifikation kompatibel ist. Das bedeutet, dass wir später mit dem gleichen NuGet-Paket problemlos auf unser Modell zugreifen können.
Um Ollama einzurichten, ladet die passende Version für euer Betriebssystem von ollama.com/download herunter. Unter ollama.com/search findet ihr eine Übersicht aller verfügbaren Modelle. Habt ihr ein passendes Modell gefunden, wie zum Beispiel phi3.5, könnt ihr es einfach über das Terminal herunterladen. Öffnet dazu unter Windows ein Terminal-Fenster und gebt folgenden Befehl ein: ollama pull phi3.5
.
Das Modell wird nun heruntergeladen und steht euch anschließend direkt zur Verfügung.
OpenAI
Wenn ihr in der Demo-Applikation OpenAI, den Betreiber hinter ChatGPT, nutzen möchtet, müsst ihr zunächst ein Konto unter openai.com/signup erstellen. Nach der Registrierung erhaltet ihr einen API-Schlüssel, mit dem ihr auf die OpenAI-Dienste zugreifen könnt. Für die Nutzung der OpenAI-API ist die Hinterlegung einer Zahlungsmethode erforderlich. Die Abrechnung erfolgt basierend auf der Anzahl der verwendeten Tokens. Ein Token entspricht etwa 0,75 Wörtern. Um unvorhergesehene Kosten zu vermeiden, empfiehlt es sich, das automatische Aufladen des Kontos zu deaktivieren. Ihr könnt auch ein monatliches Nutzungslimit festlegen, um die Ausgaben zu kontrollieren. Dies ist besonders wichtig, da die Nutzung der API je nach Anfragevolumen und -komplexität variieren kann.
Azure OpenAI
Microsoft bietet mit dem Azure OpenAI Service eine Möglichkeit, auf die Modelle von OpenAI zuzugreifen. Dafür benötigt ihr eine aktive Azure-Subscription. Im Azure-Portal könnt ihr dann einen eigenen Azure OpenAI Service anlegen und verschiedene Modelle bereitstellen. Für unser Beispiel empfiehlt sich ein Chat-Modell wie GPT-4o Mini. Um unerwartete Kosten zu vermeiden, könnt ihr im Azure-Portal Budgets festlegen und Warnungen einrichten, die euch benachrichtigen, wenn bestimmte Schwellenwerte erreicht werden. Azure OpenAI ermöglicht die Zuweisung von Ratenlimits für eure Bereitstellungen, um die Nutzung zu steuern und Kosten zu kontrollieren.
Let’s code
Öffnet Visual Studio und erstellt eine neue Konsolenanwendung mit .NET 9. Anschließend fügt die folgenden NuGet-Pakete hinzu:
- Spectre.Console: Ermöglicht erweiterte Styling-Optionen in der Konsolenanwendung.
- Azure.AI.OpenAI: Bietet Zugriff auf die Azure OpenAI-Dienste.
- Microsoft.Extensions.AI: Stellt einheitliche Abstraktionen für die Integration verschiedener AI-Dienste bereit.
- Microsoft.Extensions.AI.Ollama: Ermöglicht die Nutzung von Ollama-Modellen über die Microsoft.Extensions.AI-Abstraktionen.
- Microsoft.Extensions.AI.OpenAI: Erleichtert den Zugriff auf OpenAI-Modelle durch die Microsoft.Extensions.AI-Abstraktionen.
Diese Pakete ermöglichen es, verschiedene AI-Modelle unterschiedlicher Anbieter in eurer Anwendung zu integrieren. Zu beachten ist, dass der Zugriff auf Azure OpenAI nur über das Hinzufügen des Paketes Azure.AI.OpenAI möglich ist. Ein entsprechendes Paket mit dem Präfix Microsoft.Extensions.AI gibt es nicht.
Hinweis: Stellt sicher, dass ihr die aktuellen Versionen dieser Pakete verwendet, um von den neuesten Funktionen und Sicherheitsupdates zu profitieren.
Der vollständige Quellcode steht auf GitHub zur Verfügung. In diesem Beitrag zeige ich euch nur ausgewählte Codeausschnitte, um den Fokus auf die wesentlichen Punkte zu legen und den Beitrag kompakt zu halten. Wir konzentrieren uns hier nämlich auf unsere kleinen weihnachtlichen AI-Spielereien.
Die zentrale Logik, die uns interessiert, habe ich in eine Klasse namens ChristmasHelper ausgelagert. Unser erstes Szenario ist das Erstellen einer Grußbotschaft. Dafür implementieren wir eine Methode namens GenerateChristmasGreetingAsync.
Zunächst fragen wir den Nutzer nach einem Namen und der gewünschten Sprache. Mit diesen Eingaben erstellen wir einen einfachen Prompt, der die AI anweist, eine Grußbotschaft zu generieren. Um die Grußbotschaft zu erhalten, verwenden wir anschließend die Methode CompleteAsync unseres ChatClient, die eine passende Antwort basierend auf dem Prompt zurückgibt.
Hier ist ein Beispiel für eine Grußbotschaft, die mit der oben beschriebenen Methode generiert wurde:
Nach dem gleichen Schema wollen wir nun eine Weihnachtsgeschichte generieren lassen. Dafür fragen wir den Nutzer zunächst nach einem Namen für eine Person, die in der Geschichte vorkommen soll. Zusätzlich bieten wir ein Freifeld an, in das weitere Informationen eingetragen werden können. Zum Abschluss wählen wir die gewünschte Sprache aus.
Diese Eingaben nutzen wir in unserer Methode GenerateChristmasStoryAsync, die die Weihnachtsgeschichte generiert.
Und hier ist ein Beispiel für eine kurze Weihnachtsgeschichte, die mit der Methode GenerateChristmasStoryAsync erstellt wurde.
Als letztes Beispiel wollen wir aus beliebigen Zutaten ein leckeres Rezept generieren. Dafür erstellen wir die Methode SuggestChristmasRecipeAsync. Ähnlich wie bei den anderen Methoden fragen wir auch hier zunächst einige Daten ab. Dazu gehören die gewünschte Sprache und eine Liste von Zutaten. Mit diesen Informationen wird anschließend ein passendes Rezept erstellt.
Hier ist ein passendes Weihnachtsrezept, das aus den Zutaten Zimt, Schokolade und Mandeln generiert wurde:
Fazit
Wie ihr sehen könnt, haben wir zwar drei verschiedene Methoden erstellt, doch im Grunde läuft in allen Methoden das Gleiche ab – der einzige Unterschied liegt im jeweiligen Prompt. Deshalb ist es entscheidend, einen gut durchdachten Prompt zu formulieren, damit das AI-Modell später genau versteht, was es tun soll.
Ich hoffe, dieser Beitrag hat euch inspiriert, selbst ein wenig mit AI-Modellen zu experimentieren. Egal ob Grußbotschaften, Weihnachtsgeschichten oder Rezepte – die Möglichkeiten sind nahezu unbegrenzt und mit nur wenigen Zeilen Code könnt ihr spannende Ergebnisse erzielen. Wichtig ist dabei, eure Prompts gut zu durchdenken und eure Ideen kreativ umzusetzen.
Falls ihr weitere Fragen habt oder den kompletten Quellcode einsehen möchtet, schaut gerne auf meinem GitHub-Repository vorbei.
Viel Spaß beim Ausprobieren und eine schöne Weihnachtszeit!
Thema:
- Entwicklung
Über den Autor

Tobias Scholze
Bayrischer Open Source- und Community-Enthusiast, Verfechter des neuen Microsoft und Wandler zwischen den Betriebssystemwelten. #communityrocks Von Herzen ein Nerd mit der festen Überzeugung, dass man gemeinsam und durch den Einsatz von moderner IT die Welt für jeden ein Stückchen besser machen kann.