Revolutionieren Sie Ihre Produkteinfuehrung Wie Ki Agenten Ihr Marketing Auf Die Naechste Stufe Heben Revolutionieren Sie Ihre Produkteinfuehrung Wie Ki Agenten Ihr Marketing Auf Die Naechste Stufe Heben

Revolutionieren Sie Ihre Produkteinführung: Wie KI-Agenten Ihr Marketing auf die nächste Stufe heben

Es ist inzwischen klar, dass Agenten die Gegenwart und Zukunft der generativen KI sind. Dies zeigt sich nicht nur in den Aussagen bemerkenswerter Personen wie Andrew Ng, sondern auch in der Arbeit zahlreicher Forschungsteams. Das jüngste Paper „Mixture of Agents“ zeigt eine erstaunliche Verbesserung bei der Problemlösung, wenn LLM-Agenten gemeinsam an einem Thema arbeiten!

Nicht zu vergessen, dass jemand mutig genug war, einen Preis von 1,1 Millionen Dollar für einen Kaggle-Wettbewerb zur Entwicklung einer AGI auszusetzen (die Absicht ist eindeutig auf Agenten ausgerichtet…).

Erstellen Sie eine KI, die in der Lage ist, Denkaufgaben zu lösen, die sie noch nie zuvor gesehen hat – aus der Quelle

In diesem Artikel zeige ich Ihnen, wie Sie den Preis gewinnen können!

Scherz beiseite

Das weiß ich zwar nicht, aber ich gebe Ihnen hier den Ausgangspunkt!

Wir verwenden eine einfache und leistungsstarke Python-Bibliothek, die entwickelt wurde, um allen das Leben zu erleichtern!

In diesem Artikel zeige ich Ihnen, wie Sie eine Gruppe von Agenten aufbauen, um eine Produkteinführungskampagne von Grund auf zu erstellen: Produktbeschreibung, USP, Zielgruppe, Marketing-Kanäle, Werbetexte, Landingpage, E-Mail-Kampagne, Social-Media-Beiträge, Pressemitteilung und Leistungskennzahlen.

Fangen wir an!

Langchain Agenten mit llamacpp Beispiel – von TwitterX

Die llama-cpp-agent Bibliothek

Das llama-cpp-agent Framework ist ein Werkzeug zur Vereinfachung der Interaktion mit großen Sprachmodellen (LLMs). Es bietet eine Schnittstelle zum Chatten mit LLMs, Ausführen von Funktionsaufrufen, Generieren strukturierter Ausgaben, Durchführen von Retrieval Augmented Generation und Verarbeiten von Text mithilfe von Agentenketten mit Tools.

Wie der Name schon sagt, liegt der Fokus auf der llama-cpp-python Bibliothek.

Warum? Weil die berühmten Frameworks wie Llamaindex und LangChain bis vor wenigen Wochen keine Out-of-the-Box-Lösung hatten, um ein quantisiertes Chat-Modell in ihren leistungsstarken integrierten Workflow einzubinden.

Infolgedessen konnten Sie nicht einmal den Demo-Code testen und scheiterten bei jedem Tutorial, wenn Sie nicht die OpenAI ChatGPT API verwendeten (und dafür bezahlten).

Jetzt können wir lokal quantisierte Modelle mit llama-cpp ausführen und Ihre Agenten mit wenigen Codezeilen aufbauen!

Verwendung von LlamaCppServerProvider

Das GitHub-Repository enthält auch eine angemessene ReadTheDocs-Webseite: nicht für Anfänger, aber sicherlich gut!

Der einfachste Weg, die Funktionen des Agenten zu nutzen, besteht darin, das quantisierte Modell Ihrer Wahl als API auszuführen.

Llama-cpp-python hat eine eingebaute Option, dies von der Kommandozeile aus zu tun. Alternativ können Sie auch Llamafile verwenden, wie ich bereits in meinem vorherigen Artikel erklärt habe:

