In diesem Tutorial erstellen wir mithilfe von ein vollständig lokales, API-freies Agenten-Storytelling-System Griptape und ein leichtes Hugging Face-Modell. Wir gehen Schritt für Schritt durch die Erstellung eines Agenten mit Fähigkeiten zur Werkzeugnutzung, die Generierung einer fiktiven Welt, die Gestaltung von Charakteren und die Orchestrierung eines mehrstufigen Workflows, der eine zusammenhängende Kurzgeschichte hervorbringt. Durch die Aufteilung der Implementierung in modulare Snippets können wir jede Komponente klar verstehen, wenn sie zu einer durchgängigen kreativen Pipeline zusammenkommt. Schauen Sie sich das an VOLLSTÄNDIGE CODES hier.

!pip set up -q "griptape(drivers-prompt-huggingface-pipeline)" "transformers" "speed up" "sentencepiece"


import textwrap
from griptape.constructions import Workflow, Agent
from griptape.duties import PromptTask
from griptape.instruments import CalculatorTool
from griptape.guidelines import Rule, Ruleset
from griptape.drivers.immediate.huggingface_pipeline import HuggingFacePipelinePromptDriver


local_driver = HuggingFacePipelinePromptDriver(
   mannequin="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
   max_tokens=256,
)


def present(title, content material):
   print(f"n{'='*20} {title} {'='*20}")
   print(textwrap.fill(str(content material), width=100))

Wir richten unsere Umgebung ein, indem wir Griptape installieren und einen lokalen Hugging Face-Treiber initialisieren. Wir konfigurieren eine Hilfsfunktion, um die Ausgaben sauber anzuzeigen, sodass wir jeden Schritt des Workflows verfolgen können. Während wir die Grundlage schaffen, stellen wir sicher, dass alles lokal läuft, ohne auf externe APIs angewiesen zu sein. Schauen Sie sich das an VOLLSTÄNDIGE CODES hier.

math_agent = Agent(
   prompt_driver=local_driver,
   instruments=(CalculatorTool()),
)


math_response = math_agent.run(
   "Compute (37*19)/7 and clarify the steps briefly."
)


present("Agent + CalculatorTool", math_response.output.worth)

Wir erstellen einen mit einem Taschenrechner ausgestatteten Agenten und testen ihn mit einer einfachen mathematischen Eingabeaufforderung. Wir beobachten, wie der Agent die Berechnung an das Instrument delegiert und dann eine Erklärung in natürlicher Sprache formuliert. Indem wir dies ausführen, überprüfen wir, dass unsere lokale Treiber- und Instrument-Integration ordnungsgemäß funktioniert. Schauen Sie sich das an VOLLSTÄNDIGE CODES hier.

world_task = PromptTask(
   enter="Create a vivid fictional world utilizing these cues: {{ args(0) }}.nDescribe geography, tradition, and conflicts in 3–5 paragraphs.",
   id="world",
   prompt_driver=local_driver,
)


def character_task(task_id, identify):
   return PromptTask(
       enter=(
           "Based mostly on the world beneath, invent an in depth character named {{ identify }}.n"
           "World description:n{{ parent_outputs('world') }}nn"
           "Describe their background, wishes, flaws, and one secret."
       ),
       id=task_id,
       parent_ids=("world"),
       prompt_driver=local_driver,
       context={"identify": identify},
   )


scotty_task = character_task("scotty", "Scotty")
annie_task = character_task("annie", "Annie")

Wir erstellen die Aufgabe zur Weltgenerierung und erstellen dynamisch Aufgaben zur Charaktergenerierung, die von der Ausgabe der Welt abhängen. Wir definieren eine wiederverwendbare Funktion, um Charakteraufgaben zu erstellen, die vom gemeinsamen Kontext abhängig sind. Während wir diese Komponenten zusammensetzen, sehen wir, wie der Workflow durch hierarchische Abhängigkeiten Gestalt annimmt. Schauen Sie sich das an VOLLSTÄNDIGE CODES hier.

style_ruleset = Ruleset(
   identify="StoryStyle",
   guidelines=(
       Rule("Write in a cinematic, emotionally partaking model."),
       Rule("Keep away from specific gore or graphic violence."),
       Rule("Maintain the story between 400 and 700 phrases."),
   ),
)


