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

news2025/2/25 21:35:26

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.coloradmin.cn/o/1865967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OpenCV 图像处理 Python版】图像处理的基本操作

文章目录 1.图像的 IO 操作1.1 图像读取 imread1.2 图像显示1.2.1 opencv 方式1.2.2 matplotlib 方式 1.3 图像保存 imwrite 2.绘制几何图形1. 绘制直线2. 绘制矩形3. 绘制圆形4. 绘制多边形5. 添加文字 3.获取并修改图像中的像素点3.1 获取像素值3.2 修改像素值3.3 获取和修改…

Chromium 调试指南2024 Mac篇 - 准备工作 (一)

1.引言 Chromium是一个由Google主导开发的开源浏览器项目&#xff0c;它为Google Chrome浏览器提供了基础框架。Chromium不仅是研究和开发现代浏览器技术的重要平台&#xff0c;还为众多其他基于Chromium的浏览器&#xff08;如Microsoft Edge、Brave等&#xff09;提供了基础…

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数 一、问题描述二、解决方法 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 使用MATLAB批量读取图像文件&#xff0c;会发现提取出…

Redis-实战篇-缓存击穿问题及解决方案

文章目录 1、缓存击穿2、常见的解决方案有两种&#xff1a;2.1、互斥锁2.2、逻辑过期2.3、两种方案对比 3、利用互斥锁解决缓存击穿问题3.1、ShopServiceImpl.java3.2、使用 jmeter.bat 测试高并发 4、利用逻辑过期解决缓存击穿问题 1、缓存击穿 缓存击穿问题 也叫 热点key问题…

图形化用户界面-java头歌实训

图形化用户界面 import java.awt.*; import javax.swing.*; public class GraphicsTester extends JFrame { public GraphicsTester() { super("Graphics Demo"); setSize(480, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint…

Windows 10,11 Server 2022 Install Docker-Desktop

docker 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 docker-compose Compose 是用于定义和运行…

利用viztracer进行性能分析和优化

上一篇文章&#xff0c;我们详细讲解了scalene这个性能分析和优化工具的使用流程&#xff1b;今天&#xff0c;我们将深入探讨另一个性能分析和优化工具——viztracer。 什么是viztracer&#xff1f; viztracer是一个非常强大的分析器&#xff0c;可以生成详细的性能报告和可…

Spring AI 实现调用openAi 多模态大模型

什么是多模态? 多模态(Multimodal)指的是数据或信息的多种表现形式。在人工智能领域,我们经常会听到这个词,尤其是在近期大型模型(如GPT-4)开始支持多模态之后。 模态:模态是指数据的一种形式,例如文本、图像、音频等。每一种形式都是一种模态。多模态:多模态就是将…

VMware Windows sever 虚拟机互联网连接配置

一、VMware配置 1、虚拟网络编辑 从左上角 编辑→虚拟网络编辑器 进入 2、配置NAT模式 配置的子网IP&#xff0c;在虚拟机中获取到的ip跟子网IP的前三个是一样的 1.配置网关 2.配置DHCP设置 这个主要是分配ip最后一位获取的区间 3、虚拟机配置 二、Windows Server 虚拟机配置…

Ubuntu下包管理命令dpkg安装deb软件包的示例与汇总

一、选定待安装的deb软件包&#xff1a; 二、dpkg安装chrome浏览器的示例&#xff1a; 三、汇总dpkg包管理命令格式&#xff1a;

电脑开机之后屏幕没有任何显示?怎么检查?

前言 最近有很多小伙伴来咨询&#xff0c;自己的电脑开机之后&#xff0c;屏幕真的是一点显示都没有&#xff0c;只有CPU风扇在转。 这个情况小白经常经常经常遇到&#xff0c;所以写一篇关于这个问题的排查教程。按照这个教程来排查&#xff0c;除非真的是硬件损坏&#xff…

2024年高级会计职称题库。高效备考!!!

61.下列各项中&#xff0c;属于对会计职业道德进行自律管理与约束的机构是&#xff08;&#xff09;。 A.纪律检查部门 B.财政部门 C.会计行业组织 D.其他组织 答案&#xff1a;C 62.下列各项中&#xff0c;对会计职业行为自我约束和自我控制的部门主要是&#xff08;&am…

基于RK3568车载电脑助力日本巴士公司高效完成巴士到站系统项目部署

无处不在的物联网&#xff08;IoT&#xff09;技术已经渗透到了人类生活的各个角落&#xff0c;如日常出行乘坐的公交车上&#xff0c;物联网&#xff08;IoT&#xff09;技术的应用就得到完美诠释&#xff01;其通过公交车上的车载电脑网络与中控室服务器连接来对公交车的运行…

论文学习_基于导向式模糊测试的二进制程序漏洞验证方法

1. 引言 研究背景及现存问题:基于代码相似性比较的漏洞检测方法属于静态分析方法,不可避免地存在误报率高的问题,对静态检测方法得到的疑似漏洞代码进行人工分析存在工作量大, 效率低的问题。解决该问题的有效的方案之一是使用导向式模糊测试方法,生成能够执行到疑似漏洞…

【不看答案挑战,今天你刷题了吗?】LeetCode33,题目+解析+答案

你是否觉得每天面对繁忙的工作和生活&#xff0c;编程能力逐渐停滞不前&#xff1f;或者你在寻找心仪工作的过程中&#xff0c;因为算法题目而错失良机&#xff1f;每次对面试官各种算法题目而力有不逮&#xff1f;那么从现在开始参与**【不看答案挑战&#xff0c;每天刷一道Le…

探索顺序结构:栈的实现方式

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;渐入佳境之数据结构与算法 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ​​ 一、栈的定义 栈&#xff08;Stack&#xf…

星坤X0600系列线对板连接器:简化连接,提升效率!

随着科技的不断进步&#xff0c;电子设备在我们的生活和工作中扮演着越来越重要的角色。然而&#xff0c;随之而来的是设备连接的复杂性&#xff0c;这不仅增加了安装和维修的时间成本&#xff0c;还可能因为操作不当而影响设备的性能和寿命。针对这一问题&#xff0c;中国星坤…

文本生成图像综述

本调查回顾了扩散模型在生成任务中广泛流行的背景下文本到图像的扩散模型。作为一份自成一体的作品&#xff0c;本调查首先简要介绍了基本扩散模型如何用于图像合成&#xff0c;然后介绍了条件或指导如何改善学习。基于这一点&#xff0c;我们介绍了文本到图像生成方面的最新方…

C++设计模式——Facade外观模式

一&#xff0c;外观模式简介 外观模式是一种结构型设计模式&#xff0c; 又称为门面模式&#xff0c;也是一种基于创建对象来实现的模式&#xff0c;为子系统中的各组接口的使用提供了统一的访问入口。 外观模式对外提供了一个对象&#xff0c;让外部客户端(Client)对子系统的…

python小白兔做操 青少年编程电子学会python编程等级考试三级真题解析2021年12月

python小白兔做操 2021年12月 python编程等级考试级编程题 一、题目要求 1、编程实现 小白兔们每天早上都到草坪上做早操。做操前,首先要按照身高由矮到高排个队,下列代码实现了排队的功能。首先读取小白兔的只数,然后读取每只小白兔的身高信息,进行由矮到高的处理,最…