最近一直在做大模型应用开发工作,总结下用到的一些开源工具
1-模型训练
LLaMA-Factory
整体介绍
LLaMA-Factory 是一个开源的微调框架,为开发者提供简便高效的工具,以便在预训练模型基础上快速适应特定任务需求,提升模型表现。它通过用户友好的界面和丰富的功能特性,为开发者提供极大便利。
主要功能
-
多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
-
集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
-
多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
-
先进算法:GaLore、BAdam、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
-
实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
-
实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
-
极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。
GitHub 链接
https://github.com/hiyouga/LLaMA-Factory
2-模型部署、推理和代理
Ollama
整体介绍
Ollama 是一个专为在本地环境中运行和定制大型语言模型(LLM)而设计的开源工具。它提供了一个简单高效的接口,用于创建、运行和管理这些模型,并提供了丰富的预构建模型库,便于集成到各种应用程序中。
主要功能
-
简化部署:通过 Docker 容器简化 LLM 的部署过程,使非专业用户也能轻松管理和运行复杂模型。
-
轻量级与可扩展:保持较小的资源占用,具备良好的可扩展性,适应不同规模的项目和硬件条件。
-
API 支持:提供简洁的 API,降低与模型交互的技术门槛。
-
预构建模型库:包含预训练的大型语言模型,用户可直接应用,无需从头训练。
-
模型导入与定制:
-
支持从 GGUF、PyTorch 或 Safetensors 导入模型。
-
允许自定义提示(prompt engineering)以引导模型生成特定风格的文本。
-
-
跨平台支持:提供 macOS、Windows(预览版)、Linux 及 Docker 的安装指南。
-
命令行工具与环境变量:通过命令行启动 Ollama 服务,管理和运行模型。
GitHub 链接
XInference
整体介绍
Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。
主要功能
-
模型推理
:大语言模型,语音识别模型,多模态模型的部署流程被大大简化。一个命令即可完成模型的部署工作。 -
前沿模型
:框架内置众多中英文的前沿大语言模型,包括 baichuan,chatglm2 等,一键即可体验 -
异构硬件
:通过 ggml,同时使用你的 GPU 与 CPU 进行推理,降低延迟,提高吞吐。。 -
接口调用
:提供多种使用模型的接口,包括 OpenAI 兼容的 RESTful API(包括 Function Calling),RPC,命令行,web UI 等等。方便模型的管理与交互。 -
集群计算,分布协同
: 支持分布式部署,通过内置的资源调度器,让不同大小的模型按需调度到不同机器,充分使用集群资源。 -
开放生态,无缝对接
: 与流行的三方库无缝对接,包括 LangChain,LlamaIndex,Dify、FastGPT、RAGFlow、Chatbox。
GitHub 链接
https://github.com/xorbitsai/inference
https://inference.readthedocs.io/zh-cn/latest/index.html
vLLM
整体介绍
vllm是UC Berkeley大佬Ion Stoica组开源的大模型推理引擎。其在2023.6.20首次发布,于2024.3.30发布0.4.0版本。vllm性能优异、使用简单、代码结构清晰,因此获得了诸多关注,Github上也已有17k stars。
vllm首次提出并实现了Paged Attention,除此之外,还实现了Continuous Batching,量化(GPTQ, AWQ, SqueezeLLM, FP8 KV Cache等)、Tensor Parallelism、高性能CUDA kernel等功能。
vllm基于PyTorch、transformers、xformers、Ray、fastapi、triton、sentencepiece等库进行开发。
主要功能
vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务。
vLLM 速度很快,因为它具有:
-
最先进的服务吞吐量
-
使用 PagedAttention 对注意力键和值内存进行高效管理
-
对传入请求进行连续批处理
-
使用 CUDA/HIP 图进行快速模型执行
-
优化的 CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成。
-
推测解码
-
分块预填充
vLLM 灵活且易于使用,因为它具有:
-
与流行的 HuggingFace 模型无缝集成
-
使用各种解码算法(包括 并行采样、束搜索 等)进行高吞吐量服务
-
支持分布式推理的张量并行和管道并行
-
流式输出
-
与 OpenAI 兼容的 API 服务器
-
支持 NVIDIA GPU、AMD CPU 和 GPU、Intel CPU 和 GPU、PowerPC CPU、TPU 和 AWS Neuron。
-
支持前缀缓存
-
支持多 LoRA
GitHub 链接
https://github.com/vllm-project/vllm
https://vllm-zh.llamafactory.cn/
litellm
整体介绍
在人工智能和大语言模型(LLM)快速发展的今天,各大科技公司和初创企业纷纷推出了自己的LLM API服务。然而,不同API之间的调用方式和参数各不相同,给开发者带来了不小的挑战。LiteLLM应运而生,旨在解决这一问题,为开发者提供一个统一的接口来调用各种LLM API。使用LiteLLM的优势:
-
简化开发流程:使用统一的接口,大大减少了学习和适配不同API的时间。
-
提高代码可维护性:如果需要更换LLM提供商,只需修改配置,无需大规模重构代码。
-
灵活的部署选项:可以作为Python库使用,也可以部署为代理服务器。
-
开源透明:代码完全开源,社区活跃,持续更新和改进。
-
企业级支持:提供企业版本,包含更多高级功能和专业支持。
LiteLLM不仅可以作为Python库使用,还可以部署为代理服务器,提供更多高级功能:
-
认证和授权:可以为不同的用户或项目创建API密钥。
-
负载均衡:在多个API之间分配请求,提高系统的可靠性和性能。
-
费用跟踪和限制:可以为每个API密钥设置预算和使用限制。
-
日志和监控:详细记录API调用情况,便于分析和优化。
LiteLLM的应用场景
-
多LLM集成:在一个项目中需要使用多个不同提供商的LLM时,LiteLLM可以大大简化集成过程。
-
LLM API网关:作为企业内部的LLM API网关,统一管理和监控所有的LLM API调用。
-
快速原型开发:在选择最适合的LLM时,可以快速切换和测试不同的模型。
-
成本优化:通过负载均衡和费用跟踪功能,优化LLM API的使用成本。
-
研究和实验:为研究人员提供一个统一的接口来比较不同LLM的性能。
主要功能
主要功能
-
统一的API调用格式:无论是OpenAI、Azure、Anthropic还是Google的API,都可以使用相同的格式进行调用。
-
支持100多种LLM:覆盖了市面上绝大多数主流的LLM API服务。
-
一致的输出格式:不同API的返回结果会被统一处理,方便开发者后续使用。
-
代理服务器功能:提供负载均衡、失败重试等高级特性。
-
费用跟踪:可以设置预算并跟踪API调用的费用。
-
支持流式输出和异步调用。
相关链接
https://github.com/BerriAI/litellm
https://docs.litellm.ai/docs/
one-api
整体介绍
OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用.
主要功能
-
支持多种大模型
-
OpenAI ChatGPT 系列(支持 Azure OpenAI API)
-
Anthropic Claude 系列 (支持 AWS Claude)
-
Google PaLM2/Gemini 系列
-
Mistral 系列
-
字节跳动豆包大模型
-
百度文心一言系列
-
阿里通义千问系列
-
讯飞星火认知大模型
-
-
配置镜像与代理服务:支持多种第三方代理服务。
-
负载均衡:通过负载均衡访问多个渠道。
-
Stream 模式:实现打字机效果的流式传输。
-
多机部署:支持多机部署。
-
令牌管理:设置令牌过期时间、额度、IP 范围及模型访问。
-
兑换码管理:批量生成、导出兑换码,用于账户充值。
-
渠道管理:批量创建渠道,设置模型列表。
-
用户分组与渠道分组:为不同分组设置不同倍率。
-
额度管理:查看额度明细,以美元显示。
-
用户邀请奖励。
-
公告与充值设置:发布公告,设置充值链接和新用户初始额度。
-
模型映射:重定向用户请求模型。
-
失败自动重试。
-
绘图接口。
-
Cloudflare AI Gateway:支持设置代理。
-
自定义设置:系统名称、logo、页脚、首页和关于页面自定义。
-
管理 API:通过系统访问令牌调用管理 API。
-
Cloudflare Turnstile 用户校验。
-
用户管理:支持邮箱、飞书、GitHub、微信公众号登录注册。
-
主题切换:支持自定义主题。
-
Message Pusher:推送报警信息到多种 App。
相关链接
-
https://github.com/songquanpeng/one-api
3-模型评估
4-模型监控
Langfuse
整体介绍
Langfuse是一个开源的LLM(大型语言模型)工程平台,旨在帮助开发者调试、分析和迭代LLM应用。作为Y Combinator 2023冬季批次的创业公司,Langfuse正在快速发展,为LLM应用开发提供全面的解决方案。
Langfuse的核心功能包括LLM可观测性、提示管理、LLM评估、数据集管理、LLM指标分析和提示词游乐场等。这些功能共同构成了一个完整的LLM应用开发生态系统,使开发者能够更高效地构建、优化和管理他们的LLM应用。
主要功能
-
LLM可观测性
-
Langfuse提供了强大的LLM可观测性功能,允许开发者深入了解他们的LLM应用的运行状况。通过集成Langfuse SDK,开发者可以轻松地对他们的应用进行检测,并开始将跟踪数据导入Langfuse。这使得开发者能够实时监控应用性能,快速识别和解决潜在问题。
-
-
Langfuse UI
-
Langfuse提供了一个直观的用户界面,使开发者能够检查和调试复杂的日志。通过这个界面,开发者可以可视化地追踪LLM应用的执行流程,包括链式调用、代理使用和工具调用等复杂操作。这大大简化了调试过程,使开发者能够更快地定位和解决问题。
-
-
提示管理
-
提示管理是Langfuse的另一个关键特性。它允许开发者在Langfuse平台内管理、版本化和部署提示。这种集中化的提示管理方法使得团队可以更好地协作,追踪提示的演变,并确保在整个应用中使用最优化的提示。
-
-
LLM评估
-
Langfuse提供了多种方法来评估LLM的输出质量:
-
模型基础评估:允许在Langfuse内运行模型评估和使用LLM作为评判器。
-
用户反馈收集:集成用户反馈机制,直接从最终用户那里获取质量信号。
-
手动评分:在Langfuse界面中手动对LLM输出进行评分。
-
这些评估方法使开发者能够全面了解他们的LLM应用的性能,并做出数据驱动的改进决策。
-
-
数据集管理
-
Langfuse的数据集功能允许开发者创建和管理测试数据集。这些数据集可以用来测试预期的输入和输出对,并在部署新版本之前对性能进行基准测试。这种方法确保了应用在生产环境中的稳定性和可靠性。
-
-
LLM指标分析
-
Langfuse提供了强大的分析工具,用于跟踪关键指标如成本、延迟和质量。开发者可以通过仪表板和数据导出功能深入了解这些指标,从而做出明智的产品和工程决策。这些分析可以帮助开发者优化资源使用,提高应用性能,并确保输出质量始终保持在高水平。
-
-
提示词游乐场
-
Langfuse的LLM游乐场为开发者提供了一个交互式环境,用于测试和迭代他们的提示。这个功能使得开发者可以快速实验不同的提示策略,观察结果,并在将更改应用到生产环境之前进行优化。
-
GitHub 链接
5-模型和AGENT应用
整体介绍
在机器学习和人工智能领域,**模型(Model)和代理(Agent)**是两个关键概念。
-
模型(Model):指的是通过算法和数据训练得到的数学结构,用于预测、分类、生成等任务。例如,GPT-4 是一个自然语言处理模型,可以生成文本、回答问题等。
-
代理(Agent):是一种能够自主执行任务的系统,通常基于一个或多个模型。代理可以感知环境、做出决策并采取行动。例如,聊天机器人就是一种代理,它可以与用户互动、回答问题或完成特定任务。
主要功能
-
自动化任务:代理可以自动执行重复性或复杂的任务,提高效率。
-
交互能力:通过自然语言处理模型,代理能够与用户进行自然的对话和互动。
-
决策支持:结合数据和模型预测,代理可以提供智能的决策建议。
-
自学习与适应:高级代理可以通过不断学习和适应环境变化,提升自身性能。
Dify
整体介绍
Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。
主要功能
-
工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。
-
全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在此处找到。
-
Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。
-
RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。
-
Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。
-
LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。
-
后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。
相关链接
https://github.com/langgenius/dify/blob/main/README_CN.md
LOBE-CHAT
整体介绍
LOBE CHAT现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的(function call)插件系统。
主要功能
-
文件上传 / 知识库:支持多种文件类型的上传和知识库创建,方便管理和查找文件,提升对话体验。
-
多模型服务商支持:集成多种模型服务商,包括 AWS Bedrock、Google AI、Anthropic、ChatGLM、Moonshot AI、Together.ai、01.AI、Groq、OpenRouter、Minimax、DeepSeek、Qwen 等,提供丰富的会话选择。
-
支持本地大语言模型 (LLM):基于 Ollama 支持本地模型使用,满足特定用户需求。
-
模型视觉识别:支持 OpenAI 的 gpt-4-vision 模型,具备视觉识别能力,实现多模态对话。
-
TTS & STT 语音会话:支持文字转语音和语音转文字技术,提供多种声音选项,提升交流体验。
-
Text to Image 文生图:支持文本到图片生成技术,利用 DALL-E 3、MidJourney 等工具进行创作。
-
插件系统 (Tools Calling):通过插件实现实时信息获取和处理,扩展功能包括新闻聚合、文档检索等。
-
助手市场 (GPTs):提供一个创作者社区,支持助手的国际化和多语言版本。
-
支持本地 / 远程数据库:支持 CRDT 技术的本地数据库和 PostgreSQL 服务端数据库,提供无缝数据同步。
-
支持多用户管理:集成 next-auth 和 Clerk,提供灵活的用户认证和管理方案。
-
渐进式 Web 应用 (PWA):采用 PWA 技术,提供接近原生应用的体验,支持多设备使用。
-
移动设备适配:针对移动设备优化设计,提升用户体验。
-
自定义主题:提供灵活的主题模式和颜色定制选项,支持智能主题切换。
GitHub 链接
OPENWEBUI
整体介绍
Open WebUI 是一个可扩展、功能丰富、用户友好的自托管大语言模型(LLM)对话 WebUI,可完全离线运行。 它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容 API。 此外,通过插件系统可连接 Claude、Gemini 等 LLM。
主要功能
-
🚀 轻松安装:使用 Docker 或 Kubernetes(kubectl、kustomize 或 helm)进行无缝安装,支持 ollama 和 cuda 标签的镜像,确保无忧体验。
-
🤝 Ollama/OpenAI API 集成:轻松集成兼容 OpenAI 的 API,支持多种对话模式和 Ollama 模型。自定义 OpenAI API URL 以连接 LMStudio、GroqCloud、Mistral、OpenRouter 等。
-
🧩 Pipelines、Open WebUI 插件支持:通过 Pipelines 插件框架,将自定义逻辑和 Python 库无缝集成到 Open WebUI 中。启动您的 Pipelines 实例,将 OpenAI URL 设置为 Pipelines URL,探索无限可能性。示例包括功能调用、用户速率限制以控制访问、使用 Langfuse 进行使用监控、使用 LibreTranslate 进行实时翻译以支持多语言、毒性消息过滤等。
-
📱 响应式设计:在台式电脑、笔记本电脑和移动设备上享受无缝体验。
-
📱 移动端渐进式 Web 应用(PWA):通过 PWA 在移动设备上享受类似原生应用的体验,提供本地主机上的离线访问和无缝的用户界面。
-
✒️🔢 全面支持 Markdown 和 LaTeX:通过全面的 Markdown 和 LaTeX 功能提升您的 LLM 体验,实现丰富的互动。
-
🎤📹 免提语音/视频通话:体验集成免提语音和视频通话功能的无缝通信,提供更动态和互动的聊天环境。
-
🛠️ 模型构建器:通过 Web UI 轻松创建 Ollama 模型。创建和添加自定义角色/代理,定制聊天元素,并通过 Open WebUI 社区集成轻松导入模型。
-
🐍 原生 Python 函数调用工具:通过工具工作区内置的代码编辑器支持增强您的 LLM。只需添加纯 Python 函数,即可实现无缝集成。
-
📚 本地 RAG 集成:通过开创性的检索增强生成(RAG)支持,探索聊天互动的未来。此功能将文档互动无缝集成到聊天体验中。您可以直接将文档加载到聊天中或将文件添加到文档库中,在查询前使用 # 命令轻松访问。
-
🔍 RAG 的网页搜索:使用 SearXNG、Google PSE、Brave Search、serpstack、serper、Serply、DuckDuckGo 和 TavilySearch 等提供商进行网页搜索,并将结果直接注入您的聊天体验。
-
🌐 网页浏览功能:使用 # 命令后跟 URL 将网站无缝集成到聊天体验中。此功能允许您将网页内容直接融入对话中,增强互动的丰富性和深度。
-
🎨 图像生成集成:通过 AUTOMATIC1111 API 或 ComfyUI(本地)和 OpenAI 的 DALL-E(外部)无缝集成图像生成功能,丰富您的聊天体验,提供动态视觉内容。
-
⚙️ 多模型对话:轻松与多个模型同时互动,利用它们的独特优势提供最佳响应。通过并行利用多种模型增强体验。
-
🔐 基于角色的访问控制(RBAC):确保安全访问,只有授权人员才能访问您的 Ollama,并且仅管理员拥有独特的模型创建/拉取权限。
-
🌐🌍 多语言支持:通过我们的国际化(i18n)支持,以您喜欢的语言体验 Open WebUI。
GitHub 链接
https://github.com/open-webui/open-webui
NEXTCHAT
整体介绍
NextChat
是一个跨平台的ChatGPT/Gemini用户界面,支持Web、PWA、Linux、Windowns、MacOS部署,轻轻松松一键拥有你自己的跨平台ChatGPT/Gemin。
主要功能
-
提供体积极小(~5MB)的跨平台客户端(Linux/Windows/MacOS)
-
完整的 Markdown 支持:LaTex 公式、Mermaid 流程图、代码高亮等等
-
精心设计的 UI,响应式设计,支持深色模式,支持 PWA
-
极快的首屏加载速度(~100kb),支持流式响应
-
隐私安全,所有数据保存在用户浏览器本地
-
预制角色功能(面具),方便地创建、分享和调试你的个性化对话
-
海量的内置 prompt 列表,来自中文和英文
-
自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话
-
多国语言,支持English, 简体中文, 繁体中文, 日本語等
GitHub 链接
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md
6-RAG知识库
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索和生成模型的新型架构,旨在提升生成型模型的准确性和知识覆盖率。通过在生成回答时检索相关的知识库内容,RAG能够生成更加准确和有依据的响应。
主要功能
-
信息检索:在大规模知识库中检索与用户输入相关的文档或片段,作为生成模型的上下文。
-
增强生成:结合检索到的内容,生成模型能够提供更具信息量和准确性的回答。
-
动态更新:知识库可以动态更新,确保生成模型具备最新的信息。
-
多来源整合:支持整合来自不同来源的知识,如文档、数据库和互联网资源。
-
可解释性:通过展示检索到的内容,提升生成结果的可解释性和透明度。
主要应用
-
问答系统:提供基于知识库的准确回答,适用于客服、教育等领域。
-
内容生成:在生成文章、报告时结合实际数据和文献,提高内容的质量和可信度。
-
辅助决策:结合企业内部知识库,辅助管理层做出更明智的决策。
RAGFlow
整体介绍
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
主要功能
"Quality in, quality out"
-
基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
-
真正在无限上下文(token)的场景下快速完成大海捞针测试。
🍱 基于模板的文本切片
-
不仅仅是智能,更重要的是可控可解释。
-
多种文本模板可供选择
🌱 有理有据、最大程度降低幻觉(hallucination)
-
文本切片过程可视化,支持手动调整。
-
有理有据:答案提供关键引用的快照并支持追根溯源。
🍔 兼容各类异构数据源
-
支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
🛀 全程无忧、自动化的 RAG 工作流
-
全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
-
大语言模型 LLM 以及向量模型均支持配置。
-
基于多路召回、融合重排序。
-
提供易用的 API,可以轻松集成到各类企业系统。
相关链接
https://github.com/infiniflow/ragflow/blob/main/README_zh.md