langroid

GitHub
4k 366 非常简单 1 次阅读 3天前MITAgent开发框架语言模型图像其他插件
AI 解读 由 AI 自动生成,仅供参考

Langroid 是一个由卡内基梅隆大学和威斯康星大学麦迪逊分校研究人员打造的 Python 框架,旨在帮助开发者轻松构建基于大语言模型(LLM)的多智能体应用。它通过模拟“演员模型”,让用户定义多个具备不同能力的智能体(如配备 LLM、向量数据库或工具函数),这些智能体通过相互发送消息协作,共同解决复杂任务。

传统的大模型应用开发往往依赖复杂的编排逻辑或重型框架,而 Langroid 提供了一种更直观、轻量且原则清晰的替代方案。它不依赖 LangChain 等其他中间层,直接支持市面上绝大多数大模型,显著降低了开发门槛,让开发者能专注于业务逻辑而非底层架构。此外,Langroid 还率先支持 MCP 协议,允许智能体灵活调用外部服务器工具,并提供了可选的 Claude Code 插件以加速开发流程。

这款工具特别适合希望深入探索多智能体协作模式的 AI 开发者、研究人员以及需要构建生产级安全应用的企业团队。已有如 Nullify 等公司在评估了多种主流框架后,选择将 Langroid 应用于实际生产中,用于自动化漏洞修复等关键场景。如果你正在寻找一个既简洁又强大的框架来释放多智能体系统的潜力,Langroid 值得尝试。

使用场景

某金融科技团队需要构建一个自动化系统,从每日海量的非结构化新闻和财报中提炼关键数据,并生成合规的投资风险报告。

没有 langroid 时

  • 单点故障频发:试图用单个大模型提示词(Prompt)完成“提取 - 分析 - 写作”全流程,常因上下文过长导致逻辑混乱或关键数据遗漏。
  • 调试黑盒化:当输出结果出错时,无法定位是信息提取不准还是推理逻辑偏差,只能盲目调整庞大的提示词,效率极低。
  • 协作机制缺失:难以让“数据员”和“风控专家”两个角色真正互动,往往需要编写复杂的胶水代码来串联多个独立的 API 调用。
  • 扩展性差:若要增加“情感分析”环节,需重构整个单体脚本,代码耦合度高,维护成本随功能增加呈指数级上升。

使用 langroid 后

  • 角色分工明确:轻松定义“信息提取代理”和“风险分析代理”,前者专攻数据清洗,后者负责逻辑研判,通过消息传递协同工作,准确率显著提升。
  • 过程透明可控:利用内置的对话日志,开发者可清晰看到两个代理如何交换信息、修正错误,快速定位并优化特定环节的指令。
  • 原生多智能体协作:无需编写繁琐的状态机或回调函数,langroid 基于 Actor 模型天然支持代理间自动协商,复杂任务流变得简洁优雅。
  • 灵活热插拔:新增“情感分析代理”只需几行代码即可加入现有网络,各模块独立运行互不干扰,系统迭代速度大幅加快。

langroid 通过将复杂的单体 AI 任务拆解为可协作的多智能体网络,让开发者能以极低的代码成本构建出高可靠、易维护的生产级应用。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

非必需(取决于所选 LLM,支持本地模型如 Ollama/Mistral 或云端 API)

内存

未说明

依赖
notesLangroid 是一个轻量级框架,不依赖 LangChain。它支持多种 LLM(包括 OpenAI、本地 Ollama、Gemini 等)。若使用本地大模型(如 Mistral-7b),需根据具体模型要求配置 GPU 和内存。项目已迁移至 uv 进行依赖管理,并完全兼容 Pydantic V2。支持 Docker 多架构部署。
python3.8+
pydantic>=2.0
openai
litellm
tiktoken
numpy
requests
langroid hero image

快速开始

Logo

PyPI - Version Downloads Pytest codecov Multi-Architecture DockerHub

Static Badge Open in Colab Discord Substack

文档 · 示例仓库 · Discord · 贡献指南

Langroid 是一个直观、轻量级、可扩展且基于原则的 Python 框架,由卡内基梅隆大学和威斯康星大学麦迪逊分校的研究人员开发,旨在轻松构建由大语言模型驱动的应用程序。用户只需设置智能体,为其配备可选组件(如大语言模型、向量存储以及工具或函数),分配任务,然后让这些智能体通过消息交互协作解决问题。这种多智能体范式受到 Actor 模型 的启发(不过你无需了解该模型!)。