Zwei-Terminal-Strategie

Die Idee ist also, ein Terminalfenster zu haben, das den llamafile-Dienst ausführt, und ein anderes, das den Python-Code ausführt und Ihnen die Ausgaben liefert.

HINWEIS: ⚠️ Ich empfehle Ihnen, die llamafile-Option zu verwenden: Die Standardinstallation der llama-cpp-agent Bibliothek enthält llama-cpp-python ohne Server-Unterstützung.

Abhängigkeiten

Als Best Practice erstellen Sie eine virtuelle Umgebung, bevor Sie neue Pakete installieren.

Beachten Sie, dass dieses Projekt nur mit Python 3.11+ funktioniert.

Erstellen Sie ein neues Verzeichnis, z.B. llamacpp-agents

mkdir llamacpp-agents
cd llamacpp-agents
python -m venv venv
#aktivieren Sie die virtuelle Umgebung
venv\Scripts\activate

Installieren Sie nun mit aktivierter virtueller Umgebung die einzigen 2 erforderlichen Pakete:

pip install llama-cpp-agent rich

Und da wir möglicherweise llamafile verwenden möchten:

wget https://github.com/Mozilla-Ocho/llamafile/releases/download/0.8.6/llamafile-0.8.6 -OutFile llamafile-0.8.6.exe

Wenn Sie sich für llama-cpp-server entscheiden möchten, installieren Sie zusätzlich:

pip install llama-cpp-python[server]==0.2.78
oder
pip install fastapi
pip install uvicorn
pip install anyio
pip install sse_starlette starlette_context pydantic pydantic-settings

Jetzt sind wir bereit loszulegen!

Offizielle Webseite für llamafile – jetzt in Version 0.8.6

Wie man die OpenAI-kompatible API ausführt

Wie bereits erwähnt, hier sind die 2 Methoden:

Methode 1 – empfohlen

Um den Modell-API-Endpunkt mit llamafile auszuführen, ist es einfach und Sie benötigen keine Python-Abhängigkeiten. Führen Sie vom Terminal aus Folgendes aus:

.\llamafile-0.8.6.exe --server --host 0.0.0.0 -m .\models\qwen2-0_5b-instruct-q8_0.gguf -c 8192

Methode 2 – weniger zuverlässig

Um es direkt in llama-cpp-python umzuwandeln, wenn Sie es mit der [server]-Option installiert haben. Aktivieren Sie vom Terminal aus die virtuelle Umgebung und führen Sie aus:

python -m llama_cpp.server --host 0.0.0.0 --port 8080 --model models\tinyllama-moe4-q8_0.gguf --n_ctx 2048 --n_gpu_layers 0

Wählen Sie Ihren Champion

Sie benötigen offensichtlich ein lokales, quantisiertes Modell. Je größer die Anzahl der Parameter, desto genauer wird das Ergebnis sein… und desto länger wird auch die Generierungszeit sein.

Hier sind die besten kleinen Sprachmodelle, die Sie meiner Meinung nach großartig finden werden:

  • qwen2-0_5b-instruct-q8_0.gguf nctx=32k
  • h2o-danube2-1.8b-chat-Q5_K_M.gguf nctx=8k
  • stablelm-2-zephyr-1_6b-Q5_K_M.gguf nctx= 2k
  • qwen2-1.5b-instruct.Q6_K.gguf nctx=32k
  • gemma-1.1-2b-it.Q6_K.gguf nctx= 2k

Sie können die folgenden Links verwenden, um sie herunterzuladen. Ich schlage vor, dass Sie sie in den Unterordner models legen. Vom Terminal aus:

mkdir models
cd models

Führen Sie dann einen der folgenden Befehle aus, je nach Ihren Präferenzen:

