INTEGRITY Документация

Промптинг

Чтобы получить хороший результат от моделей генерации текста, важно правильно формулировать запросы. LLM обычно обучаются на заранее заданных шаблонах, которые затем следует использовать вместе с токенизатором модели для более точных результатов при инференсе.

Существует два способа формировать промпты для моделей генерации текста в Workers AI:

Scoped Prompts

Это рекомендуется метод. Благодаря ограниченным промптам Workers AI берёт на себя работу с различными шаблонами чата для разных моделей и предоставляет разработчикам единый интерфейс для составления промптов и создания задач генерации текста.

Scoped Prompts представляют собой список сообщений. Каждое сообщение задаёт два ключа: role и content.

Обычно роль может принимать одно из трёх значений:

У OpenAI есть хорошее объяснение о том, как эти роли используются в моделях GPT. Хотя шаблоны чата достаточно гибкие, другие модели генерации текста обычно следуют тем же соглашениям.

Вот пример входных данных для промпта с областью действия, использующего роли system и user:

{
  messages: [
    { role: "system", content: "you are a very funny comedian and you like emojis" },
    { role: "user", content: "tell me a joke about cloudflare" },
  ],
};

Вот более наглядный пример сеанса чата с несколькими итерациями обмена репликами между пользователем и ассистентом.

{
  messages: [
    { role: "system", content: "you are a professional computer science assistant" },
    { role: "user", content: "what is WASM?" },
    { role: "assistant", content: "WASM (WebAssembly) is a binary instruction format that is designed to be a platform-agnostic" },
    { role: "user", content: "does Python compile to WASM?" },
    { role: "assistant", content: "No, Python does not directly compile to WebAssembly" },
    { role: "user", content: "what about Rust?" },
  ],
};

Обратите внимание, что разные LLM обучаются на разных шаблонах для разных сценариев использования. Workers AI старается скрыть от разработчика особенности шаблона каждой LLM за единым API, но за подробностями всегда следует обращаться к документации модели. Например, instruct-модели вроде Codellama дообучены отвечать на пользовательские инструкции, тогда как чат-модели ожидают на входе фрагменты диалога.

Незакреплённые промпты

С помощью unscoped prompts можно отправить модели один вопрос, не задумываясь о предоставлении контекста. Workers AI автоматически преобразует ваш prompt входные данные во внутренний ограниченный промпт по умолчанию, чтобы вы получили максимально точный результат.

{
  prompt: "tell me a joke about cloudflare";
}

Также можно использовать unscoped prompts, чтобы вручную собрать шаблон чата модели. В этом случае можно использовать параметр raw. Ниже приведён пример входных данных для Mistral промпт шаблона чата:

{
  prompt: "<s>[INST]comedian[/INST]</s>
[INST]tell me a joke about cloudflare[/INST]",
  raw: true
};