story_task = PromptTask(
   enter=(
       "Write an entire brief story utilizing the next components.nn"
       "World:n{{ parent_outputs('world') }}nn"
       "Character 1 (Scotty):n{{ parent_outputs('scotty') }}nn"
       "Character 2 (Annie):n{{ parent_outputs('annie') }}nn"
       "The story should have a transparent starting, center, and finish, with a significant character resolution close to the climax."
   ),
   id="story",
   parent_ids=("world", "scotty", "annie"),
   prompt_driver=local_driver,
   rulesets=(style_ruleset),
)


story_workflow = Workflow(duties=(world_task, scotty_task, annie_task, story_task))
matter = "tidally locked ocean world with floating cities powered by storms"
story_workflow.run(matter)

Wir führen Stilregeln ein und erstellen die abschließende Storytelling-Aufgabe, die Worldbuilding und Charaktere zu einer zusammenhängenden Erzählung zusammenführt. Anschließend stellen wir alle Aufgaben zu einem Workflow zusammen und führen ihn mit einem ausgewählten Thema aus. Dadurch werden wir Zeuge, wie Griptape mehrere Eingabeaufforderungen zu einer strukturierten kreativen Pipeline verknüpft. Schauen Sie sich das an VOLLSTÄNDIGE CODES hier.

world_text = world_task.output.worth
scotty_text = scotty_task.output.worth
annie_text = annie_task.output.worth
story_text = story_task.output.worth


present("Generated World", world_text)
present("Character: Scotty", scotty_text)
present("Character: Annie", annie_text)
present("Last Story", story_text)


def summarize_story(textual content):
   paragraphs = (p for p in textual content.break up("n") if p.strip())
   size = len(textual content.break up())
   structure_score = min(len(paragraphs), 10)
   return {
       "word_count": size,
       "paragraphs": len(paragraphs),
       "structure_score_0_to_10": structure_score,
   }


metrics = summarize_story(story_text)
present("Story Metrics", metrics)

Wir rufen alle generierten Ausgaben ab und zeigen die Welt, die Charaktere und die endgültige Geschichte an. Wir berechnen auch einfache Metriken zur Bewertung von Struktur und Länge und erhalten so eine schnelle analytische Zusammenfassung. Zum Abschluss stellen wir fest, dass der gesamte Arbeitsablauf messbare und interpretierbare Ergebnisse liefert.

Abschließend zeigen wir, wie einfach wir komplexe Denkschritte, Werkzeuginteraktionen und kreative Generierung mithilfe lokaler Modelle innerhalb des Griptape-Frameworks orchestrieren können. Wir erleben, wie modulare Aufgaben, Regelsätze und Arbeitsabläufe zu einem leistungsstarken Agentensystem verschmelzen, das in der Lage ist, strukturierte narrative Ergebnisse zu erzeugen. Indem wir alles ohne externe APIs ausführen, erhalten wir volle Kontrolle, Reproduzierbarkeit und Flexibilität und öffnen die Tür für fortgeschrittenere Experimente mit lokalen Agent-Pipelines, automatisierten Schreibsystemen und Multitasking-Orchestrierung.


Schauen Sie sich das an VOLLSTÄNDIGE CODES hier. Schauen Sie sich gerne bei uns um GitHub-Seite für Tutorials, Codes und Notebooks. Sie können uns auch gerne weiter folgen Twitter und vergessen Sie nicht, bei uns mitzumachen 100.000+ ML SubReddit und Abonnieren Unser E-newsletter. Warten! Bist du im Telegram? Jetzt können Sie uns auch per Telegram kontaktieren.


Asif Razzaq ist CEO von Marktechpost Media Inc.. Als visionärer Unternehmer und Ingenieur setzt sich Asif dafür ein, das Potenzial der künstlichen Intelligenz für das soziale Wohl zu nutzen. Sein jüngstes Unterfangen ist die Einführung einer Medienplattform für künstliche Intelligenz, Marktechpost, die sich durch eine ausführliche Berichterstattung über maschinelles Lernen und Deep-Studying-Nachrichten auszeichnet, die sowohl technisch fundiert als auch für ein breites Publikum leicht verständlich ist. Die Plattform verfügt über mehr als 2 Millionen monatliche Aufrufe, was ihre Beliebtheit beim Publikum verdeutlicht.

Von admin

Schreibe einen Kommentar

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