2个版本

0.1.1 2024年1月23日
0.1.0 2023年8月9日

#1305网络编程


用于 llmvm-outsource

MPL-2.0 许可证

44KB
809

llmvm

GitHub

语言模型的协议和模块化应用程序套件。

包含一个代码助手,可以自动从语言服务器协议服务器检索上下文(即类型定义),由LSP提供支持。

概览

llmvm由三种类型的可执行应用程序组成

  • 前端:使用语言模型的专业应用程序
  • 核心:在前端和后端之间充当中间人;管理与文本生成相关的状态,例如
    • 模型预设
    • 提示模板
    • 消息线程
    • 项目/工作空间
  • 后端:语言模型的包装器,处理原始文本生成请求

协议作为上述应用程序之间的粘合剂。使用multilinktower来实现这一点。

可用的包

  • 前端
    • codeassist:一个由LLM驱动的代码助手,可以自动从语言服务器协议服务器检索上下文(即类型定义)
    • chat:一个CLI聊天界面
  • 核心
  • 后端
    • outsource:将生成请求转发到已知的托管语言模型提供商,如OpenAI、Anthropic、Hugging Face和Ollama。
    • llmrs:使用llm包处理生成请求。支持的模型包括LLaMA、GPT-2、GPT-J等。

IPC详细信息

每个组件可以通过三种方法与依赖组件交互

  • 本地子进程:组件以子进程的方式调用依赖组件,并通过JSON-RPC使用stdio进行通信
  • 远程HTTP服务:依赖组件作为HTTP API,依赖组件被配置为向API发起Web请求
  • 直接链接:核心和后端有可以直接使用的库crate。仅当依赖组件是Rust应用程序时才有效。

这允许一些灵活的托管配置。以下是一些示例

Hosting scenarios

优势

  • 用于状态管理文本生成请求的单个协议
  • 前端或后端可以用任何语言实现,只需确保有stdio和/或HTTP服务器/客户端即可。
  • 使用Handlebars进行提示模板,允许强大的提示生成
  • 在文件系统中保存消息线程、预设和提示模板,以便轻松编辑/调整
  • 工作空间/项目管理,用于将项目状态与全局状态隔离
  • 模块化设计;任何组件都可以通过CLI由用户调用,以进行一次性低级或高级请求。

安装

需要cargo来安装二进制文件。使用rustup安装cargo。

运行以下命令安装核心

cargo install llmvm-core

安装“可用crate”下列出的所需前端和后端。查看它们的README以获取更多详细信息。

使用/配置

有关使用和配置的更多信息,请参阅每个相关组件的README。

模型ID

llmvm中的模型ID由三部分组成的字符串

<backend name>/<provider name>/<model name>

提供者名称必须以-chat-text后缀结尾

示例

  • 外包/openai-聊天/gpt-3.5-turbo
  • 外包/anthropic-聊天/claude-3-5-sonnet-20240620
  • llmrs/llmrs-文本/mpt-7b-聊天-q4_0-ggjt

默认情况下,核心将调用进程llmvm-<后端名称>进行本地进程通信。

预设/项目/线程/提示模板

有关更多信息,请参阅核心README

模型权重

请参阅相关后端README(例如llmrs)。

许可证

Mozilla公共许可证,版本2.0

依赖项

~8–21MB
~259K SLoC