wget https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat-GGUF/resolve/main/qwen1_5-1_8b-chat-q4_k_m.gguf -OutFile qwen1_5-1_8b-chat-q4_k_m.gguf
wget https://huggingface.co/Qwen/Qwen2-0.5B-Instruct-GGUF/resolve/main/qwen2-0_5b-instruct-q8_0.gguf -OutFile qwen2-0_5b-instruct-q8_0.gguf
wget https://huggingface.co/Clausss/Qwen2-1.5B-Instruct-Q8_0-GGUF/resolve/main/qwen2-1.5b-instruct-q8_0.gguf -OutFile qwen2-1.5b-instruct-q8_0.gguf
wget https://huggingface.co/ggml-org/gemma-1.1-2b-it-Q6_K-GGUF/resolve/main/gemma-1.1-2b-it.Q6_K.gguf -OutFile gemma-1.1-2b-it.Q6_K.gguf
wget https://huggingface.co/h2oai/h2o-danube2-1.8b-chat-GGUF/resolve/main/h2o-danube2-1.8b-chat-Q5_K_M.gguf -OutFile h2o-danube2-1.8b-chat-Q5_K_M.gguf
wget https://huggingface.co/second-state/stablelm-2-zephyr-1.6b-GGUF/resolve/main/stablelm-2-zephyr-1_6b-Q5_K_M.gguf -OutFile stablelm-2-zephyr-1_6b-Q5_K_M.gguf

Hinweis: Der gesamte Code befindet sich im GitHub-Repository, das für diesen Artikel erstellt wurde. Sie können mitverfolgen 😉

Ich habe qwen2-0_5b-instruct-q8_0.gguf verwendet, das kleinste Modell… und auch das schnellste.

Produkteinführungskampagne – was wir erstellen werden

Ich wollte eine einfache Vorstellung von der Verwendung von KI-Agenten geben, daher ist dieses Projekt eine einfache Kette. Jeder Agent wird seine Antwort auf den Teil der anderen Agenten stützen:

Agenten-Workflow – vom Autor

Wir werden die folgenden Agenten einrichten:

  • Produktbeschreibungsschreiber: Er wird „Eine detaillierte Produktbeschreibung für Ihr Produkt schreiben, einschließlich seiner Funktionen und Vorteile.“
  • Ersteller des einzigartigen Verkaufsarguments (USP): Seine Aufgabe ist es, „Ein überzeugendes USP für Ihr Produkt basierend auf der Arbeit des Produktbeschreibungsschreibers zu erstellen“
  • Zielgruppenidentifizierer. Wir weisen ihm die Aufgabe zu, „Die Zielgruppe für Ihr Produkt basierend auf der Arbeit des Produktbeschreibungsschreibers und des Erstellers des einzigartigen Verkaufsarguments (USP) zu identifizieren“
  • Marketing-Kanal-Stratege: Sie wird „Die effektivsten Marketing-Kanäle zur Promotion von Ihr Produkt basierend auf den Richtlinien des Zielgruppenidentifizierers vorschlagen“
  • Werbetexter. Er muss „Ansprechende Werbetexte für Ihr Produkt basierend auf dem Produktbeschreibungsschreiber, dem Ersteller des einzigartigen Verkaufsarguments (USP) und den Richtlinien des Zielgruppenidentifizierers schreiben“
  • Der Landingpage-Designer ist verantwortlich für „Erstellen Sie eine hochkonvertierende Landingpage-Struktur für Ihr Produkt basierend auf der zuvor erstellten ProduktbeschreibungUSPZielgruppe und Werbetexten.“
  • E-Mail-Marketing-Spezialist: Dieser Agent „Entwickelt eine E-Mail-Kampagne für Ihr Produkt basierend auf der ProduktbeschreibungUSPZielgruppe und Landingpage-Struktur.“
  • Social-Media-Content-Ersteller „Erstellen Sie eine Reihe von ansprechenden Social-Media-Beiträgen für Ihr Produkt basierend auf der ProduktbeschreibungUSPZielgruppe und Werbetexten.“
  • Pressemitteilungsschreiber. Er „Schreibt eine überzeugende Pressemitteilung zur Ankündigung des Starts von Ihr Produkt basierend auf der ProduktbeschreibungUSP und Zielgruppe.“
  • Ein Marketing-Performance-Analyst identifiziert schließlich „die wichtigsten Leistungskennzahlen zur Verfolgung des Erfolgs der Ihr Produkt-Einführungskampagne basierend auf den Marketing-Kanälen, Werbetexten, Landingpage, E-Mail-Kampagne, Social-Media-Beiträgen und der Pressemitteilung.“

