Разработка локального агентного повествовательного пайплайна
Научитесь создавать локальную систему повествования с Griptape и Hugging Face.
Обзор
В этом руководстве показано, как создать полностью локальную, безапийную систему агентного повествования, используя Griptape и легкую модель Hugging Face. Мы создадим агента с возможностями использования инструментов, сгенерируем вымышленный мир, спроектируем персонажей и организуем многоступенчатый рабочий процесс, который создает последовательный короткий рассказ. Разделив реализацию на модульные фрагменты, мы сможем четко понять каждый компонент на этапе его интеграции в конечный творческий пайплайн.
Настройка окружения
Мы начинаем с настройки окружения:
!pip install -q "griptape[drivers-prompt-huggingface-pipeline]" "transformers" "accelerate" "sentencepiece"Мы инициализируем локальный драйвер Hugging Face и вспомогательную функцию для четкого отображения выводов, что позволяет нам следовать каждому шагу рабочего процесса.
Создание агента
Далее мы создаем агента, оснащенного калькулятором, и тестируем его:
math_agent = Agent(
prompt_driver=local_driver,
tools=[CalculatorTool()],
)
math_response = math_agent.run(
"Compute (37*19)/7 and explain the steps briefly."
)
show("Agent + CalculatorTool", math_response.output.value)Это подтверждает, что наша локальная интеграция драйвера и инструмента работает правильно.
Генерация мира и персонажей
Мы строим задачу по генерации мира и динамически создаем задачи по генерации персонажей:
world_task = PromptTask(
input="Create a vivid fictional world using these cues: {{ args[0] }}.
Describe geography, culture, and conflicts in 3–5 paragraphs.",
id="world",
prompt_driver=local_driver,
)Определяя многоразовую функцию для задач персонажей, мы наблюдаем, как рабочий процесс принимает форму через иерархические зависимости.
Введение стилевых правил
Мы интегрируем стилистические правила и создаем финальную задачу повествования:
style_ruleset = Ruleset(
name="StoryStyle",
rules=[
Rule("Write in a cinematic, emotionally engaging style."),
Rule("Avoid explicit gore or graphic violence."),
Rule("Keep the story between 400 and 700 words."),
],
)Это объединяет все задачи в последовательный нарративный рабочий процесс и позволяет эффективно его запускать.
Вывод и обобщение
Наконец, мы собираем все сгенерированные выводы и вычисляем метрики рассказа:
metrics = summarize_story(story_text)
show("Story Metrics", metrics)В заключение, мы организуем сложные рассуждения, взаимодействия инструментов и творческое генерирование, используя локальные модели в рамках Griptape. Это открывает путь для продвинутых экспериментов в локальных агентных пайплайнах и автоматизированных системах письма.
Полный код доступен FULL CODES здесь.
Switch Language
Read this article in English