ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LLM 插件生态全景:插件目录、安装机制与源码级扩展指南

LLM 插件生态全景:插件目录、安装机制与源码级扩展指南 人工智能大模型AI 应用CLI【免费下载链接】llmAccess large language models from the command-line项目地址https://gitcode.com/gh_mirrors/llm/llm点击查看免费下载LLMAccess large language models from the command-line是一个命令行优先的大模型工具其核心能力通过插件系统实现无限扩展。本文以官方插件目录为主线系统梳理 LLM 生态中已经存在的本地模型、远程 API、工具、片段加载器、嵌入模型与附加命令等六大类插件并结合仓库中的安装文档、插件钩子规范与插件加载源码讲清楚有哪些插件、如何安装、插件如何工作、如何自己写一个。读完本文你将能根据场景挑选合适的插件、正确安装与管理插件并理解 LLM 插件体系从声明到加载的完整链路。插件目录是什么LLM 的插件目录Plugin directory是一份官方维护的可用插件清单收录了社区中围绕 LLM 构建的各类扩展。这些插件的能力边界非常清晰让 LLM 能用上更多模型本地运行或远程 API 调用、能执行更多工具、能加载更多格式的输入、能计算嵌入向量、能为 CLI 增加新命令。插件目录按照功能分为六大类分类解决的问题典型插件本地模型在自己电脑上直接运行 LLMllm-gguf、llm-ollama、llm-mlx远程 API通过 API 调用云端托管的模型llm-mistral、llm-gemini、llm-anthropic工具Tools让模型在回答中调用函数llm-tools-simpleeval、llm-tools-sqlite片段与模板加载器扩展-f与-t前缀加载能力llm-fragments-github、llm-templates-fabric嵌入模型生成文本/图像嵌入向量llm-sentence-transformers、llm-clip附加命令为llmCLI 增加全新子命令llm-cmd、llm-cluster、llm-jq需要说明的是目录本身是生态索引而非内置功能——这些插件绝大多数需要你主动安装到与 LLM 相同的虚拟环境中才能使用安装方式在安装插件指南中有完整说明。本地模型插件在自己的电脑上跑 LLM这一类插件解决的核心问题是把模型权重下载到本地、用本机算力推理适合对隐私敏感、离线使用或想省 API 费用的场景。目录中共收录了 8 个本地模型插件llm-gguf基于 llama.cpp 运行 GGUF 格式发布的模型是目前覆盖面最广的本地推理方案之一llm-mlx仅 macOS使用 Apple 的 MLX 框架为大量本地模型提供极高的推理性能llm-ollama接入使用 Ollama 运行的本地模型llm-llamafile支持通过 llamafile 在本地运行的模型llm-mlc运行 MLC 项目发布的本地模型包括可以充分利用 Apple Silicon M1/M2 GPU 的模型llm-gpt4all支持 GPT4All 项目发布的各种为本地运行优化的模型涵盖 Vicuna、Orca、Falcon 与 MPT 等系列llm-mpt30b专门支持 MPT-30B 本地模型llm-lmstudio通过 LM Studio 提供对本地模型的访问。安装其中一个本地模型插件后用llm models可以查看新增的模型列表然后直接用-m/--model参数指定模型名称运行例如安装 llm-gpt4all 后llm install llm-gpt4all llm -m orca-mini-3b-gguf2-q4_0 What is the capital of France?远程 API 插件一个 CLI 接入所有云端模型远程 API 插件让 LLM 充当统一命令行客户端通过各家厂商的 HTTP API 与云端托管的模型交互。目录中收录了 20 个此类插件覆盖了主流厂商llm-mistral支持 Mistral AI 的语言模型与嵌入模型llm-gemini支持 Google 的 Gemini 系列模型llm-anthropic支持 Anthropic 的 Claude 3 家族、3.5 Sonnet 及后续版本llm-command-r支持 Cohere 的 Command R 与 Command R Plus 模型llm-reka支持 Reka 家族模型llm-perplexity作者 Alexandru Geana支持 Perplexity Labs 的 API 模型包括支持联网搜索的llama-3-sonar-large-32k-online与llama-3-70b-instructllm-groq作者 Moritz Angermann接入 Groq 托管的高速推理模型llm-grok作者 Benedikt Hiepler通过 xAI API 访问 Grok 模型llm-anyscale-endpoints支持 Anyscale Endpoints 平台托管的模型包括 Llama 2 70Bllm-replicate支持 Replicate 托管的远程模型包括 Meta 的 Llama 2llm-fireworks支持 Fireworks AI 托管的模型llm-openrouter访问 OpenRouter 上托管的模型llm-cohere作者 Alistair Shepherd提供cohere-generate与cohere-summarize模型llm-bedrock通过 Amazon Bedrock 支持 Amazon Novallm-bedrock-anthropic作者 Sean Blakey通过 Amazon Bedrock 支持 Claude 与 Claude Instantllm-bedrock-meta作者 Fabian Labat通过 Amazon Bedrock 支持 Meta 的 Llama 2 与 Llama 3llm-together支持 Together AI 托管的大量开源许可模型llm-deepseek支持 DeepSeek 的 DeepSeek-Chat 与 DeepSeek-Coder 模型llm-lambda-labs访问 Lambda Labs 托管的模型包括 Nous Hermes 3 系列llm-venice作者 ar-jan访问隐私优先的 Venice AI 托管的未审查模型包括 Llama 3.1 405B。一个重要的免插件路径OpenAI 兼容 API插件目录特别指出如果某个 API 模型服务商提供了 OpenAI 兼容的 API你可以直接在 LLM 中配置使用而不需要任何额外插件。这是 LLM 的一个关键设计——OpenAI 兼容接口已经成为事实上的行业标准LLM 通过内置的 OpenAI 客户端即可对接这类服务具体配置方法见 OpenAI 兼容模型文档。工具类插件让模型拥有动手能力LLM 支持让模型在执行 prompt 的过程中调用工具Tools——工具本质上是一个函数模型可以请求执行它LLM 执行后再把结果返回给模型继续生成。完整的工具调用流程与安全警告见 工具文档。工具类插件共 6 个全部通过register_tools钩子向 LLM 注册新工具llm-tools-simpleeval实现数学等简单表达式求值能力llm-tools-quickjs提供沙箱化的 QuickJS JavaScript 解释器让 LLM 能够运行 JavaScript 代码。其环境在多次调用之间保持模型可以设置变量、构建函数并在后续调用中复用llm-tools-sqlite对本地 SQLite 数据库执行只读 SQL 查询llm-tools-datasette对远程 Datasette 实例执行 SQL 查询llm-tools-exa作者 Dan Turkel使用 exa.ai 执行网络搜索与问答llm-tools-rag作者 Dan Turkel基于 LLM 的嵌入集合进行搜索实现简单的 RAG检索增强生成。工具在命令行中的使用方式是在llm命令上通过--tool或-T指定内置的llm_version工具就是最好的入门示例见 docs/tools.md。值得警惕的是暴露工具给模型存在prompt injection提示注入风险——当模型可能接触到网页、他人提交的 issue、邮件等不受信内容时要谨慎决定启用哪些工具。片段与模板加载器任意格式的输入都能喂给模型LLM 0.24 版本引入了对自定义加载器的支持插件可以定义-f prefix:value或-t prefix:value形式的前缀加载器分别用于片段fragments和模板templates。片段用于向 prompt 注入原始内容模板则用于加载可复用的 prompt 模板。这类插件共 9 个llm-video-frames使用ffmpeg将视频转为一组 JPEG 帧供不支持视频输入的视觉模型使用llm -f video-frames:video.mp4 describe the key scenes in this videollm-templates-github加载 GitHub 上共享的模板例如llm -t gh:simonw/pelican-svgllm-templates-fabric访问 Fabric 提示词集合cat setup.py | llm -t fabric:explain_codellm-fragments-github一次性加载整个 GitHub 仓库llm -f github:simonw/files-to-prompt explain this code也可以用llm -f issue:https://github.com/simonw/llm-fragments-github/issues/3把 issue 讨论串抓取为 Markdownllm-hacker-news把 Hacker News 上的讨论导入为片段llm -f hn:43615912 summary with illustrative direct quotesllm-fragments-pypi作者 samueldg加载 PyPI 包的描述与元数据作为片段llm -f pypi:ruff What flake8 plugins does ruff re-implement?llm-fragments-pdf作者 Dan Turkel用 PyMuPDF4LLM 把 PDF 转为 Markdown 片段llm -f pdf:something.pdf whats this about?llm-fragments-site-text作者 Dan Turkel用 Trafilatura 把网站转为 Markdown 片段llm -f site:https://example.com summarize thisllm-fragments-reader将 URL 交给 Jina Reader API 处理llm -f reader:https://simonwillison.net/tags/jina/ summary。从插件开发角度看片段加载器与模板加载器分别由register_fragment_loaders和register_template_loaders两个钩子驱动定义见 hookspecs.py返回llm.Fragment/llm.Attachment或llm.Template对象当加载器无法找到目标时应抛出带清晰信息的ValueError。具体约定见 插件钩子文档。嵌入模型插件把文本与图像映射到同一向量空间嵌入Embedding模型用于生成文本的向量表示是语义搜索、聚类、RAG 等场景的基础参见 嵌入文档。目录收录了 4 个llm-sentence-transformers基于 sentence-transformers 库可访问其丰富的预训练嵌入模型库llm-clip提供 CLIP 模型可以把图像与文本嵌入到同一个向量空间从而实现对图像的文本搜索llm-embed-jina提供 Jina AI 的 8K 文本嵌入模型llm-embed-onnx提供 7 个可用 ONNX 框架执行的嵌入模型。嵌入插件通过register_embedding_models钩子注册llm.EmbeddingModel子类见 插件钩子文档其编写规范在 嵌入插件编写指南 中有专门介绍。附加命令插件扩展 CLI 本身这类插件不注册模型而是直接为llm命令行增加全新的子命令通过register_commands钩子实现。目录收录了 5 个llm-cmd接受一个shell 命令的 prompt运行后把结果回填到你的 shell 中供你审查、编辑按enter执行或ctrlc取消llm-cmd-comp作者 CGamesPlay为 shell 提供按键绑定启动一个聊天来构建命令就绪后按enter直接回到 shell 命令行继续编辑执行llm-python新增llm python命令在与 LLM 相同的虚拟环境中运行 Python 解释器方便调试也让你在通过 Homebrew 或 pipx 安装 LLM 时仍能方便地使用 Python APIllm-cluster新增llm cluster命令对一批嵌入向量计算聚类聚类结果可以交给大模型生成摘要描述llm-jq允许你通过管道传入 JSON 数据和一个描述jq程序的 promptLLM 生成程序后立即对 JSON 执行。趣味插件与官方教程范例llm-markov目录中的最后一个分类Just for fun收录了llm-markov一个用 Markov chain》的完整示例完整源码就存放在仓库的 docs/plugins/llm-markov/ 目录中。这个插件麻雀虽小、五脏俱全是理解 LLM 插件机制的最佳标本llm_markov.py 中register_models(register)通过llm.hookimpl装饰器向插件系统注册Markov()模型实例Markov类继承llm.Model声明model_id markov与can_stream True通过execute()生成器逐个产出 token还定义了带 Pydantic 校验的Optionslength必须 ≥ 2delay必须在 0~10 之间pyproject.toml 中的[project.entry-points.llm]一节markov llm_markov是插件被发现的入口声明。运行时只需llm install -e .可编辑安装或llm install .即可用llm -m markov the cat sat on the mat -o length 20 -o delay 0.1体验一个带流式延迟的模型。教程还演示了如何用response.response_json向日志数据库写入附加信息、如何用llm logs -n 1查看日志、以及如何打包分发到 PyPI。安装与管理插件五个高频命令所有插件都必须安装在与 LLM相同的虚拟环境中。LLM 提供了llm install命令即pip install的薄封装来完成这件事# 安装插件 llm install llm-gpt4all # 卸载插件-y 跳过确认 llm uninstall llm-gpt4all -y安装后可以用两个命令确认插件与新增模型# 列出已安装插件及其注册的钩子、版本 llm plugins # 查看新增的模型--options 附带每个模型的选项说明 llm models llm models --optionsllm plugins的输出是一个 JSON 数组例如安装了 llm-gguf 后会显示该插件注册了register_commands与register_models两个钩子[ { name: llm-gguf, hooks: [register_commands, register_models], version: 0.1a0 } ]用 LLM_LOAD_PLUGINS 控制加载子集默认情况下 LLM 会加载同一虚拟环境中的所有插件。当你需要排查插件冲突、临时禁用某个坏插件或只想加载特定插件时可以用LLM_LOAD_PLUGINS环境变量控制# 禁用所有插件 LLM_LOAD_PLUGINS llm ... # 只加载指定插件逗号分隔 LLM_LOAD_PLUGINSllm-gpt4all,llm-cluster llm ... # 验证加载结果 LLM_LOAD_PLUGINS llm plugins这一机制在插件写坏时尤其救命如果某个插件让llm启动即报错连llm uninstall都无法执行可以先LLM_LOAD_PLUGINS llm uninstall llm-markov绕过坏插件完成卸载详见 tutorial-model-plugin.md 的What to do if it breaks一节。插件是如何被加载的源码级原理LLM 的插件体系建立在PluggyPython 生态标准的钩子系统之上。核心定义集中在 llm/hookspecs.py它声明了 6 个插件钩子规范钩子用途register_commands(cli)注册新的 CLI 子命令register_models(register, model_aliases)注册新的对话模型可含异步版本与别名register_embedding_models(register)注册新的嵌入模型register_template_loaders(register)注册-t prefix:模板加载器register_fragment_loaders(register)注册-f prefix:片段加载器register_tools(register)注册可供模型调用的工具函数而实际加载逻辑在 llm/plugins.py 的load_plugins()中其执行顺序清晰可读若未设置LLM_LOAD_PLUGINS通过pm.load_setuptools_entrypoints(llm)加载所有声明了llm分组入口点的已安装包若设置了LLM_LOAD_PLUGINS则只加载列表中指定的包逐个读取其llm分组的入口点并注册到 Pluggy 管理器最后始终加载两个内置默认插件llm.default_plugins.openai_models与llm.default_plugins.default_tools后者提供llm_version等内置工具。也就是说一个插件的存在感完全由pyproject.toml中的[project.entry-points.llm]入口点和模块内的llm.hookimpl函数决定——这也是 llm-markov 例子如此简洁的原因。仓库的 tests/test_plugins.py 直接通过plugins.pm.register()注册测试插件、断言钩子行为是对上述机制最直接的测试证据。从用插件到写插件如果你已经熟练使用插件目录中的现成插件下一步自然是用 编写模型插件教程 亲手实现一个。写一个插件通常只需要三步建目录写代码创建llm_markov.py之类的模块用llm.hookimpl实现一个或多个钩子声明入口点在pyproject.toml中配置[project.entry-points.llm]例如markov llm_markov安装验证llm install -e .可编辑安装后用llm plugins确认钩子已注册。进阶能力API Key 管理、异步模型、结构化输出、工具、附件、token 用量统计在 高级模型插件文档 中逐一展开插件工具函数 还提供了llm.get_key()密钥查找、llm.user_dir()用户数据目录、llm.ModelError向用户报告错误与Response.fake()测试辅助等实用设施。整个插件体系的设计哲学始终如一钩子声明能力、入口点暴露存在、CLI 统一呈现——理解这三者你就掌握了整个 LLM 扩展生态的钥匙。赞分享人工智能大模型AI 应用CLI【免费下载链接】llmAccess large language models from the command-line项目地址https://gitcode.com/gh_mirrors/llm/llm点击查看免费下载相关推荐DokuWiki插件生态全解析50扩展插件的安装与使用指南DokuWiki插件生态全解析50扩展插件的安装与使用指南 DokuWiki作为一款轻量级开源Wiki引擎其强大的插件生态是其核心优势之一。通过丰富的插件后端CMS知识管理Android-Coverflow性能优化指南提升滑动流畅度的10个技巧Android Coverflow性能优化指南提升滑动流畅度的10个技巧 Android Coverflow是一个基于ViewPager的Android封面流BepInEx完全指南3步解锁游戏无限扩展能力BepInEx完全指南3步解锁游戏无限扩展能力 你是否曾想过让喜欢的游戏拥有全新功能或者希望游戏体验能按你的想法自由定制BepInEx正是为这个梦想而生的前端前端构建创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表