| Did you know ... | Search Documentation: |
| Packs (add-ons) for SWI-Prolog |
| Title: | Prolog library for interfacing with large language models. |
|---|---|
| Rating: | Not rated. Create the first rating! |
| Latest version: | 0.1.0 |
| SHA1 sum: | 690ecb2a7a028e0c74ed8a8ee24f54abf92e05dd |
| Author: | Evangelos Lamprou <vagos@lamprou.xyz> |
| Home page: | https://github.com/vagos/llmpl |
| Download URL: | https://github.com/vagos/llmpl/releases/*.zip |
No reviews. Create the first review!.
| Version | SHA1 | #Downloads | URL |
|---|---|---|---|
| 0.1.0 | 690ecb2a7a028e0c74ed8a8ee24f54abf92e05dd | 2 | https://github.com/vagos/llmpl.git |
Use LLMs inside Prolog!
pllm is a minimal SWI-Prolog helper that exposes llm/2.
The predicate posts a prompt to an HTTP LLM endpoint and unifies the model's
response text with the second argument.
The library currently supports any OpenAI-compatible chat/completions endpoint.
?- pack_install(pllm).
Set the following environment variables:
| Variable | Description |
|---|---|
| LLM_API_URL | the chat/completions endpoint that accepts POST requests. |
| LLM_API_KEY | secret that will be sent as a bearer token. |
| LLM_MODEL | optional model name (defaults to `gpt-4o-mini`). |
| LLM_API_TIMEOUT | optional request timeout in seconds (defaults to 60). |
# Fill in .env with your settings set -a && souce .env && set +a swipl
?- [prolog/llm].
?- llm("Say hello in French.", Output).
Output = "Bonjour !".
?- llm(Prompt, "Dog").
Prompt = "What animal is man's best friend?",
...
If you call llm/2 with an unbound first argument and a concrete response,
the library first asks the LLM to suggest a prompt that would (ideally)
produce that response, binds it to your variable, and then sends a second
request that wraps the suggested prompt in a hard constraint ("answer only with ...").
This costs two API calls and is still best-effort; the model may ignore the constraint, in which case the predicate simply fails.
Pack contains 3 files holding a total of 7.1K bytes.