HINWEIS: Der Code wird einfacher sein als das Lesen der Beschreibung 💻😉

Website-Mockup erstellt mit Canva – basierend auf llama-cpp-agent JOB

Erstellung und Verkettung von Agenten

Lassen Sie uns hier ein wenig programmieren. Llama-cpp-agent erfordert nur eine minimale Anzahl von Codezeilen, um die Agenten zu erstellen und zu aktivieren.

Zunächst importieren wir die Bibliotheken und verbinden die KI-Anwendung mit dem laufenden Server (den Sie zwischen llamafile und llama-cpp-python-server gewählt haben).

from llama_cpp_agent import AgentChainElement, AgentChain
from llama_cpp_agent import LlamaCppAgent
from llama_cpp_agent import MessagesFormatterType
from llama_cpp_agent.providers import LlamaCppServerProvider
from rich.console import Console
console = Console(width=90)
import datetime
from time import sleep

Ich mag es, alles in Textdateien zu protokollieren. Lassen Sie uns also auch eine Funktion erstellen, um die Ergebnisse der Arbeit des KI-Agenten in eine Datei zu schreiben.

def writehistory(filename,text):
    with open(filename, 'a', encoding='utf-8') as f:
        f.write(text)
        f.write('\n')
    f.close()

# Dateinamen festlegen
tstamp = datetime.datetime.now()
tstamp = str(tstamp).replace(' ','_')
tstamp = str(tstamp).replace(':','_')
logfile = f'{tstamp[:-7]}_log.txt'
sleep(2)

# In die Historie die ersten 2 Sitzungen schreiben
writehistory(logfile,f'Erstellt mit 🌀 Qwen2-0.5b-instruct\n---\n\n\n')   

Die Funktion schreibt einfach einen String in eine txt-Datei. Dann verwenden wir eine einfache Methode, um automatisch einen Dateinamen (basierend auf dem Zeitstempel) zu erstellen und beginnen mit der Protokollierung des verwendeten Modells (Qwen2-0.5b-instruct).

Die Verbindung zum Modell könnte nicht einfacher sein, da wir uns mit dem API-Endpunkt verbinden müssen:

model = LlamaCppServerProvider("http://127.0.0.0:8080") 
# Standardport für llamafile-Server ist 8080
agent = LlamaCppAgent(
    model,
    system_prompt="",
)

Wie Sie sehen, ist es sehr unkompliziert. Wir richten einen Provider ein und weisen ihn einer Agent-Klasse zu.

In den nächsten Schritten werden wir die Rollen deklarieren und festlegen, wie die Ausgaben miteinander verknüpft werden sollen.

Das AgentChainElement

Jede einzelne Agentenaufgabe wird durch das AgentChainElement identifiziert: Diese Klasse hat ihren eigenen Ausgabeidentifikator (erforderlich, um die Ergebnisse in der Agentenkette zu verknüpfen) sowie einen System-Prompt und einen Anweisungs-Prompt.

Schauen wir uns den ersten an:

product_description = AgentChainElement(
    output_identifier="out_0",
    system_prompt="Sie sind ein Produktbeschreibungsschreiber",
    prompt="""Schreiben Sie eine detaillierte Produktbeschreibung für {product_name}, 
              einschließlich seiner Funktionen und Vorteile."""
)

