探索 LLamaWorker:基于LLamaSharp的.NET本地大模型服务

目录

1. 背景

2. LLamaWorker 的特色

3. 快速开始

4. 配件文件介绍

5. API 参考

6. ChatUI

7. 结语

References


 

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

1. 背景

在人工智能领域,大型语言模型(LLM)正在以其强大的自然语言处理能力改变游戏规则。随着技术的进步,越来越多的开发者希望将这些模型集成到自己的应用程序中。为了满足这一需求,我开发了 LLamaWorker,一个基于 LLamaSharp[1] 项目的 ASP.NET Web API 服务。LLamaWorker 提供了与 OpenAI 兼容的 API,可以方便地接入其他应用程序,例如 Semantic Kernel 等相关框架或是禅道AI助手等需要接入AI服务的应用。

LLamaWorker 项目地址:https://github.com/sangyuxiaowu/LLamaWorker?wt.mc_id=DT-MVP-5005195

2. LLamaWorker 的特色

LLamaWorker 的设计初衷是为了使开发者能够轻松、高效地将大型语言模型集成到各种应用中。以下是它的一些核心特性:

兼容 OpenAI API:LLamaWorker 提供了与 OpenAI 类似的 API,使得从 OpenAI 平台迁移至使用自己托管的模型变得无缝且便捷。•多模型支持:无论您的需求是文本生成、对话系统还是文本嵌入,LLamaWorker 都能够支持配置和切换不同的模型,满足您的不同场景需求。•流式响应:对于大型响应内容,LLamaWorker 支持流式响应,极大提高了处理效率和用户体验。•嵌入支持:除了文本生成和处理,LLamaWorker 还提供了文本嵌入功能,支持开启模型的嵌入生成,同时也支持转发嵌入请求到其他模型服务。•对话模版:为了帮助开发者更快地实现应用,LLamaWorker 还提供了一些常见的对话模版。•自动释放: 支持自动释放已加载模型。•API Key 认证: 支持 API Key 认证。•Gradio UI Demo: 提供了一个基于 Gradio.NET 的 UI 演示。

3. 快速开始

LLamaWorker 主要面向 .NET 开发者,要开始使用 LLamaWorker,您只需要几个简单的步骤:

1.克隆仓库到本地

git clone https://github.com/sangyuxiaowu/LLamaWorker.git

2.进入项目目录

cd LLamaWorker

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

LLamaWorker:适用于 CPU 环境。•LLamaWorker_Cuad11:适用于搭载 CUDA 11 的 GPU 环境。•LLamaWorker_Cuad12:适用于搭载 CUDA 12 的 GPU 环境。

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

4.安装依赖项

dotnet restore LLamaWorker\LLamaWorker.csproj

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

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

6.启动服务器

dotnet run --project LLamaWorker\LLamaWorker.csproj

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

如果你以调试模式启动,即可在浏览器中打开 swagger 页面查看 API 文档。

图片

swagger

4. 配件文件介绍

LLamaWorker 配置文件内容如下:


{
    "AutoReleaseTime": 0,
    "ApiKey":"",
    "LLmModelSettings": [
    ],
    "EmbedingForward": "http://127.0.0.1:5000/embeddings"
}

AutoReleaseTime:自动释放时间,分钟。0 表示不自动释放。•ApiKey :API 密钥,默认为空,即不需要 API 密钥。•LLmModelSettings:模型配置。•EmbedingForward:嵌入转发地址。

在 LLamaWorker 项目的 appsettings.json 已经提供了一些常见的开源模型配置文件,您可以根据自己的需求选择合适的模型,以下是 Qwen2 的配置示例:​​​​​​​

{
  "Name": "qwen2_7b",
  "Description": "通义千问 v2 7b instruct q5_k_m",
  "Version": "2",
  "WebSite": "https://github.com/QwenLM/Qwen2",
  // 系统角色提示词,未指定时使用默认配置,可配置为空,则不自动添加
  "SystemPrompt": "You are a helpful assistant",
  // LLm ModelParams, LLamaSharp 的模型参数
  "ModelParams": {
    "ModelPath": "H:\\workspace\\gpt\\models\\qwen2-7b-instruct-q5_k_m.gguf",
    "ContextSize": 32768,
    "Seed": 1337,
    "GpuLayerCount": 50,
    "FlashAttention": true, // 是否启用闪存注意力,注意 qwen2 模型需要启用
    "Embeddings": true // 是否启用嵌入
  },
  "AntiPrompts": [ "<|im_start|>", "<|im_end|>" ],
  "WithTransform": { // 对话模版选择类
    "HistoryTransform": "LLamaWorker.Transform.BaseHistoryTransform",
    "OutputTransform": "LLamaWorker.Transform.BaseTextStreamTransform"
  }
}

5. API 参考

LLamaWorker 除了提供OpenAI常用的chatcompletionsembeddings接口外,还提供了一些其他接口,例如:

/models/info: 返回模型的基本信息•/models/config: 返回已配置的模型信息•/models/{modelId}/switch: 切换到指定模型

6. ChatUI

LLamaWorker 提供了一个基于 Gradio.NET[2] 的 ChatUI 项目。通过这个项目你可以方便的与大模型进行交互测试。

在启用 LLamaWorker 项目后,你也可以通过运行以下命令尝试 Gradio UI 演示:​​​​​​​

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

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

图片

ChatUI

7. 结语

LLamaWorker 项目的目标是为开发者社区提供一个高性能、易于使用的工具,以便更好地利用大型语言模型的能力。无论您是在构建聊天机器人、内容生成工具还是任何需要自然语言处理能力的应用,LLamaWorker 都能为您提供强大的支持。

我非常期待看到社区成员如何使用 LLamaWorker 来实现他们的创意和项目。如果您对 LLamaWorker 有任何反馈或建议,欢迎通过 GitHub Issues 或 Pull Requests 与我交流。让我们一起推动开源社区的发展,解锁更多的可能性!

References

[1] LLamaSharp: https://github.com/SciSharp/LLamaSharp?wt.mc_id=DT-MVP-5005195
[2] Gradio.NET: https://github.com/feiyun0112/Gradio.Net?wt.mc_id=DT-MVP-5005195

引入地址​​​​​​​ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值