<НА ГЛАВНУЮ

Разработка локального агентного повествовательного пайплайна

Научитесь создавать локальную систему повествования с 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 35 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

Switch to English