Haga que sus indicaciones de LLM sean ejecutables y controladas por versión.
En su servidor Express:
yarn add spellbook-forge
import { spellbookForge } from "spellbook-forge" ;
const app = express ( )
. use ( spellbookForge ( {
gitHost : 'https://github.com'
} ) )
y luego:
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!"
}
¡Vea ejemplos en vivo para probarlo!
Este es un middleware ExpressJS que le permite crear una interfaz API para sus indicaciones de LLM. Generará automáticamente un servidor para sus mensajes almacenados en un repositorio de git. Usando Spellbook, puedes:
Nota: es una versión anterior. Espere errores, cambios importantes y un rendimiento deficiente.
Este repositorio de avisos: https://github.com/rafalzawadzki/spellbook-prompts/hello-world
Se puede ejecutar así: https://book.spell.so/rafalzawadzki/spellbook-prompts/hello-world?execute
➡️ Servidor de libro de hechizos: https://book.spell.so
El servidor utiliza spellbook-forge
y actualmente está conectado a Github como host git. Puede utilizar cualquier repositorio público que contenga indicaciones (siempre que cumplan con el formato aceptado).
Por ejemplo, usando un repositorio rafalzawadzki/spellbook-prompts, puedes formar un punto final (y muchos más):
https://book.spell.so/rafalzawadzki/spellbook-prompts/hello-world
¡La documentación completa estará disponible próximamente!
Si desea utilizar la consulta execute
en su propia instancia de Spellbook-Forge, debe proporcionar una clave API de OpenAI en un archivo .env o variables env:
OPENAI_API_KEY=your-key
Los archivos de solicitud deben cumplir con un formato específico (JSON/YAML). Vea ejemplos aquí aquí.
├── prompt1
│ ├── prompt . json
│ └── readme . md
└── collection
└── prompt2
├── prompt . yaml
└── readme . md
La estructura de archivos anterior dará como resultado que se generen los siguientes puntos finales de API:
{host}/prompt1
{host}/collection/prompt2
prompt.json
el archivo principal con el contenido y la configuración del mensaje.readme.md
información adicional sobre el uso rápido, ejemplos, etc. GET
{host}/path/to/prompt
- obtener contenido rápido
POST
{host}/path/to/prompt
- insertar contenido del mensaje
DELETE
{host}/path/to/prompt
- eliminar mensaje (¡junto con el archivo Léame y los metadatos!)
GET
{host}/path/to/prompt?execute
: para mensajes simples sin plantillas
POST
{host}/path/to/prompt?execute
- para mensajes con plantillas (recomendado)
// request body
{
"variables": [
"name": "World"
]
}
GET
{host}/path/to/prompt?execute=gpt4
- con un modelo diferente (aún no implementado)Puede recuperar el contenido del mensaje y ejecutarlo usando 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 ...
}
La solución presentada tiene sentido principalmente en el encadenamiento; para indicaciones simples, es mejor usar Spellbook directamente.
En el futuro, puedo contribuir a ampliar la función prompt/load
de LangChain para admitir la carga de indicaciones desde Spellbook, por ejemplo:
import { loadPrompt } from "langchain/prompts/load" ;
const prompt = await loadPrompt ( "{spellbook-host}/hello-world/prompt" ) ;
POST /prompt?execute
con cuerpo execute=gpt4