Шаблоны вызова функций с Hermes-Function-Calling
Подключите модель семейства Hermes к собственному циклу обработки вызовов инструментов, используя репозиторий Hermes-Function-Calling. В нём разработчики предоставили скрипты с точными шаблонами, декораторами и параметрами рекурсии для получения актуальных финансовых данных, структурированного вывода в формате JSON и многоэтапного планирования.
Что понадобится
- Модель, поддерживающая вызов функций Hermes: по умолчанию в репозитории используется Hermes-2-Pro-Llama-3-8B, а для шаблона GOAP — Hermes-3.
- GPU или конечная точка API для запуска модели. Репозиторий загружает модель локально через библиотеку Transformers, при нехватке видеопамяти применяется 4-битная загрузка.
yfinanceдля демонстрации финансовых возможностей и Pydantic для режима JSON.
Как применить
Используйте этот вариант, когда стандартные примеры вызовов инструментов OpenAI плохо соответствуют формату запросов Hermes, и вам нужны готовые скрипты от разработчиков с точными шаблонами, декораторами и параметрами рекурсии, совместимые со стеком вызовов функций Hermes.
functioncall.py — главная точка входа; его стандартная демонстрация использует yfinance для получения актуальных цен на акции и основных показателей.
--query задаёт запрос на естественном языке; по умолчанию используется текущая цена акций TSLA.
--max_depth ограничивает количество рекурсивных итераций значением по умолчанию — 5; результаты работы инструментов передаются обратно в модель для многоступенчатого вызова функций.
--num_fewshot включает примеры с несколькими вариантами ответов в контексте запроса.
--load_in4bit включает режим 4-битной загрузки с использованием библиотеки bitsandbytes.
--chat_template задаёт формат запроса; по умолчанию используется chatml.
jsonmode.py обеспечивает структурированный вывод в формате JSON: он определяет схему Pydantic — в качестве примера приведён Character для персонажа из Dragon Ball Z с именем, видом, ролью, характеристиками и специальными приёмами — и проверяет соответствие вывода модели этой схеме.
functions.py — стандартный слой регистрации инструментов: инструменты определяются с помощью декоратора @tool, собираются в get_openai_tools() и преобразуются через convert_to_openai_tool(f).
prompter.py — построитель запросов: он считывает системный промпт из YAML и заполняет tools, examples, schema, а также поддерживает блок <scratch_pad> в стиле GOAP (Цель / Действия / Наблюдение / Рефлексия), используемый в шаблоне Hermes-3 для многоступенчатого рассуждения.
--max_depth — механизм многоступенчатого вызова: глубина 1 означает один вызов инструмента с последующим ответом, а большие значения глубины позволяют модели вызывать инструмент, считывать результат, вызывать следующий инструмент и синтезировать итоговый ответ. Следите за циклами при неоднозначных запросах.
Pydantic выступает в роли контракта в jsonmode.py: модель получает указание выдавать JSON, а валидатор проверяет соответствие схеме. Если в схеме есть необязательные поля, пометьте их как Optional, иначе валидатор отвергнет корректный, но неполный вывод.
@tool в сочетании с convert_to_openai_tool — стандартный паттерн проекта: не стоит вручную писать JSON-описание инструментов OpenAI, если можно просто пометить функцию декоратором, а конвертер сам создаст нужное описание.
Этот репозиторий появился раньше системы инструментов Hermes внутри агента: он служит эталоном для вызова функций на уровне модели и для предоставления Hermes-FC через эндпоинт, совместимый с OpenAI, но не предназначен для собственных скиллов/MCP-инструментов агента.
Для настройки достаточно клонировать репозиторий и установить зависимости согласно инструкциям.
git clone https://github.com/NousResearch/Hermes-Function-Calling
cd Hermes-Function-Calling
# follow repo's dependency install (transformers, pydantic, yfinance, bitsandbytes optional)
Запустите поставляемые демо-версии.
# live financial data via yfinance, single-hop
python functioncall.py --query "Current stock price and 52-week range of NVDA"
# recursive multi-hop: let the model chain tool calls up to depth 5
python functioncall.py --query "Compare P/E ratios of AAPL, MSFT, GOOGL" --max_depth 5
# structured JSON output against a Pydantic schema
python jsonmode.py --query "Return a JSON object for Goku from Dragon Ball Z"
# few-shot augmented function calling
python functioncall.py --query "..." --num_fewshot 3
Подсказки: форма GOAP-поля для заметок берется из prompter.py и шаблона Hermes-3.
Форма GOAP-поля для заметок (из prompter.py, шаблон Hermes-3):
<scratch_pad>
Goal: <what the user wants>
Actions: <candidate tool calls, with args>
Observation: <result of the last action>
Reflection: <what to do next, or final answer>
</scratch_pad>
Регистрация пользовательского скилла следует шаблону functions.py:
from functions import tool, get_openai_tools, convert_to_openai_tool
@tool
def get_stock_price(ticker: str) -> dict:
"""Return the latest price for the given ticker."""
...
tools = [convert_to_openai_tool(get_stock_price)]
Источник: aliaihub/awesome-hermes-usecases и участники проекта. Лицензия: CC-BY-4.0. Лицензия исходного материала.
Перевод и редакционная адаптация: ClawCases.
>Ресурсы
>Похожие юзкейсы
Арбитр разрешения конфликтов слияния агентов
Разрешает конфликт слияния Git между ветками двух агентов в качестве беспристрастной третьей стороны: нейтральный арбитр, который принимает обе версии изменений и указанные намерения, после чего формирует итоговый результат слияния, не перезаписывая ни одну из сторон.
Трекер отчётности компаний на базе ИИ
Следите за сезоном корпоративной отчётности десятков технологических компаний без ручной проверки разных источников и запоминания дат каждого отчёта в сфере ИИ и технологий.
Открывайте для себя и подробно изучайте популярные статьи Hugging Face с помощью OpenClaw
Настройте OpenClaw с двумя скиллами, чтобы вы могли находить, отбирать и подробно изучать актуальные статьи Hugging Face в диалоговом режиме, не покидая рабочее пространство.