Langroid 是一种全新的大语言模型应用开发方式,在简化开发者体验方面投入了大量思考;它不依赖 Langchain 或其他任何大语言模型框架,并且几乎可以与所有大语言模型配合使用(详见:https://langroid.github.io/langroid/tutorials/supported-models/)。

🔥 ✨ 现已推出 Claude Code 插件,内置模式与最佳实践,可显著加速 Langroid 开发。

🔥 阅读正在编写中的 Langroid 架构概述 以及 Langroid 快速入门教程

🔥 MCP 支持:通过 Langroid 简单的 MCP 工具适配器,任何 LLM 智能体都可以利用 MCP 服务器,将服务器提供的工具转换为 Langroid 的 ToolMessage 实例。

📢 目前已有公司正在生产环境中使用或定制 Langroid。以下是其中一家公司的评价:

Nullify 使用 AI 智能体进行安全软件开发,能够发现、优先排序并修复漏洞。在评估了 CrewAI、Autogen、LangChain、Langflow 等框架后,我们内部采用了 Langroid 的多智能体编排框架,并将其部署到生产环境。相比这些框架,Langroid 在配置简便性和灵活性方面表现更为出色。Langroid 的智能体和任务抽象设计直观、逻辑清晰,提供了极佳的开发体验。我们希望尽快将方案投入生产,而使用其他框架可能需要数周时间,但借助 Langroid,我们仅用几分钟就取得了良好效果。强烈推荐!
—— Jacky Wong, Nullify 公司 AI 负责人

🔥 LanceDB 团队发表了一篇关于 Langroid 的介绍性博客文章:Langoid 多智能体编程框架

🔥 最新发表于《医疗人工智能》期刊(2024 年)的一篇论文,介绍了一个基于 Langroid 的多智能体 RAG 系统,用于药物警戒工作,详情请参阅博客文章:面向药物警戒的 Malade 多智能体架构

我们欢迎社区贡献:有关如何参与贡献的想法,请参阅 贡献指南

如果您正在构建大语言模型应用,或者希望为贵公司获得 Langroid 方面的帮助,亦或是希望优先开发针对贵公司特定场景的 Langroid 功能,请联系 Prasad Chalasani 进行咨询或开发合作:pchalasani@gmail.com

我们也接受来自 GitHub Sponsors 的赞助:GitHub Sponsors

有任何问题、反馈或想法吗?欢迎加入我们的 Discord 讨论组!

使用 Langroid 编程的快速预览

以下仅为示例,实际功能远不止于此,例如函数调用与工具集成、多智能体协作、结构化信息抽取、DocChatAgent(RAG)、SQLChatAgent、非 OpenAI 的本地或远程大语言模型等。更多内容请向下滚动或查阅文档。您还可以参考 Langroid 快速入门 Colab 笔记本,其中逐步构建了一个使用 OpenAI ChatCompletion API 的双智能体信息抽取示例。此外,还有一个使用 OpenAI Assistants API 的版本:链接

🔥 刚刚发布!示例脚本 展示了如何利用 Langroid 的多智能体和工具,仅使用 本地大语言模型(Mistral-7b-instruct-v0.2),从文档中提取结构化信息。

import langroid as lr
import langroid.language_models as lm

# 设置大语言模型
llm_cfg = lm.OpenAIGPTConfig( # 或者使用 OpenAI Assistant API
  # 任何可通过 OpenAI 兼容 API 调用的模型
  chat_model=lm.OpenAIChatModel.GPT4o, # 或者例如 "ollama/mistral"
)
# 直接使用大语言模型
mdl = lm.OpenAIGPT(llm_cfg)
response = mdl.chat("安大略省的首都是哪里?", max_tokens=10)

# 在智能体中使用大语言模型
agent_cfg = lr.ChatAgentConfig(llm=llm_cfg)
agent = lr.ChatAgent(agent_cfg)
agent.llm_response("中国的首都是哪里?") 
response = agent.llm_response("那印度呢?") # 维持对话状态 

# 将智能体封装到任务中,以与用户(或其他智能体)进行交互式循环
task = lr.Task(agent, name="Bot", system_message="你是一个有用的助手")
task.run("你好") # 从用户说“你好”开始

# 两智能体聊天循环:教师智能体向学生智能体提问
teacher_agent = lr.ChatAgent(agent_cfg)
teacher_task = lr.Task(
  teacher_agent, name="Teacher",
  system_message="""
    向你的学生提出简洁的数字问题,并给予反馈。 
    先从一个问题开始。
    """
)
student_agent = lr.ChatAgent(agent_cfg)
student_task = lr.Task(
  student_agent, name="Student",
  system_message="简明扼要地回答老师的提问。",
  single_round=True,
)

teacher_task.add_sub_task(student_task)
teacher_task.run()

🔥 更新/发布

点击展开
  • 2025年8月:

    • 0.59.0 完成 Pydantic V2 迁移 - 验证速度提升5至50倍,采用现代Python编程模式,100%向后兼容。
  • 2025年7月:

    • 0.58.0 集成 Crawl4AI - 使用 Playwright 对 JavaScript 为主的网站进行基于浏览器的网页爬取,无需 API 密钥(感谢 @abab-dev!)。
    • 0.57.0 HTML 日志记录器,用于交互式任务可视化 - 自包含的 HTML 日志,支持折叠条目、自动刷新及持久化界面状态。
  • 2025年6月:

    • 0.56.0 TaskTool,用于将任务委派给子代理 - 允许代理创建具有特定工具和配置的子代理。
    • 0.55.0 基于事件的任务终止机制 done_sequences - 通过事件模式实现声明式的任务完成。
    • 0.54.0 支持 Portkey AI 网关 - 通过统一的 API 访问跨提供商的200多种模型,并提供缓存、重试和可观ability功能。
  • 2025年3–4月:

    • 0.53.0 支持 MCP 工具。
    • 0.52.0 多模态支持,即允许 PDF、图像等输入进入 LLM。
    • 0.51.0 LLMPdfParser,将 GeminiPdfParser 普遍化,直接使用 LLM 解析文档。
    • 0.50.0 基于结构感知的 Markdown 分块,分块内容由章节标题丰富。
    • 0.49.0 支持轻松切换到 LiteLLM 代理服务器。
    • 0.48.0 Exa 爬虫、Markitdown 解析器。
    • 0.47.0 支持 Firecrawl URL 抓取器/爬虫 - 感谢 @abab-dev。
    • 0.46.0 支持 LangDB LLM 网关 - 感谢 @MrunmayS。
    • 0.45.0 使用 Marker 进行 Markdown 解析 - 感谢 @abab-dev。
    • 0.44.0 延迟导入以减少启动时间。感谢 @abab-dev。
  • 2025年2月:

    • 0.43.0GeminiPdfParser 用于使用 Gemini LLM 解析 PDF - 感谢 @abab-dev。
    • 0.42.0markitdown 解析器,用于处理 pptx、xlsx、xls 文件 感谢 @abab-dev。
    • 0.41.0pinecone 向量数据库(感谢 @coretado), Tavily 网络搜索(感谢 @Sozhan308),Exa 网络搜索(感谢 @MuddyHope)。
    • 0.40.0pgvector 向量数据库。感谢 @abab-dev。
    • 0.39.0ChatAgentConfig.handle_llm_no_tool 用于处理 LLM 忘记使用工具的情况。
    • 0.38.0:Gemini 嵌入 - 感谢 @abab-dev。
    • 0.37.0:新的 PDF 解析器:doclingpymupdf4llm
  • 2025年1月:

    • 0.36.0:Weaviate 向量数据库支持(感谢 @abab-dev)。
    • 0.35.0:除了最终答案外,还能捕获/流式传输推理型 LLM(如 DeepSeek-R1、OpenAI o1)的推理内容。
    • 0.34.0:DocChatAgent 的分块增强,以提高检索效果。(与 @dfm88 合作)。
    • 0.33.0 从 Poetry 切换到 uv!(感谢 @abab-dev)。
    • 0.32.0 支持 DeepSeek v3。
  • 2024年12月:

    • 0.31.0 Azure OpenAI 嵌入。
    • 0.30.0 Llama-cpp 嵌入(感谢 @Kwigg)。
    • 0.29.0 自定义 Azure OpenAI 客户端(感谢 @johannestang)。
    • 0.28.0 ToolMessage:新增 _handler 字段,用于覆盖 request 字段中的默认处理器方法名(感谢 @alexagr)。
    • 0.27.0 支持 OpenRouter。
    • 0.26.0 更新至最新 Chainlit 版本。
    • 0.25.0 为代理和用户响应实现真正的异步方法(感谢 @alexagr)。
  • 2024年11月:

    • 0.24.0: 支持在兼容 LLM 上使用严格 JSON 模式输出格式的 Agent,以及 OpenAI 工具 API 的严格模式。 (感谢 @nilspalumbo)。
    • 0.23.0: 支持托管在 glhf.chat 上的 LLM(如 Qwen2.5-Coder-32b-Instruct)。
    • 0.22.0: 提供可选参数以截断大型工具结果。
    • 0.21.0 直接通过 OpenAI 客户端支持 Gemini 模型,而非使用 LiteLLM。
    • 0.20.0 支持 ArangoDB 知识图谱。
  • 2024年10月:

  • 2024年9月:

    • 0.16.0 支持 OpenAI 的 o1-minio1-preview 模型。
    • 0.15.0 支持 Cerebras API -- 在 Cerebras Cloud 上运行 llama-3.1 模型(推理速度非常快)。
    • 0.14.0 DocChatAgent 使用互反排名融合(RRF)对不同方法检索到的分块进行排序。
    • 0.12.0 run_batch_task 新选项 -- stop_on_first_result - 允许一旦有任一任务返回结果就终止批次任务。
  • 2024年8月:

    • 0.11.0 多态的 Task.run()、Task.run_async()
    • 0.10.0 允许工具处理器返回任意结果类型,包括其他工具。
    • 0.9.0 协调工具,用于信号各种任务状态,并在代理之间传递消息。
    • 0.7.0 支持 OpenAI 工具 API,包括多工具。
  • 2024年7月:

  • 2024年6月:

    • 0.2.0:改进了 lineage 跟踪、细化了子任务配置,并新增了一种工具 RewindTool, 使代理能够“回退并重做”之前的某条消息(由于 lineage 跟踪,所有依赖该消息的消息都会被清除)。详细说明请参见 此处
  • 2024年5月:

    • 更精简的 langroid:所有文档解析器(如 pdf、doc、docx)以及大多数向量数据库(除 qdrant 外) 现在都成为可选/额外依赖项,这有助于减小构建体积、脚本启动时间和安装时间。为了方便起见,提供了多种“附加组件”分组,例如 doc-chatdb(用于数据库相关依赖)。请参阅下方更新后的安装说明及文档。
    • 工具的少样本示例:在定义 ToolMessage 时,过去可以包含一个名为 examples 的类方法,系统会随机从该列表中选取一个示例来生成 LLM 的单次示例。现在这一功能已改进,您可以直接提供一个示例列表,其中每个示例要么是工具实例,要么是一个元组(描述,工具实例),描述部分是引导 LLM 使用该工具的“思考过程”(详见 文档)。在某些场景下,这能提高 LLM 生成工具的准确性。此外,现在不再随机选取示例,而是使用所有示例来生成少样本示例。
    • 无限循环检测(位于 0.2.0 中):针对循环长度不超过10的任务循环进行检测(可在 TaskConfig 中配置)。仅检测“完全相同”的循环,而不检测实体反复说类似但不完全相同内容的“近似循环”。
    • “@”地址引用:任何实体都可以通过名称直接引用其他实体,这些名称可以是代理的响应者(“llm”、“user”、“agent”)或子任务名称。这是一种比 RecipientTool 机制更简单的替代方案,但缺点是由于它不是工具,因此无法强制或提醒 LLM 显式指定收件人(在需要明确收件人的情况下)。
    • 大幅改进的引用功能(参见 issue 477) 在使用 DocChatAgent 时,引用的生成和显示得到了显著改善。
    • gpt-4o 现已成为默认 LLM;更新测试和示例以适配该模型;使用与该模型对应的分词器。
    • 通过 litellm 支持 gemini 1.5 pro
    • QdrantDB:更新以支持学习到的稀疏嵌入。
  • 2024年4月:

    • 0.1.236:支持托管在 Groq 上的开源 LLM,例如指定 chat_model="groq/llama3-8b-8192"。 参见 教程
    • 0.1.235Task.run()、Task.run_async()、run_batch_tasks 均增加了 max_costmax_tokens 参数,当令牌或成本超过限制时将退出。结果中的 ChatDocument.metadata 现在包含一个 status 字段,该字段是一个代码,表示任务完成的原因。此外,task.run() 等方法也可以显式传入 session_id 字段,该字段用作在 Redis 缓存中查找各种设置的键。 目前仅用于查询“终止状态”——这使得可以通过 task.kill() 或类方法 Task.kill_session(session_id) 杀死正在运行的任务。 示例用法请参见 tests/main/test_task.py 中的 test_task_kill
  • 2024年3月:

    • 0.1.216:改进了 DocChatAgent 的并发运行能力,详见 test_doc_chat_agent.py 特别是 test_doc_chat_batch(); 新增任务运行工具:run_batch_task_gen,允许指定任务生成器,根据输入生成相应任务。
    • 0.1.212:ImagePdfParser:支持从基于图像的 PDF 中提取文本。 (这意味着 DocChatAgent 现在可以处理图像 PDF)。
    • 0.1.194 - 0.1.211:各种修复、改进和功能:
      • 由于对 相关性提取器 的修复,RAG 性能(主要是召回率)得到大幅提升。
      • DocChatAgent上下文窗口修复
      • 通过 Litellm 支持 Anthropic/Claude3。
      • URLLoader:当 URL 不以 .pdf.docx 等可识别的后缀结尾时,从头部检测文件时间。
      • 各种 lancedb 集成修复。
      • 根据是否可用 sentence_transformer 模块自动选择嵌入配置。
      • 精简依赖项,将一些较重的依赖项设为可选,例如 unstructuredhaystackchromadbmkdocshuggingface-hubsentence-transformers
      • 更容易从 import langroid as lr 进行顶层导入。
      • 改善 JSON 检测,尤其是来自弱 LLM。
  • 2024年2月:

    • 0.1.193:支持使用 Ollama 新推出的 OpenAI 兼容服务器运行本地 LLM: 只需指定 chat_model="ollama/mistral"。详情请参见 发布说明
    • 0.1.183:通过 回调 添加了 Chainlit 支持。 请参见 示例
  • 2024年1月:

    • 0.1.175
      • Neo4jChatAgent 用于与 Neo4j 知识图谱对话。 (感谢 Mohannad!)。该代理使用工具查询 Neo4j 模式,并将用户查询转换为 Cypher 查询, 工具处理器执行这些查询,再将结果返回给 LLM 以生成自然语言响应(类似于 SQLChatAgent 的工作方式)。 请参阅使用该代理回答关于 Python 包依赖关系问题的 示例脚本
      • 支持 .doc 文件解析(除 .docx 外)。
      • OpenAIGPTConfig 中指定可选的 formatter 参数 ,以确保本地 LLM 的聊天格式准确。
    • 0.1.157DocChatAgentConfig 新增了一个参数:add_fields_to_content,用于指定要插入到主 content 字段中的其他文档字段,以帮助提高检索效果。
    • 0.1.156:新增任务控制信号 PASS_TO、SEND_TO;VectorStore:对文档进行 Pandas 表达式计算;LanceRAGTaskCreator 创建一个由查询规划师、评论员和 RAG 代理组成的三代理 RAG 系统。
  • 2023年12月:

    • 0.1.154:(详情请参见 0.1.1490.1.154 的发布说明)。
      • DocChatAgent:导入 Pandas 数据框并进行筛选。
      • LanceDocChatAgent 利用 LanceDB 向量数据库进行高效的向量搜索、全文搜索和筛选。
      • 改进了任务和多代理控制机制。
      • LanceRAGTaskCreator 可创建一个由 LanceFilterAgent 组成的两代理系统,该代理负责决定过滤条件并改写查询发送给 RAG 代理。
    • 0.1.141: API 简化以减少样板代码:自动选择可用的 OpenAI 模型(优先 gpt-4o),简化默认设置。 简化 Task 初始化,使用默认的 ChatAgent
  • 2023年11月:

    • 0.1.126: OpenAIAssistant 代理:支持缓存。

    • 0.1.117:支持 OpenAI Assistant API 工具:函数调用、代码解释器和检索器(RAG)、文件上传。这些功能可与 Langroid 的任务编排无缝集成。 在文档准备就绪之前,建议查看以下使用示例:

  • 示例脚本: - 最基础的聊天应用 - 与代码解释器聊天 - 带检索功能的聊天(RAG) - 双代理RAG聊天

    • 0.1.112: OpenAIAssistantChatAgent 的子类,它利用了全新的 OpenAI Assistant API。它可以作为 ChatAgent 的直接替代品使用,并依赖 Assistant API 来维护对话状态,同时借助持久化的线程和助手,在需要时重新连接到它们。示例:test_openai_assistant.pytest_openai_assistant_async.py
    • 0.1.111: 支持最新的 OpenAI 模型:GPT4_TURBO (示例用法参见 test_llm.py
    • 0.1.110: 从 OpenAI v0.x 升级到 v1.1.1(为迎接 Assistants API 等做准备);由于 OpenAI 版本冲突,litellm 暂时被禁用。
  • 2023年10月:

    • 0.1.107: DocChatAgent 重排序器:rank_with_diversityrank_to_periphery(避免居中)。
    • 0.1.102: DocChatAgentConfig.n_neighbor_chunks > 0 允许返回匹配内容周围的上下文块。
    • 0.1.101: DocChatAgent 使用 RelevanceExtractorAgent,让 LLM 通过句子编号提取片段中的相关部分,相比 LangChain 在其 LLMChainExtractor 中采用的“逐句复述”方式(即完整写出所有相关句子),这种方法大大提升了速度并降低了成本。
    • 0.1.100: API 更新:现在只需一次导入即可访问 Langroid 的所有功能,例如 import langroid as lr。使用方法请参阅文档
    • 0.1.99: 提供便捷的批处理函数,可在异步模式下同时对输入列表执行任务和代理方法。示例参见 test_batch.py
    • 0.1.95: 新增对 Momento Serverless Vector Index 的支持。
    • 0.1.94: 新增对 LanceDB 向量存储的支持——支持向量搜索、全文搜索和 SQL 查询。
    • 0.1.84: 新增 LiteLLM,现在 Langroid 可以与超过 100 家远程或本地 LLM 提供商一起使用! 使用指南请参见这里
  • 2023年9月:

    • 0.1.78: 多个 Task、Agent 和 LLM 方法的异步版本;现在支持用于 LLM 函数调用、工具和结构化输出的嵌套 Pydantic 类。
    • 0.1.76: DocChatAgent:初步支持加载 docx 文件。
    • 0.1.72: 对 DocChatAgent 进行多项改进:采用更好的嵌入模型、混合搜索提升检索效果、优化 PDF 解析,并使用交叉编码器对检索结果进行重排序。
    • 与本地 Llama 模型一起使用: 请参阅教程这里
    • Langroid 博客/通讯上线! 第一篇文章在此——欢迎订阅以获取最新动态。
    • 0.1.56: 支持 Azure OpenAI。
    • 0.1.55: 改进了 SQLChatAgent,该代理在将自然语言翻译成 SQL 时能够高效地检索相关的模式信息。
  • 2023年8月:

    • 使用 Langroid 代理和任务编排的层次化计算示例。
    • 0.1.51: 支持全局状态,参见 test_global_state.py
    • 🐳 Langroid Docker 镜像 已发布,具体说明见下文。
    • RecipientTool 能够使 LLM 在与两个或更多代理对话时指定目标接收者,并强制执行这一规则。 示例用法参见 此测试
    • 示例: 使用 Google 搜索 + 从 URL 内容中进行向量数据库检索来回答问题
    • 0.1.39: GoogleSearchTool,使代理及其 LLM 能够通过函数调用/工具的方式进行 Google 搜索。 示例聊天参见 此处,展示了将此工具添加到代理中是多么简单。
    • Colab 笔记本 可用于尝试快速入门示例:在 Colab 中打开
    • 0.1.37: 新增了 SQLChatAgent——感谢我们最新的贡献者 Rithwik Babu!
    • 多代理示例:自动纠错聊天
  • 2023年7月:

    • 0.1.30: 新增了 TableChatAgent,用于与表格数据集(数据框、文件、URL)进行[聊天]:LLM 生成 Pandas 代码,然后通过 Langroid 的工具/函数调用机制执行代码。
    • 演示: 面向受众的定位三代理系统。
    • 0.1.27: 新增对 Momento Serverless Cache支持,作为 Redis 的替代方案。
    • 0.1.24: DocChatAgent 现在可以接受 PDF 文件或 URL。

🚀 演示

假设你想从一份商业租赁合同文档中提取关键术语的结构化信息。使用 Langroid 的双代理系统,你可以轻松实现这一点,正如我们在 langroid-examples 仓库中所展示的那样。 (请参阅 此脚本,它使用本地的 Mistral-7b 模型实现了相同的功能。) 该演示展示了 Langroid 的众多功能中的一部分,例如:

  • 多代理协作:LeaseExtractor 负责整个任务,其 LLM(GPT4)会生成问题,由 DocAgent 来回答。
  • 增强检索问答,并附有来源引用DocAgent 的 LLM(GPT4)通过从向量存储中检索相关信息来回答 LeaseExtractor 提出的问题,并引用支持答案的具体段落。
  • 函数调用(也称为工具/插件):当 LeaseExtractor 收集到所需的所有信息后,它会通过函数调用来以结构化格式呈现这些信息。

以下是实际运行效果 (可暂停的 mp4 视频可在 这里 观看)。

演示

⚡ 亮点

(如需更更新的列表,请参阅上方的 更新/发布 部分)

  • 代理作为一等公民: Agent 类封装了 LLM 对话状态, 并可选择性地包含向量存储和工具。代理是 Langroid 中的核心抽象; 代理充当“消息转换器”,默认提供 3 种“响应者”方法,分别对应于 LLM、代理和用户三个实体。
  • 任务: Task 类包装了一个代理,并为其提供指令(或角色、目标), 管理代理响应者方法的迭代过程, 以及通过层次化、递归式的任务委派来协调多代理交互。Task.run() 方法与代理响应者方法具有相同的类型签名,这正是任务能够将子任务委派给其他代理的关键所在:从任务的角度来看,子任务只是额外的响应者,将在代理自身的响应者之后以轮转方式被调用。
  • 模块化、可重用性、松耦合: AgentTask 抽象允许用户设计具有特定技能的代理,将其封装在任务中,并以灵活的方式组合任务。
  • LLM 支持: Langroid 支持 OpenAI 的 LLM,也支持来自数百家提供商的 LLM(无论是本地/开源还是远程/商用),通过代理库和本地模型服务器实现,例如 ollamaoobaboogaLiteLLM,它们实际上模拟了 OpenAI API。更多信息请参见 支持的 LLM 列表
  • LLM 响应缓存: Langroid 支持使用 Redis 缓存 LLM 响应。
  • 向量存储: 目前支持 QdrantChroma、LanceDB、Pinecone、PostgresDB (PGVector) 和 Weaviate。 向量存储可用于增强检索生成(RAG)。
  • 语境化与来源引用: 通过向量存储访问外部文档, 可实现语境化和来源引用。
  • 可观测性、日志记录、溯源: Langroid 会生成详细的多代理交互日志, 并维护消息的出处/溯源信息,以便您可以追溯消息的来源。
  • 工具/插件/函数调用: Langroid 支持 OpenAI 的 函数调用,同时也支持一种等效的 ToolMessage 机制,该机制适用于任何 LLM,而不仅限于 OpenAI 的模型。 函数调用和工具拥有相同的开发者接口,基于 Pydantic 实现, 这使得定义工具/函数并让代理使用它们变得非常容易。使用 Pydantic 的好处在于,您无需编写复杂的 JSON 规范来进行函数调用;而且当 LLM 生成格式错误的 JSON 时,Pydantic 会返回错误信息,促使 LLM 自行修正。

⚙️ 安装与设置

安装 langroid

Langroid 需要 Python 3.11 或更高版本。我们建议使用虚拟环境。 使用 pip 将一个精简版的 langroid(来自 PyPI)安装到您的虚拟环境中:

pip install langroid

核心 Langroid 包允许您通过 OpenAI 的 API 使用嵌入模型。 如果您希望使用 HuggingFace 的 sentence-transformers 嵌入模型,则可以这样安装 Langroid:

pip install "langroid[hf-embeddings]"

在许多实际场景中,您可能还需要一些可选依赖项:

  • 若要使用各种文档解析器,请安装带有 doc-chat 附加组件的 Langroid:
    pip install "langroid[doc-chat]"
    
  • 对于“数据库聊天”,请使用 db 附加组件:
    pip install "langroid[db]"
    
  • 您可以通过逗号分隔指定多个附加组件,例如:
    pip install "langroid[doc-chat,db]"
    
  • 若要一次性安装所有可选依赖项,可以使用 all 附加组件(但请注意,这会导致加载/启动时间更长且安装体积更大):
    pip install "langroid[all]"
    
使用 PostgreSQL 数据库进行 SQL 聊天的可选安装

如果您正在使用 SQLChatAgent(例如脚本 examples/data-qa/sql-chat/sql_chat.py),并且连接的是 PostgreSQL 数据库,您需要:

  • 为您的平台安装 PostgreSQL 开发库,例如:
    • 在 Ubuntu 上运行 sudo apt-get install libpq-dev
    • 在 Mac 上运行 brew install postgresql 等。
  • 安装带有 postgres 附加组件的 Langroid,例如 pip install langroid[postgres]poetry add "langroid[postgres]"poetry install -E postgres, (或者使用相应的 uv 版本,例如 uv add "langroid[postgres]"uv pip install langroid[postgres])。 如果出现错误,请尝试在您的虚拟环境中运行 pip install psycopg2-binary

📝 如果遇到与 mysqlclient 相关的奇怪错误,请先运行 pip uninstall mysqlclient,然后再重新安装 mysqlclient

Claude Code 插件(可选)

此插件提供两种技能:

  • langroid:patterns - 您的 Claude Code 代理可以利用此技能,使用适当的设计模式生成 Langroid 多智能体代码。
  • langroid:add-pattern - 代理可以使用此技能记录它学到的新模式,供将来参考,无论是自主完成还是在用户提示下完成。

步骤 1:添加 Langroid 市场

在终端中:

claude plugin marketplace add langroid/langroid

或在 Claude Code 中:

/plugin marketplace add langroid/langroid

步骤 2:安装 Langroid 插件

在终端中:

claude plugin install langroid@langroid

或在 Claude Code 中:

/plugin install langroid@langroid

安装完成后,只需用自然语言要求您的 Claude Code 代理实现 Langroid 模式,例如:

设置一个 Langroid 代理,使其使用 EditTool,并将其封装在一个任务中,该任务在工具生成后立即结束

它将自动使用 langroid:patterns 技能来遵循正确的设计模式。

您还可以在发现新模式时,要求 Claude Code 记录下来,例如:

将此记录为设置 MCP 工具的新 Langroid 模式

设置环境变量(API 密钥等)

要开始使用,您只需要一个 OpenAI API 密钥。 如果您还没有,请参阅 OpenAI 官网。 (请注意,虽然这是最简单的入门方式,但 Langroid 几乎可以与任何 LLM 配合使用,而不仅仅是 OpenAI 的模型。 请参阅关于使用 开放/本地 LLM 以及其他 非 OpenAI 专有 LLM 的指南。)

在仓库根目录下,将 .env-template 文件复制为新的 .env 文件:

cp .env-template .env

然后插入您的 OpenAI API 密钥。 您的 .env 文件应如下所示(组织 ID 是可选的,但在某些情况下可能需要):

OPENAI_API_KEY=your-key-here-without-quotes
OPENAI_ORGANIZATION=optionally-your-organization-id

或者,您也可以在 shell 中设置此环境变量 (每次打开新 shell 时都需要执行此操作):

export OPENAI_API_KEY=your-key-here-without-quotes
可选设置说明(点击展开)

以下所有环境变量设置均为可选,其中一些仅在使用特定功能时才需要(如下所述)。

  • Qdrant 向量存储 API 密钥、URL。这仅在您想使用 Qdrant 云服务时才需要。 或者,目前也支持 ChromaLanceDB。 我们使用 Chroma 的本地存储版本,因此无需 API 密钥。
  • Redis 密码、主机、端口:这是可选的,仅在使用 Redis Cloud 缓存 LLM API 响应时才需要。 Redis 提供 一个免费的 30MB Redis 账户, 这足以试用 Langroid,甚至超出其需求。 如果您不进行这些设置,Langroid 将使用纯 Python 的 Redis 内存缓存, 通过 Fakeredis 库实现。
  • Momento 用于缓存 LLM API 响应的无服务器服务(作为 Redis 的替代方案)。 若要使用 Momento 而不是 Redis:
    • .env 文件中输入您的 Momento 令牌,作为 MOMENTO_AUTH_TOKEN 的值(见下方示例文件),
    • .env 文件中将 CACHE_TYPE=momento(而不是默认的 CACHE_TYPE=redis)。
  • GitHub 个人访问令牌(对于需要分析 git 仓库的应用程序是必需的; 基于令牌的 API 调用速率限制较少)。请参阅此 GitHub 页面
  • Google 自定义搜索 API 凭证: 仅在启用代理使用 GoogleSearchTool 时才需要。 要将 Google 搜索作为 LLM 工具/插件/函数调用使用, 您需要先设置 Google API 密钥, 然后 设置 Google 自定义搜索引擎 (CSE) 并获取 CSE ID。 (这些文档可能比较复杂,建议向 GPT4 请求逐步指南。) 获取这些凭证后,将其作为 GOOGLE_API_KEYGOOGLE_CSE_ID 的值存储在您的 .env 文件中。 关于如何使用此类“无状态”工具的完整文档即将发布,但在此期间,您可以查看此 聊天示例,其中展示了如何轻松地为代理配备 GoogleSearchtool

如果您添加了所有这些可选变量,您的 .env 文件应如下所示:

OPENAI_API_KEY=your-key-here-without-quotes
GITHUB_ACCESS_TOKEN=your-personal-access-token-no-quotes
CACHE_TYPE=redis # 或 momento
REDIS_PASSWORD=your-redis-password-no-quotes
REDIS_HOST=your-redis-hostname-no-quotes
REDIS_PORT=your-redis-port-no-quotes
MOMENTO_AUTH_TOKEN=your-momento-token-no-quotes # 替代 REDIS* 变量
QDRANT_API_KEY=your-key
QDRANT_API_URL=https://your.url.here:6333 # 注意必须包含端口号
GOOGLE_API_KEY=your-key
GOOGLE_CSE_ID=your-cse-id
Microsoft Azure OpenAI 的可选设置说明(点击展开)

在使用 Azure OpenAI 时,.env 文件中需要额外的环境变量。 此页面 Microsoft Azure OpenAI 提供了更多信息,您可以按如下方式设置每个环境变量:

  • AZURE_OPENAI_API_KEY,来自 API_KEY 的值
  • AZURE_OPENAI_API_BASE 来自 ENDPOINT 的值,通常看起来像 https://your.domain.azure.com
  • 对于 AZURE_OPENAI_API_VERSION,您可以使用 .env-template 中的默认值, 最新版本可在 这里 找到。
  • AZURE_OPENAI_DEPLOYMENT_NAME 是已部署模型的名称,由用户在模型设置过程中定义。
  • AZURE_OPENAI_MODEL_NAME Azure OpenAI 允许在部署模型时指定特定的模型名称。 您需要准确填写所选的模型名称。例如,GPT-4(应为 gpt-4-32kgpt-4)。
  • AZURE_OPENAI_MODEL_VERSION 是必需的,如果 AZURE_OPENAI_MODEL_NAME = gpt-4, 这将帮助 Langroid 确定模型的成本。

🐳 Docker 使用说明

我们通过这个 Docker 镜像 提供了 langroid-examples 仓库的容器化版本。 你只需要在 .env 文件中设置环境变量即可。请按照以下步骤来启动容器:

# 从 `langroid` 仓库获取 .env 文件模板
wget -O .env https://raw.githubusercontent.com/langroid/langroid/main/.env-template

# 使用你喜欢的编辑器(这里以 nano 为例)编辑 .env 文件,并移除任何未使用的配置项。例如,文件中包含一些“占位符”值,如 “your-redis-port” 等——如果你不使用它们,请务必将其删除。
nano .env

# 启动容器(系统会自动拉取适合你架构的镜像)
docker run -it --rm  -v ./.env:/langroid/.env langroid/langroid:latest

# 使用以下命令运行 `examples` 目录中的任意脚本
python examples/<Path/To/Example.py> 

🎉 使用示例

这些是快速预览,旨在让你了解使用 Langroid 可以做什么,以及你的代码会是什么样子。

⚠️ 下面的代码片段仅用于展示代码风格, 并非完整的可运行示例!为此,我们鼓励你参考 langroid-examples 仓库。

ℹ️ Langroid 中的各种 LLM 提示和指令已经过测试,与 GPT-4(并在一定程度上与 GPT-4o)配合良好。 切换到其他 LLM(本地/开源或专有模型)非常容易(参见上述指南),对于某些应用场景可能已经足够,但通常情况下,除非调整提示或多智能体设置,否则结果可能会较差。

📖 更多详细教程请参阅 入门指南

点击展开下面的任一代码示例。所有这些示例都可以在 Colab 笔记本中运行: 在 Colab 中打开

直接与 LLM 交互
import langroid.language_models as lm

mdl = lm.OpenAIGPT(
    lm.OpenAIGPTConfig(
        chat_model=lm.OpenAIChatModel.GPT4o, # 或者,例如  "ollama/qwen2.5"
    ),
)

messages = [
  lm.LLMMessage(content="You are a helpful assistant",  role=lm.Role.SYSTEM), 
  lm.LLMMessage(content="What is the capital of Ontario?",  role=lm.Role.USER),
]

response = mdl.chat(messages, max_tokens=200)
print(response.message)

请参阅相关指南以了解如何使用 (本地/开源 LLM远程/商用 LLM)。

与非 OpenAI LLM(本地或远程)交互 本地模型:如果模型在 `http://localhost:8000` 上提供服务:
cfg = lm.OpenAIGPTConfig(
  chat_model="local/localhost:8000", 
  chat_context_length=4096
)
mdl = lm.OpenAIGPT(cfg)
# 现在可以像上面一样与其交互,或者按照下方所示创建 Agent + Task。
定义一个智能体,设置任务并运行
import langroid as lr

agent = lr.ChatAgent()

# 获取智能体 LLM 的响应,并将其放入交互式循环中...
# answer = agent.llm_response("What is the capital of Ontario?")
  # ... 或者,改为设置一个任务(内置循环),并运行它
task = lr.Task(agent, name="Bot") 
task.run() # ... 每轮都会向 LLM 或用户寻求响应的循环
三个相互通信的智能体

一个简单的数字游戏,当给定一个数字 n 时:

  • repeater_task 的 LLM 只需返回 n
  • even_task 的 LLM 如果 n 是偶数则返回 n/2,否则返回 “DO-NOT-KNOW”;
  • odd_task 的 LLM 如果 n 是奇数则返回 3*n+1,否则返回 “DO-NOT-KNOW”。

每个 Task 都会自动配置一个默认的 ChatAgent

import langroid as lr
from langroid.utils.constants import NO_ANSWER

repeater_task = lr.Task(
    name = "Repeater",
    system_message="""
    Your job is to repeat whatever number you receive.
    """,
    llm_delegate=True, # LLM 负责处理任务
    single_round=False, 
)

even_task = lr.Task(
    name = "EvenHandler",
    system_message=f"""
    You will be given a number. 
    If it is even, divide by 2 and say the result, nothing else.
    If it is odd, say {NO_ANSWER}
    """,
    single_round=True,  # 任务在收到有效响应后完成
)

odd_task = lr.Task(
    name = "OddHandler",
    system_message=f"""
    You will be given a number n. 
    If it is odd, return (n*3+1), say nothing else. 
    If it is even, say {NO_ANSWER}
    """,
    single_round=True,  # 任务在收到有效响应后完成
)

然后将 even_taskodd_task 添加为 repeater_task 的子任务, 并运行 repeater_task,以一个数字作为输入:

repeater_task.add_sub_task([even_task, odd_task])
repeater_task.run("3")
简单的工具/函数调用示例

Langroid 利用 Pydantic 支持 OpenAI 的 函数调用 API 以及其自身的原生工具。这样做的好处是,你无需编写任何 JSON 来指定模式;此外,如果 LLM 生成了格式错误的工具调用语法,Langroid 会将经过适当清理的 Pydantic 验证错误发送回 LLM,以便其进行修正!

简单示例:假设智能体有一个秘密数字列表, 我们希望 LLM 找到该列表中的最小数字。我们想为 LLM 提供一个名为 probe 的工具/函数,该工具接受一个数字 n 作为参数。智能体中的工具处理方法会返回其列表中小于等于 n 的数字数量。

首先使用 Langroid 的 ToolMessage 类定义该工具:

import langroid as lr

class ProbeTool(lr.agent.ToolMessage):
  request: str = "probe" # 指定由哪个智能体方法处理此工具
  purpose: str = """
        To find how many numbers in my list are less than or equal to  
        the <number> you specify.
        """ # 描述用于指导 LLM 何时以及如何使用该工具
  number: int  # 工具所需的参数

然后定义一个 SpyGameAgent 类,作为 ChatAgent 的子类, 并添加一个名为 probe 的方法来处理该工具:

class SpyGameAgent(lr.ChatAgent):
  def __init__(self, config: lr.ChatAgentConfig):
    super().__init__(config)
    self.numbers = [3, 4, 8, 11, 15, 25, 40, 80, 90]

  def probe(self, msg: ProbeTool) -> str:
    # 返回 self.numbers 中小于或等于 msg.number 的数字数量
    return str(len([n for n in self.numbers if n <= msg.number]))

接下来实例化该智能体,并启用其使用和响应工具的功能:

spy_game_agent = SpyGameAgent(
    lr.ChatAgentConfig(
        name="间谍",
        vecdb=None,
        use_tools=False, # 不使用 Langroid 原生工具
        use_functions_api=True, # 使用 OpenAI 函数调用 API
    )
)
spy_game_agent.enable_message(ProbeTool)

完整的工作示例请参阅 langroid-examples 仓库中的脚本 chat-agent-tool.py

通过工具/函数调用从文本中提取结构化信息

假设您希望代理从租赁文件中提取租赁的关键条款,并将其表示为嵌套的 JSON 结构。首先,通过 Pydantic 模型定义所需的结构:

from pydantic import BaseModel
class LeasePeriod(BaseModel):
    start_date: str
    end_date: str


class LeaseFinancials(BaseModel):
    monthly_rent: str
    deposit: str

class Lease(BaseModel):
    period: LeasePeriod
    financials: LeaseFinancials
    address: str

然后,将 LeaseMessage 工具定义为 Langroid 的 ToolMessage 子类。请注意,该工具有一个名为 terms 的必填参数,类型为 Lease

import langroid as lr

class LeaseMessage(lr.agent.ToolMessage):
    request: str = "lease_info"
    purpose: str = """
        收集商业租赁的相关信息。
        """
    terms: Lease

接下来,定义一个 LeaseExtractorAgent 类,其中包含处理此工具的方法 lease_info,实例化该代理,并启用其使用和响应此工具的功能:

class LeaseExtractorAgent(lr.ChatAgent):
    def lease_info(self, message: LeaseMessage) -> str:
        print(
            f"""
        完成!成功提取了租赁信息:
        {message.terms}
        """
        )
        return json.dumps(message.terms.dict())
    
lease_extractor_agent = LeaseExtractorAgent()
lease_extractor_agent.enable_message(LeaseMessage)

完整的工作示例请参阅 langroid-examples 仓库中的脚本 chat_multi_extract.py

与文档(文件路径、URL 等)进行聊天

Langroid 提供了一个专门的代理类 DocChatAgent 用于此目的。它集成了文档分片、嵌入、向量数据库存储以及检索增强的问答生成功能。使用此类与一组文档进行对话非常简单。首先创建一个 DocChatAgentConfig 实例,并设置 doc_paths 字段来指定要与之对话的文档。

import langroid as lr
from langroid.agent.special import DocChatAgentConfig, DocChatAgent

config = DocChatAgentConfig(
  doc_paths = [
    "https://en.wikipedia.org/wiki/Language_model",
    "https://en.wikipedia.org/wiki/N-gram_language_model",
    "/path/to/my/notes-on-language-models.txt",
  ],
  vecdb=lr.vector_store.QdrantDBConfig(),
)

然后实例化 DocChatAgent(这会将文档摄入向量数据库):

agent = DocChatAgent(config)

之后,我们可以向代理提出一次性问题:

agent.llm_response("什么是语言模型?")

或者将其包装在一个 Task 中,并与用户进行交互式循环:

task = lr.Task(agent)
task.run()

完整的可运行脚本请参阅 langroid-examples 仓库中 docqa 文件夹下的相关脚本。

🔥 与表格数据(文件路径、URL、数据框等)进行聊天

使用 Langroid,您可以设置一个 TableChatAgent 并为其提供数据集(文件路径、URL 或数据框),然后对其进行查询。代理的 LLM 会通过函数调用(或工具/插件)生成 Pandas 代码来回答查询,而代理的函数处理方法则会执行这些代码并返回答案。

以下是具体操作步骤:

import langroid as lr
from langroid.agent.special import TableChatAgent, TableChatAgentConfig

为数据文件、URL 或数据框设置一个 TableChatAgent(确保数据表有标题行;分隔符会自动检测):

dataset =  "https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"


# 或者 dataset = "/path/to/my/data.csv"
# 或者 dataset = pd.read_csv("/path/to/my/data.csv")
agent = TableChatAgent(
    config=TableChatAgentConfig(
        data=dataset,
    )
)

设置一个任务,并像这样提出一次性问题:

task = lr.Task(
  agent, 
  name = "DataAssistant",
  default_human_response="", # 避免等待用户输入
)
result = task.run(
  "质量评分高于 7 的葡萄酒的平均酒精含量是多少?",
  turns=2 # 在用户提问、LLM 函数调用/工具响应、代理代码执行结果后返回
) 
print(result.content)

或者,您也可以设置一个任务,并与用户进行交互式循环:

task = lr.Task(agent, name="DataAssistant")
task.run()

完整的工作示例请参阅 langroid-examples 仓库中的脚本 table_chat.py


❤️ 感谢我们的 支持者

如果您喜欢这个项目,请给它点个赞 ⭐,同时在您的网络或社交媒体上分享它:

分享到 Twitter 分享到 LinkedIn 分享到 Hacker News 分享到 Reddit

您的支持将有助于推动 Langroid 的发展并壮大其社区。

Langroid 联合创始人

  • 普拉萨德·查拉萨尼(印度理工学院本科/计算机科学,卡内基梅隆大学博士/机器学习;独立机器学习顾问)
  • 索梅什·贾(印度理工学院本科/计算机科学,卡内基梅隆大学博士/计算机科学;威斯康星大学麦迪逊分校计算机科学教授)

版本历史

0.61.12026/03/25
0.61.02026/03/25
0.60.32026/03/16
0.60.22026/03/13
0.60.12026/03/13
0.60.02026/03/12
0.59.392026/02/28
0.59.382026/02/26
0.59.372026/02/24
0.59.362026/02/23
0.59.352026/02/22
0.59.342026/02/11
0.59.332026/02/09
0.59.322026/02/01
0.59.312026/01/29
0.59.302026/01/29
0.59.292026/01/28
0.59.282026/01/28
0.59.272026/01/22
0.59.262026/01/16

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架