Skip to content

Latest commit

 

History

History
158 lines (127 loc) · 4.95 KB

README_CN.md

File metadata and controls

158 lines (127 loc) · 4.95 KB

LLamaWorker

LLamaWorker 是一个基于 LLamaSharp 项目开发的 HTTP API 服务器。它提供与 OpenAI 兼容的 API,使得开发者可以轻松地将大型语言模型(LLM)集成到自己的应用程序中。

English] | 中文

特性

  • 兼容 OpenAI API: 提供与 OpenAI / Azure OpenAI 类似的 API,方便迁移和集成。
  • 多模型支持: 支持配置和切换不同的模型,满足不同场景的需求。
  • 流式响应: 支持流式响应,提高大型响应的处理效率。
  • 嵌入支持: 提供文本嵌入功能,支持多种嵌入模型。
  • 对话模版: 提供了一些常见的对话模版。
  • 自动释放: 支持自动释放已加载模型。
  • 函数调用: 支持函数调用。
  • API Key 认证: 支持 API Key 认证。
  • Gradio UI Demo: 提供了一个基于 Gradio.NET 的 UI 演示。

使用 Vulkan 编译版本

在发布中提供了 Vulkan 后端的编译版本,您可以从 Releases 中下载对应的编译版本:

  • LLamaWorker-Vulkan-win-x64.zip
  • LLamaWorker-Vulkan-linux-x64.zip

下载并解压后,修改 appsettings.json 文件中的配置,即可运行软件并开始使用。

对于其他后端,您也可以下载 Vulkan 版本,前往 llama.cpp 下载对应的编译版本,替换相关类库即可。亦可自行编译 llama.cpp 项目获得所需的类库。

函数调用

LLamaWorker 支持函数调用,目前在配置文件中提供了三个模板,已经测试了 Phi-3Qwen2Llama3.1 的函数调用效果。

函数调用兼容 OpenAI 的 API,您可以通过以下 JSON 请求进行测试:

POST /v1/chat/completions

{
  "model": "default",
  "messages": [
    {
      "role": "user",
      "content": "北京和上海哪里气温高?"
    }
  ],
  "tools": [
    {
      "function": {
        "name": "GetWeatherPlugin-GetCurrentTemperature",
        "description": "获取指定城市的当前气温。",
        "parameters": {
          "type": "object",
          "required": [
            "city"
          ],
          "properties": {
            "city": {
              "type": "string",
              "description": "城市名称"
            }
          }
        }
      },
      "type": "function"
    },
    {
      "function": {
        "name": "EmailPlugin-SendEmail",
        "description": "向收件人发送电子邮件。",
        "parameters": {
          "type": "object",
          "required": [
            "recipientEmails",
            "subject",
            "body"
          ],
          "properties": {
            "recipientEmails": {
              "type": "string",
              "description": "以分号分隔的收件人电子邮件列表"
            },
            "subject": {
              "type": "string"
            },
            "body": {
              "type": "string"
            }
          }
        }
      },
      "type": "function"
    }
  ],
  "tool_choice": "auto"
}

源码编译

  1. 克隆仓库到本地

    git clone https://github.com/sangyuxiaowu/LLamaWorker.git
  2. 进入项目目录

    cd LLamaWorker
  3. 根据您的需求选择项目文件。项目提供了三个版本的项目文件:

    • LLamaWorker.Backend.Cpu:适用于 CPU 环境。
    • LLamaWorker.Backend.Cuda11:适用于搭载 CUDA 11 的 GPU 环境。
    • LLamaWorker.Backend.Cuda12:适用于搭载 CUDA 12 的 GPU 环境。
    • LLamaWorker.Backend.Vulkan:Vulkan 方案。

    选择适合您环境的项目文件进行下一步。

  4. 安装依赖项

    dotnet restore LLamaWorker.Backend.Cpu\LLamaWorker.Backend.Cpu.csproj

    如果您使用的是 CUDA 版本,请替换项目文件名。

  5. 修改配置文件 appsettings.json。默认配置已包含一些常见的开源模型配置,您只需按需修改模型文件路径(ModelPath)即可。

  6. 启动服务器

    dotnet run --project LLamaWorker.Backend.Cpu\LLamaWorker.Backend.Cpu.csproj

    如果您使用的是 CUDA 版本,请替换项目文件名。

API 参考

LLamaWorker 提供以下 API 端点:

  • /v1/chat/completions: 对话完成请求
  • /v1/completions: 提示完成请求
  • /v1/embeddings: 创建嵌入
  • /models/info: 返回模型的基本信息
  • /models/config: 返回已配置的模型信息
  • /models/{modelId}/switch: 切换到指定模型

Gradio UI Demo

这个 UI 基于 Gradio.NET

你也可以通过运行以下命令尝试 Gradio UI 演示:

dotnet restore ChatUI\ChatUI.csproj
dotnet run --project ChatUI\ChatUI.csproj

然后打开浏览器访问 Gradio UI 演示。