llmflows
LLMFlows 是一个专为构建大语言模型(LLM)应用而设计的开源框架,旨在帮助开发者打造简单、明确且透明的聊天机器人、问答系统及智能体。在当前的 LLM 开发中,许多框架往往隐藏了关键的提示词(Prompt)或模型调用逻辑,导致应用内部像“黑盒”一样,难以监控和调试。LLMFlows 正是为了解决这一痛点而生,它拒绝隐藏任何细节,确保每一个组件、每一次调用都清晰可见,让开发者能完全掌控应用流程。
这款工具非常适合希望深入理解并精细控制 LLM 行为的软件开发者和研究人员。如果你厌倦了复杂的抽象层,渴望编写干净、可读性高且易于维护的代码,LLMFlows 将是理想选择。其核心技术亮点在于极简的抽象设计:通过封装主流 LLM API 提供便捷的调用与重试机制,并利用“提示词模板”动态管理输入变量。更重要的是,它支持可追踪的执行流,让应用的每一步交互都有据可查,极大地降低了故障排查和系统维护的难度。无论是构建简单的单轮对话,还是设计复杂的多模型协作流程,LLMFlows 都能让你在保持代码灵活性的同时,拥有前所未有的透明度。
使用场景
某初创团队正在开发一款基于维基百科数据的“复杂概念通俗解释器”,旨在将晦涩的学术术语转化为大众易懂的语言。
没有 llmflows 时
- 流程黑盒难调试:多个 LLM 调用串联时,中间提示词和输出结果被隐藏在复杂的回调函数中,一旦生成内容出错,开发者难以定位具体是哪个环节出了问题。
- 代码耦合度高:提示词模板硬编码在业务逻辑里,修改文案需要深入代码底层,缺乏灵活的变量管理机制,维护成本极高。
- 监控与追踪缺失:无法清晰看到每个步骤的输入输出及耗时,导致优化模型参数或排查延迟问题时只能靠猜,缺乏可追溯的执行链路。
使用 llmflows 后
- 全链路透明可视:llmflows 将每个 LLM 调用和向量检索步骤显式定义为独立节点,开发者能清晰追踪数据流向,快速锁定错误源头。
- 提示词管理规范化:利用
PromptTemplate类动态管理变量,将提示词与逻辑解耦,非技术人员也能轻松调整文案而不必改动核心代码。 - 结构化易于维护:通过极简的抽象构建出清晰的执行流,天然支持对每个组件进行监控和日志记录,让系统迭代和性能调优变得有据可依。
llmflows 通过极致的显式化和透明度,让复杂的 LLM 应用开发从“玄学调试”变成了可控的工程实践。
运行环境要求
- 未说明
未说明
未说明

快速开始
文档: https://llmflows.readthedocs.io PyPI: https://pypi.org/project/llmflows Twitter: https://twitter.com/LLMFlows Substack: https://llmflows.substack.com
🤖 关于 LLM Flows
LLMFlows 是一个用于构建简单、明确且透明的大型语言模型(LLM)应用的框架,例如聊天机器人、问答系统和智能代理。
其核心提供了一组极简的抽象层,使您能够利用 LLM 和向量存储,构建结构良好、清晰明确的应用程序,而不会出现隐藏的提示或 LLM 调用。LLM Flows 确保每个组件都完全透明,从而简化了监控、维护和调试工作。
📦 安装
pip install llmflows
🧭 理念
简单
我们的目标是构建一个简单、文档完善且抽象层次最少的框架,让用户能够在不牺牲功能性的前提下,轻松构建灵活的 LLM 驱动应用。
明确
我们希望创建一个明确的 API,使用户能够编写整洁易读的代码,同时轻松实现复杂的 LLM 流程交互。LLMFlows 的类赋予用户完全的控制权,不存在任何隐藏的提示或 LLM 调用。
透明
我们致力于帮助用户对其 LLM 驱动的应用程序拥有完全的透明度,通过提供可追踪的流程和每个组件的完整信息,从而便于监控、维护和调试。
▶️ 实时演示
请查看 LLM-99——一个使用 LLM 以通俗易懂的语言解释超导体的演示应用。该应用基于 LLMFlows 和 FastAPI 构建,并使用 Pinecone 存储从维基百科文章中生成的文档嵌入。您可以在我们的 示例文件夹 中找到此演示应用及其他示例的源代码。

