当前位置: 首页 > news >正文

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

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

1. 背景

在人工智能领域,大型语言模型(LLM)正在以其强大的自然语言处理能力改变游戏规则。随着技术的进步,越来越多的开发者希望将这些模型集成到自己的应用程序中。为了满足这一需求,我开发了 LLamaWorker,一个基于 LLamaSharp 项目的 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
  1. 进入项目目录
cd LLamaWorker
  1. 根据您的需求选择项目文件。项目提供了三个版本的项目文件:
  • LLamaWorker:适用于 CPU 环境。
  • LLamaWorker_Cuad11:适用于搭载 CUDA 11 的 GPU 环境。
  • LLamaWorker_Cuad12:适用于搭载 CUDA 12 的 GPU 环境。

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

  1. 安装依赖项
dotnet restore LLamaWorker\LLamaWorker.csproj

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

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

  2. 启动服务器

dotnet run --project LLamaWorker\LLamaWorker.csproj

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

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

请添加图片描述

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 的 ChatUI 项目。通过这个项目你可以方便的与大模型进行交互测试。

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

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

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

请添加图片描述

6. 结语

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

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

http://www.lryc.cn/news/384251.html

相关文章:

  • Qt开发 | Qt控件 | QTabWidget基本用法 | QListWidget应用详解 | QScrollArea应用详解
  • 2023年 AI APT可持续攻击的调查研究报告
  • Leetcode 102.目标和
  • LLM AI工具和Delphi名称的起源
  • 打破数据分析壁垒:SPSS复习必备(十一)
  • 【十六】【QT开发应用】Menu菜单,contextMenuEvent,setContextMenuPolicy,addAction
  • 华为DCN技术:M-LAG
  • k8s持久化之emptyDir使用
  • Java露营基地预约小程序预约下单系统源码
  • 七天速通javaSE:第四天 java方法
  • jupyter notebook的markdown语法不起作用
  • Redis 学习笔记(2)
  • 快慢指针:删除有序数组中的重复项
  • 用户登录错误次数太多锁定账号
  • tedsign vue3 web-端框架中封装一个验证码组件 以及对应node 接口逻辑说明
  • 探索Scala并发编程之巅:高效并行处理的艺术
  • AudioLM: 音频生成的革命性模型
  • C++ Vector的模拟实现
  • Kubernetes之Controller详解
  • openlayers性能优化——开启图层预加载、减少空白等待时间
  • BlockingQueue详解(含动画演示)
  • wordpress商用付费主题与免费主题的区别
  • 【ARM Trace32(劳特巴赫) 使用介绍 2.7 -- bat 脚本传参数给 trace32 cmm 脚本】
  • NavicatforMySQL11.0软件下载-NavicatMySQL11最新版下载附件详细安装步骤
  • 弱监督学习
  • 代码随想录算法训练营第五十天|LeetCode1143 最长公共子序列、LeetCode1035 不相交的线、LeetCode53 最大子数组和
  • 百日筑基第三天-SOA初步了解
  • 「2024中国数据要素产业图谱1.0版」重磅发布,景联文科技凭借高质量数据采集服务入选!
  • 条码二维码读取设备在医疗设备自助服务的重要性
  • centos 7.8 安装sql server 2019