Die Variable {product_name} wird der einzige Input in unserer Kette sein, der über alle Agenten hinweg verwendet wird. Es ist im Grunde der Name des Produkts, das wir einführen möchten. Für diesen Artikel habe ich mich für intelligente Laufschuhe entschieden… etwas, das in der realen Welt noch nicht existiert… NOCH NICHT.

Die nächsten 3 Agenten sind offensichtlich miteinander verbunden. Der Übersichtlichkeit halber habe ich im Prompt neue Zeilen verwendet:

product_usp = AgentChainElement(
    output_identifier="out_1",
    system_prompt="Sie sind ein Ersteller des einzigartigen Verkaufsarguments (USP)",
    prompt="Erstellen Sie ein überzeugendes USP für {product_name} basierend auf 
            der folgenden Produktbeschreibung:\n--\n{out_0}"
)

target_audience = AgentChainElement(
    output_identifier="out_2",
    system_prompt="Sie sind ein Zielgruppenidentifizierer",
    prompt="Identifizieren Sie die Zielgruppe für {product_name} basierend 
            auf der folgenden Produktbeschreibung und USP:\n--\n
            Produktbeschreibung:\n{out_0}\nUSP:\n{out_1}"
)

marketing_channels = AgentChainElement(
    output_identifier="out_3",
    system_prompt="Sie sind ein Marketing-Kanal-Stratege",
    prompt="Schlagen Sie die effektivsten Marketing-Kanäle zur Promotion von 
           {product_name} basierend auf der folgenden Zielgruppe vor:
           \n--\n{out_2}"
)

Diese Art der Vorbereitung der Agentenkette ist wirklich interessant: Sie zwingt die Programmierer dazu, ein klares Bild davon zu haben, was sie wollen!

Es ist ein Arbeitsablauf mit allen Aktionen, die wir selbst in einer bestimmten Reihenfolge und Sequenz durchgeführt hätten, um das Ziel zu erreichen.

Dies ist ein Einzeldurchlauf mit einem 0,5-Milliarden-Modell – ERSTAUNLICH!!!

Die nächsten Schritte beziehen sich alle auf Social Media und Werbung: Nach dem Code werde ich die Art und Weise darlegen, wie ich es verwendet hätte… von Ideen zur Realität, richtig?

ad_copy = AgentChainElement(
    output_identifier="out_4",
    system_prompt="Sie sind ein Werbetexter",
    prompt="Schreiben Sie ansprechende Werbetexte für {product_name} basierend auf der 
           folgenden Produktbeschreibung, USP und Zielgruppe:
           \n--\nProduktbeschreibung:\n{out_0}\nUSP:\n{out_1}\n
           Zielgruppe:\n{out_2}"
)

landing_page = AgentChainElement(
    output_identifier="out_5",
    system_prompt="Sie sind ein Landingpage-Designer",
    prompt="Erstellen Sie eine hochkonvertierende Landingpage-Struktur für {product_name} 
            basierend auf der folgenden Produktbeschreibung, USP, Zielgruppe 
            und Werbetexten:\n--\nProduktbeschreibung:\n{out_0}\nUSP:\n{out_1}\n
            Zielgruppe:\n{out_2}\nWerbetexte:\n{out_4}"
)

email_campaign = AgentChainElement(
    output_identifier="out_6",
    system_prompt="Sie sind ein E-Mail-Marketing-Spezialist",
    prompt="Entwickeln Sie eine E-Mail-Kampagne für {product_name} basierend auf der 
            folgenden Produktbeschreibung, USP, Zielgruppe und  
            Landingpage-Struktur:\n--\nProduktbeschreibung:\n{out_0}\n
            USP:\n{out_1}\nZielgruppe:\n{out_2}\n
            Landingpage-Struktur:\n{out_5}"
)