🧪 入门指南
LLMs
LLMs 是 LLMFlows 中的主要抽象之一。LLM 类是对 OpenAI 等 LLM API 的封装,提供了配置和调用这些 API 的方法、失败重试机制以及响应格式化功能。
from llmflows.llms import OpenAI
llm = OpenAI(api_key="<your-openai-api-key>")
result, call_data, model_config = llm.generate(
prompt="为一首80年代摇滚歌曲生成一个酷炫的标题"
)
PromptTemplates
PromptTemplate 类允许我们创建包含变量的字符串,这些变量可以在稍后动态填充。一旦创建了提示模板对象,只需提供所需的变量即可生成实际的提示。
from llmflows.llms import OpenAI
from llmflows.prompts import PromptTemplate
prompt_template = PromptTemplate(
prompt="为一首关于{topic}的90年代嘻哈歌曲生成一个标题。"
)
llm_prompt = prompt_template.get_prompt(topic="友谊")
print(llm_prompt)
llm = OpenAI(api_key="<your-openai-api-key>")
song_title = llm.generate(llm_prompt)
print(song_title)
Chat LLMs
与仅需提示即可生成文本的普通 LLM 不同,聊天 LLM 需要会话历史记录。会话历史记录以用户和助手之间消息列表的形式表示。该历史记录会被发送给模型,并基于此生成新消息。
LLMFlows 提供 MessageHistory 类来管理聊天 LLM 所需的会话历史记录。
您可以使用 OpenAIChat 和 MessageHistory 类构建一个简单的聊天机器人:
from llmflows.llms import OpenAIChat, MessageHistory
llm = OpenAIChat(api_key="<your-openai-api-key>")
message_history = MessageHistory()
while True:
user_message = input("你:")
message_history.add_user_message(user_message)
llm_response, call_data, model_config = llm.generate(message_history)
message_history.add_ai_message(llm_response)
print(f"LLM:{llm_response}")
LLM Flows
在现实世界中,许多应用程序往往更为复杂,提示和 LLM 调用之间可能存在依赖关系。例如:

