用于与LLM交互的Prolog库
摘要
一个最小的SWI-Prolog库(pllm),它公开了llm/2谓词,用于向兼容OpenAI的聊天/补全端点发送提示并统一响应,支持配置不同的提供商,如OpenAI和Ollama。
查看缓存全文
缓存时间: 2026/07/09 15:40
vagos/llmpl
来源:https://github.com/vagos/llmpl
llmpl
在 Prolog 中使用 LLM!
pllm 是一个轻量级的 SWI-Prolog 辅助工具,暴露了 llm/2 谓词。该谓词将一个提示词发送到 HTTP LLM 端点,并将模型的响应文本与第二个参数统一。
该库目前支持任何兼容 OpenAI 的聊天补全(chat/completions)端点。
安装
?- pack_install(pllm).
配置
某些服务需要 API 密钥进行身份验证。请将 LLM_API_KEY 环境变量设置为你的 API 密钥。
你可以在启动 SWI-Prolog 之前在 shell 中执行以下操作:
echo LLM_API_KEY="sk-..." >> .env
set -a && source .env && set +a
在调用 llm/2 或 llm/3 之前,配置端点和默认模型:
?- config("https://api.openai.com/v1/chat/completions", "gpt-4o-mini").
你可以通过 llm/3 的选项在每次调用时覆盖已配置的模型。
用法
# 用你的设置填充 .env
set -a && souce .env && set +a
swipl
?- [prolog/llm].
?- llm("用法语说你好。", Output).
Output = "Bonjour !".
?- llm("用法语说你好。", Output, [model("gpt-4o-mini"), timeout(30)]).
Output = "Bonjour !".
?- llm(Prompt, "狗").
Prompt = "人类最好的朋友是什么动物?",
...
提供商
该库需要一个兼容 OpenAI 的聊天补全端点。以下是一些常见的提供商和端点,你可以尝试使用。
OpenAI
- 端点:
https://api.openai.com/v1/chat/completions - 示例:
?- config("https://api.openai.com/v1/chat/completions", "gpt-4o-mini").
Ollama(本地)
- 端点:
http://localhost:11434/v1/chat/completions - 示例:
?- config("http://localhost:11434/v1/chat/completions", "llama3.1").
反向提示
如果你调用 llm/2 时第一个参数未绑定,而第二个参数是一个具体的响应,则该库首先要求 LLM 建议一个(理想情况下)能产生该响应的提示词,将其绑定到你的变量,然后发送第二个请求,用硬约束("answer only with ...")包裹建议的提示词。这需要两次 API 调用,并且仍然是尽力而为的;模型可能忽略该约束,此时谓词只会失败。
相似文章
PrologMCP:面向LLM代理的标准化Prolog工具接口
介绍了PrologMCP,这是一个开源服务器,通过模型上下文协议(MCP)将Prolog暴露为有状态工具,使LLM代理能够将推理委托给符号求解器。评估表明,在前沿推理LLM中,该工具在演绎推理任务上具有竞争力或更高的准确性。
llm 0.31.1
Simon Willison 发布的 llm 0.31.1,这是一个用于与大语言模型交互的命令行工具。
llm-chat-completions-server 0.1a0
Simon Willison 发布了 llm-chat-completions-server 0.1a0,这是一个插件,可运行一个本地 OpenAI Chat Completions 兼容服务器,由任何已安装的 LLM 模型提供支持,并使用内容寻址日志来高效管理对话状态。
llm 0.32a2
llm CLI 工具已发布 0.32a2 版本,新增对 OpenAI /v1/responses 端点的支持,以启用 GPT-5 类模型的交错推理功能。
llm 0.32a3
llm 0.32a3版本发布,这是Simon Willison的命令行工具的一个alpha版本,用于与大语言模型交互。