Сделайте ваши запросы LLM исполняемыми и контролируемыми версиями.
На вашем экспресс-сервере:
yarn add spellbook-forge
import { spellbookForge } from "spellbook-forge" ;
const app = express ( )
. use ( spellbookForge ( {
gitHost : 'https://github.com'
} ) )
а потом:
GET http://localhost:3000/your/repository/prompt?execute
<-- HTTP 200
{
"prompt-content": "Complete this phrase in coders’ language: Hello …",
"model": "gpt3.5",
"result": "Hello, World!"
}
Посмотрите живые примеры, чтобы попробовать!
Это промежуточное программное обеспечение ExpressJS, которое позволяет вам создавать интерфейс API для ваших подсказок LLM. Он автоматически создаст сервер для ваших запросов, хранящихся в репозитории git. Используя Spellbook, вы можете:
Примечание. Это ранняя версия. Ожидайте ошибок, критических изменений и низкой производительности.
Этот репозиторий подсказок: https://github.com/rafalzawadzki/spellbook-prompts/hello-world.
Можно выполнить так: https://book.spell.so/rafalzawadzki/spellbook-prompts/hello-world?execute
➡️ Сервер книги заклинаний: https://book.spell.so
Сервер использует spellbook-forge
и в настоящее время подключен к Github в качестве хоста git. Вы можете использовать любой общедоступный репозиторий с подсказками (при условии, что они соответствуют принятому формату).
Например, используя репозиторий rafalzawadzki/spellbook-prompts, вы можете сформировать конечную точку (и многое другое):
https://book.spell.so/rafalzawadzki/spellbook-prompts/hello-world
Полная документация скоро появится!
Если вы хотите использовать запрос execute
в своем собственном экземпляре Spellbook-Forge, вам необходимо предоставить ключ OpenAI API в файле .env или переменных env:
OPENAI_API_KEY=your-key
Файлы подсказок должны соответствовать определенному формату (JSON/YAML). Примеры смотрите здесь.
├── prompt1
│ ├── prompt . json
│ └── readme . md
└── collection
└── prompt2
├── prompt . yaml
└── readme . md
Приведенная выше файловая структура приведет к созданию следующих конечных точек API:
{host}/prompt1
{host}/collection/prompt2
prompt.json
основной файл с содержимым и конфигурацией приглашения.readme.md
дополнительная информация об использовании подсказок, примеры и т. д. GET
{host}/path/to/prompt
— получить содержимое подсказки
POST
{host}/path/to/prompt
— обновить содержимое приглашения
DELETE
{host}/path/to/prompt
— удалить приглашение (вместе с файлом readme и метаданными!)
GET
{host}/path/to/prompt?execute
— для простых запросов без шаблонов.
POST
{host}/path/to/prompt?execute
— для приглашений с шаблонами (рекомендуется)
// request body
{
"variables": [
"name": "World"
]
}
GET
{host}/path/to/prompt?execute=gpt4
– с другой моделью (пока не реализовано)Вы можете получить содержимое приглашения и выполнить его с помощью LangChain:
import { PromptTemplate } from "langchain/prompts" ;
export const run = async ( ) => {
const template = await fetch (
"https://book.spell.so/rafalzawadzki/spellbook-prompts/hello-world"
) . then ( ( res ) => res . text ( ) ) ;
const prompt = new PromptTemplate ( { template , inputVariables : [ "product" ] } )
// do something with the prompt ...
}
Представленное решение c имеет смысл в основном при создании цепочек, для простых подсказок лучше всего напрямую использовать Spellbook!
В будущем я могу внести свой вклад в расширение функции prompt/load
LangChain для поддержки загрузки подсказок из книги заклинаний, например:
import { loadPrompt } from "langchain/prompts/load" ;
const prompt = await loadPrompt ( "{spellbook-host}/hello-world/prompt" ) ;
POST /prompt?execute
с телом execute=gpt4