pllm es una biblioteca minimalista para SWI-Prolog que permite invocar modelos de lenguaje dentro de programas lógicos. Su pieza central es el predicado llm/2, que envía un prompt a un endpoint HTTP de tipo chat/completions y unifica la respuesta del modelo con el segundo argumento. Cualquier servicio que sea compatible con la API de chat/completions de OpenAI puede funcionar como backend, lo que incluye a OpenAI, proveedores remotos equivalentes y ejecuciones locales de Ollama.
Para empezar a utilizarla basta con instalar el paquete desde SWI-Prolog mediante pack_install(pllm) y definir la variable de entorno LLM_API_KEY con la clave del proveedor. La configuración se realiza con el predicado config/2, que recibe la URL del endpoint y el modelo por defecto, por ejemplo gpt-4o-mini para OpenAI o llama3.1 para una instancia local de Ollama en localhost:11434. La biblioteca también ofrece la variante llm/3, que admite opciones como model/1 y timeout/1 para ajustar el comportamiento en cada llamada.
Un uso característico es la generación inversa de prompts: si se invoca llm/2 con el primer argumento sin instanciar y una respuesta esperada, la biblioteca pide al modelo que proponga un prompt capaz de producirla y, a continuación, lanza una segunda petición que envuelve ese prompt en una restricción rígida. Esta estrategia implica el doble de llamadas a la API y es de mejor esfuerzo, por lo que el modelo puede ignorar la consigna y el predicado fallará. En conjunto, pllm ofrece una integración ligera entre Prolog y los LLM actuales, útil para experimentar con razonamiento simbólico combinado con generación de texto.