social_media_posts = AgentChainElement(
    output_identifier="out_7",
    system_prompt="Sie sind ein Social-Media-Content-Ersteller",
    prompt="Erstellen Sie eine Reihe von ansprechenden Social-Media-Beiträgen für {product_name}  
            basierend auf der folgenden Produktbeschreibung, USP, Zielgruppe 
            und Werbetexten:\n--\nProduktbeschreibung:\n{out_0}\nUSP:\n{out_1}
            \nZielgruppe:\n{out_2}\nWerbetexte:\n{out_4}"
)

press_release = AgentChainElement(
    output_identifier="out_8",
    system_prompt="Sie sind ein Pressemitteilungsschreiber",
    prompt="Schreiben Sie eine überzeugende Pressemitteilung zur Ankündigung 
            des Starts von {product_name} basierend auf der folgenden Produktbeschreibung, 
            USP und Zielgruppe:\n--\nProduktbeschreibung:\n{out_0}
            \nUSP:\n{out_1}\nZielgruppe:\n{out_2}"
)

Es besteht eine sehr hohe Korrelation zwischen einem guten Manager und der Fähigkeit, großartige Multi-Agenten-Systeme zu erstellen, da Manager darauf konditioniert sind, über das Ziel und den Prozess nachzudenken.

Aufbau der Kette

Der letzte Schritt nach der Erstellung aller Agenten besteht darin, sie zu verketten und die Arbeit zu initiieren.

chain = [product_description, product_usp, target_audience, 
         marketing_channels, ad_copy, landing_page, email_campaign,
         social_media_posts, press_release, performance_metrics]

agent_chain = AgentChain(agent, chain)

# Nach der Eingabe fragen
productname = console.input(f'[bold green1]Was möchten Sie einführen> ') # Beispiel "Intelligenter Fitness-Tracker"

start = datetime.datetime.now()

# Die Kette ausführen
with console.status("🌟 KI-Assistent arbeitet daran...", spinner='pong'):
    res = agent_chain.run_chain(additional_fields={"product_name": productname})

delta = datetime.datetime.now() - start

Der Prozess ist unkompliziert. Wir erstellen eine Liste aller AgentChainElement und instanziieren die AgentChain.

Das Einzige, was noch zu tun bleibt, ist, den Start der Agentenkette mit der Benutzereingabe auszulösen – in unserem Beispiel der Name des Produkts intelligente Laufschuhe.

Besondere Überlegungen

Llama-cpp-agent ist eine erstaunliche Bibliothek, aber es gibt nicht viel Literatur oder Tutorials dazu!

Die Read-the-Docs enthält viele Beispiele, und die API-Referenz ist gut organisiert.

Es gibt jedoch ein Problem, eigentlich sogar zwei:

  1. Sie können nur am Ende der Kette überwachen, was passiert
  2. Kleine Modelle neigen dazu, sehr empfindlich auf das Prompt-Format zu reagieren

Mein Vorschlag ist daher, Ihre Kette Schritt für Schritt zu testen, damit Sie das Verhalten des KI-Modells überwachen und den Prompt anpassen können. Manchmal ist es sogar besser, einige Experimente mit dem Prompt außerhalb der Kette durchzuführen und die Argumente direkt zu übergeben 😅

Fazit

Jetzt, da wir den Kern der Sache verstanden haben, sind wir bereit, tiefer einzutauchen, oder?

Das Agentenframework ist auch ein guter intellektueller Motivator: Sie müssen genau wissen, was Sie wollen und welche Zwischenschritte nötig sind, um es richtig zu machen. Während llama-cpp-agent uns einen einfachen Weg in die futuristische Welt der KI-Agenten ermöglicht, ist der Mangel an umfangreicher Literatur ein Problem.

Aber nur in Bezug auf die Lernkurve für weitere Optimierungen und Anpassungen. Schnelles Prototyping und Testen sind super einfach!

Was werden Sie also damit machen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert