llm-ls 项目简介
llm-ls 是一个利用大型语言模型(LLMs)来提升开发体验的语言服务器协议(LSP)服务器。其主要目的是为集成开发环境(IDE)的扩展提供一个通用平台,负责与大型语言模型交互的复杂任务,从而使得扩展代码能够保持轻量级。
功能特性
提示生成
llm-ls 使用当前文件作为上下文生成提示。用户可以根据需要选择是否使用“中间填充”技术。它还会通过对提示进行标记,确保提示在模型的上下文窗口之内。
数据收集
llm-ls 收集有关请求和补全的信息,以便重新训练模型。需要注意的是,llm-ls 并不会将数据导出到任何地方(除非在查询模型 API 时设置了用户代理),所有的数据,都只是存储在日志文件中(路径为 ~/.cache/llm_ls/llm-ls.log
),前提是在日志等级设置为 info
时。
代码补全
llm-ls 通过解析代码的抽象语法树(AST)来判断补全内容应该是多行、单行还是空(即不进行补全)。
多后端支持
llm-ls 可以兼容多个后端服务,包括 Hugging Face 的 Inference API、Hugging Face 的 text-generation-inference、ollama 以及兼容 OpenAI 的 API,比如 python llama.cpp server bindings。
兼容的扩展
以下是与 llm-ls 兼容的 IDE 扩展:
- llm.nvim
- llm-vscode
- llm-intellij
- jupytercoder(开发中)
开发计划
未来的开发计划包括:
- 支持从工作空间中的多个文件获取上下文
- 添加
suffix_percent
设置,用于确定提示中的前缀和后缀的令牌比例 - 添加上下文窗口填充百分比或将上下文窗口更改为
max_tokens
- 过滤不良建议(例如重复性高、与下面相同等)
- 插入 OLTP 跟踪?
llm-ls 目前仍在开发阶段,因此仍可能存在不稳定或未完成的功能。该项目的目标是简化与大型语言模型的交互过程,提高开发者在编写代码时的效率和舒适度。