当您需要构建具有复杂依赖关系的应用程序时,可以使用 Flow 和 Flowstep 类。LLMFlows 会自动解析依赖关系,并确保每个流程步骤仅在其所有依赖项满足时才会执行:
from llmflows.flows import Flow, FlowStep
from llmflows.llms import OpenAI
from llmflows.prompts import PromptTemplate
openai_llm = OpenAI(api_key="<your-openai-api-key>")
# 创建提示模板
title_template = PromptTemplate("关于{topic}的好电影标题是什么?")
song_template = PromptTemplate(
"名为{movie_title}的电影配乐中,一个好的歌名是什么?"
)
characters_template = PromptTemplate(
"名为{movie_title}的电影中有哪两位主要角色?"
)
lyrics_template = PromptTemplate(
"请为名为{song_title}的电影歌曲创作歌词。主要角色是{main_characters}。"
)
# 创建流程步骤
movie_title_flowstep = FlowStep(
name="电影标题流程步骤",
llm=openai_llm,
prompt_template=title_template,
output_key="movie_title",
)
song_title_flowstep = FlowStep(
name="歌曲标题流程步骤",
llm=openai_llm,
prompt_template=song_template,
output_key="song_title",
)
characters_flowstep = FlowStep(
name="角色流程步骤",
llm=openai_llm,
prompt_template=characters_template,
output_key="main_characters",
)
song_lyrics_flowstep = FlowStep(
name="歌曲歌词流程步骤",
llm=openai_llm,
prompt_template=lyrics_template,
output_key="song_lyrics",
)
# 连接流程步骤
movie_title_flowstep.connect(song_title_flowstep, characters_flowstep, song_lyrics_flowstep)
song_title_flowstep.connect(song_lyrics_flowstep)
characters_flowstep.connect(song_lyrics_flowstep)
# 创建并运行流程
soundtrack_flow = Flow(movie_title_flowstep)
results = soundtrack_flow.start(topic="友谊", verbose=True)
异步流程
有时,如果所有依赖项都已满足,多个流程步骤可以并行运行。针对这种情况,LLMFlows 提供了异步类,通过并行执行那些已经具备所有必要输入的流程步骤,从而提升复杂流程的运行效率。
...
movie_title_flowstep = AsyncFlowStep(
name="电影标题流程步骤",
llm=openai_llm,
prompt_template=title_template,
output_key="movie_title",
)
song_title_flowstep = FlowStep(
name="歌曲标题流程步骤",
llm=openai_llm,
prompt_template=song_template,
output_key="song_title",
)
characters_flowstep = AsyncFlowStep(
name="角色流程步骤",
llm=openai_llm,
prompt_template=characters_template,
output_key="main_characters",
)
song_lyrics_flowstep = AsyncFlowStep(
name="歌曲歌词流程步骤",
llm=openai_llm,
prompt_template=lyrics_template,
output_key="song_lyrics",
)
...
如需更多示例,例如集成向量数据库、构建问答应用、智能体和 Web 应用程序,请访问我们的 文档 或查看仓库中的 示例文件夹。
🛠️ 功能特性
大语言模型
- 使用 OpenAI 的 ChatGPT 等大语言模型生成自然语言文本。
- 轻松配置 LLM 类,选择特定的模型、参数和设置。
- 在模型调用失败时自动重试,确保与 LLM 的交互可靠稳定。
提示模板
- 使用提示模板创建动态提示,实现灵活且可定制的文本生成。
- 在提示中定义变量,以根据具体输入生成定制化的提示字符串。
流程与流程步骤
- 通过流程和流程步骤组织 LLM 应用程序,为 LLM 交互提供清晰、有序的框架。
- 连接各个流程步骤,将输出作为输入传递,实现无缝的数据流动,并保持 LLM 流程的透明性。
- 利用异步流程,在所有输入可用时并行运行 LLM,优化性能和效率。
- 将自定义字符串处理函数直接嵌入到流程中,无需完全依赖 LLM 调用即可实现专门的文本转换。
向量存储集成
- 使用 VectorStoreFlowStep 集成 Pinecone 等向量数据库,实现高效、可扩展的向量嵌入存储与检索。
- 利用向量数据库无缝存储和查询向量数据,轻松与基于 LLM 的应用程序集成。
回调函数
- 在流程步骤的不同阶段执行回调函数,支持更高级的自定义、日志记录、追踪或其他特定集成。
- 通过回调全面控制和监控基于 LLM 的应用程序,确保对执行过程有清晰的了解。
明确的 API 与完全透明
借助 LLMFlows,您可以完全掌控应用程序的构建过程,不存在任何隐藏的提示或预设行为。
此外,LLMFlows 还可以帮助您回答以下问题:
- 某个特定的流程步骤是什么时候运行的?
- 它花费了多少时间?
- 输入变量有哪些?
- 提示模板是什么?
- 实际的提示内容是什么样的?
- 模型的具体配置是怎样的?
- 请求重试了多少次?
- API 返回的原始数据是什么?
- 使用了多少个 token?
- 最终结果是什么?
📚 用户指南
简介
LLM 流程
异步流程
向量存储
问答系统
流程中的向量存储
功能型流程步骤
回调函数
结合 FastAPI 的 LLM 流程
智能体
▶️ 示例
用户指南中使用的所有示例都可以在仓库的 examples 文件夹 中找到。
📃 许可证
LLMFlows 采用 MIT 许可证。更多信息请参阅 LICENCE。
❤️ 您能如何帮助我们?
感谢您花时间阅读我们的 README!如果您喜欢这个项目,请考虑给它点个赞、分享给朋友或在社交媒体上推广。
如果您已经尝试过 LLMFlows 并遇到任何问题、提出宝贵意见或建议,欢迎随时提交 issue 或与我们联系。
如果您觉得 LLMFlows 很有趣,并有意参与贡献,请查阅 CONTRIBUTING.md。
✉️ 联系方式
如果您想与我们取得联系,请随时通过以下社交媒体平台联系我们:
我非常期待您的来信!
版本历史
0.2.12023/10/080.1.22023/09/240.1.12023/09/160.0.122023/08/070.0.112023/08/060.0.102023/07/260.0.92023/07/230.0.82023/07/220.0.72023/07/160.0.62023/07/090.0.52023/07/060.0.42023/07/040.0.32023/06/26常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。