llm-ls简介
llm-ls是由Hugging Face开发的一个开源LSP(Language Server Protocol)服务器,它利用大语言模型(LLM)来提供更智能的代码补全功能。该项目的目标是为IDE扩展提供一个通用平台,处理与LLM交互的繁重工作,使扩展代码能够尽可能轻量化。
主要特性
-
智能提示:使用当前文件作为上下文生成提示。可根据需要使用"填充中间"方式或不使用。
-
上下文管理:通过对提示进行标记化,确保生成的提示在模型的上下文窗口范围内。
-
遥测:收集有关请求和补全的信息,可用于模型再训练。值得注意的是,llm-ls不会将数据导出到任何地方(除了在查询模型API时设置用户代理),如果将日志级别设置为
info
,所有内容都会存储在日志文件(~/.cache/llm_ls/llm-ls.log
)中。 -
智能补全:llm-ls会解析代码的AST(抽象语法树),以确定补全应该是多行、单行还是空(无补全)。
-
多后端支持:llm-ls兼容Hugging Face的Inference API、text-generation-inference、ollama以及OpenAI兼容的API,如python llama.cpp server bindings。
兼容扩展
llm-ls目前支持以下IDE扩展:
- llm.nvim - Neovim插件
- llm-vscode - Visual Studio Code扩展
- llm-intellij - IntelliJ IDEA插件
- jupytercoder - Jupyter Notebook扩展
学习资源
- llm-ls GitHub仓库 - 项目源码及详细文档
- Hugging Face官方博客介绍 - 深入了解llm-ls的设计理念
- llm-ls使用教程 - 快速上手指南
- LSP规范文档 - 了解LSP的工作原理
未来规划
llm-ls团队计划在未来实现以下功能:
- 支持从工作区的多个文件获取上下文
- 添加
suffix_percent
设置,用于确定提示中前缀和后缀令牌数量的比率 - 添加上下文窗口填充百分比或将context_window更改为
max_tokens
- 过滤掉不良建议(重复、与下文相同等)
- 添加OLTP跟踪功能
结语
llm-ls为开发者提供了一个强大的工具,通过利用大语言模型的能力,显著提升了代码编写效率。无论您是使用Neovim、VSCode还是IntelliJ IDEA,都可以通过相应的扩展来体验llm-ls带来的智能代码补全功能。随着项目的不断发展,我们可以期待看到更多创新功能的加入,进一步改善开发体验。
如果您对llm-ls感兴趣,不妨访问其GitHub仓库深入了解,或者直接在您喜欢的IDE中安装相应的扩展进行尝试。相信llm-ls会成为您日常开发中不可或缺的得力助手!