Langroid 是一个由 CMU 和 UW-Madison 的研究人员开发的直观、轻量、可扩展且设计精良的 Python 框架,用于轻松构建基于 LLM 的应用程序。
你可以设置智能体(Agent),为其配备可选组件(LLM、向量存储和工具/函数),分配任务,并让它们通过交换消息协作解决问题。
这种多智能体范式灵感来源于 Actor 框架(但你无需了解它!)。
Langroid 是对 LLM 应用开发的全新尝试,其设计充分考虑了简化开发者体验;它不使用 Langchain 或任何其他 LLM 框架,并且可以与几乎所有 LLM 协同工作。
🔥 ✨ 可选的 Claude Code 插件 可用于加速 Langroid 开发,它内置了模式和最佳实践。
🔥 阅读(进行中)的 Langroid 架构概述 和 Langroid 快速导览。
🔥 MCP 支持:通过 Langroid 简单的 MCP 工具适配器,允许任何 LLM 智能体利用 MCP 服务器的功能,该适配器将服务器的工具转换为 Langroid 的 ToolMessage 实例。
📢 公司正在生产环境中使用/适配 Langroid。以下是一段引用:
Nullify 使用 AI 智能体进行安全的软件开发。它能发现、优先处理和修复漏洞。在评估了 CrewAI、Autogen、LangChain、Langflow 等框架后,我们内部已在生产环境中适配了 Langroid 的多智能体编排框架。我们发现 Langroid 在易用性和灵活性方面远优于这些框架。Langroid 的 Agent 和 Task 抽象非常直观、设计精良,提供了极佳的开发者体验。我们希望以最快的方式将产品投入生产。使用其他框架可能需要数周,但使用 Langroid 我们在几分钟内就取得了良好的结果。强烈推荐!
-- Jacky Wong, Nullify AI 负责人。
🔥 查看 LanceDB 团队的这篇 Langroid 介绍 博客文章。
🔥 刚刚发表于 ML for Healthcare (2024):一个基于 Langroid 的多智能体 RAG 系统,用于药物警戒,参见 博客文章。
我们欢迎贡献:查看 贡献指南 了解可以贡献的内容。
你正在构建 LLM 应用程序,需要为你的公司获取 Langroid 方面的帮助,或者希望根据公司用例优先开发 Langroid 功能吗?
Prasad Chalasani 可提供咨询(顾问/开发)服务:pchalasani at gmail dot com。
也可以通过 GitHub Sponsors 接受赞助。
有问题、反馈或想法?加入我们的 Discord!
Langroid 编码快速一览
这只是一个预览;还有更多功能,如函数调用/工具、多智能体协作、结构化信息提取、DocChatAgent(RAG)、SQLChatAgent、非 OpenAI 的本地/远程 LLM 等。向下滚动或查看文档了解更多。
查看 Langroid 快速入门 Colab,它逐步构建了一个使用 OpenAI ChatCompletion API 的双智能体信息提取示例。
另请查看这个 版本,它使用 OpenAI Assistants API 代替。
🔥 刚刚发布!示例 脚本展示了如何使用 Langroid 多智能体和工具,仅使用本地 LLM(Mistral-7b-instruct-v0.2)从文档中提取结构化信息。
import langroid as lr
import langroid.language_models as lm
# 设置 LLM
llm_cfg = lm.OpenAIGPTConfig( # 或使用 OpenAIAssistant 来使用 Assistant API
# 任何通过 OpenAI 兼容 API 服务的模型
chat_model=lm.OpenAIChatModel.GPT4o, # 或者,例如 "ollama/mistral"
)
# 直接使用 LLM
mdl = lm.OpenAIGPT(llm_cfg)
response = mdl.chat("What is the capital of Ontario?", max_tokens=10)
# 在智能体中使用 LLM
agent_cfg = lr.ChatAgentConfig(llm=llm_cfg)
agent = lr.ChatAgent(agent_cfg)
agent.llm_response("What is the capital of China?")
response = agent.llm_response("And India?") # 维护对话状态
# 将智能体包装在 Task 中,与用户(或其他智能体)运行交互循环
task = lr.Task(agent, name="Bot", system_message="You are a helpful assistant")
task.run("Hello") # 用户说 "Hello" 开始
# 2-智能体聊天循环:教师智能体向学生智能体提问
teacher_agent = lr.ChatAgent(agent_cfg)
teacher_task = lr.Task(
teacher_agent, name="Teacher",
system_message="""
Ask your student concise numbers questions, and give feedback.
Start with a question.
"""
)
student_agent = lr.ChatAgent(agent_cfg)
student_task = lr.Task(
student_agent, name="Student",
system_message="Concisely answer the teacher's questions.",
single_round=True,
)
teacher_task.add_sub_task(student_task)
teacher_task.run()
🔥 更新/发布
点击展开
- **2025年8月:**
- [0.59.0](https://github.com/langroid/langroid/releases/tag/0.59.0) 完成 Pydantic V2 迁移 - 验证速度提升 5-50 倍,采用现代 Python 模式,100% 向后兼容。
- **2025年7月:**
- [0.58.0](https://github.com/langroid/langroid/releases/tag/0.58.0) Crawl4AI 集成 - 使用 Playwright 进行基于浏览器的网页爬取,适用于 JavaScript 密集型网站,无需 API 密钥(感谢 @abab-dev!)。
- [0.57.0](https://github.com/langroid/langroid/releases/tag/0.57.0) 用于交互式任务可视化的 HTML 日志记录器 - 包含可折叠条目、自动刷新和持久 UI 状态的自包含 HTML 日志。
- **2025年6月:**
- [0.56.0](https://github.com/langroid/langroid/releases/tag/0.56.0) `TaskTool` 用于将任务委托给子智能体 - 使智能体能够生成具有特定工具和配置的子智能体。
- [0.55.0](https://github.com/langroid/langroid/releases/tag/0.55.0) 基于事件的任务终止,使用 `done_sequences` - 使用事件模式声明式地完成任务。
- [0.54.0](https://github.com/langroid/langroid/releases/tag/0.54.0) Portkey AI Gateway 支持 - 通过统一 API 访问 200 多个供应商的模型,支持缓存、重试和可观测性。
- **2025年3-4月:**
- [0.53.0](https://github.com/langroid/langroid/releases/tag/0.53.0) MCP 工具支持。
- [0.52.0](https://github.com/langroid/langroid/releases/tag/0.52.0) 多模态支持,即允许 PDF、图像输入到 LLM。
- [0.51.0](https://github.com/langroid/langroid/releases/tag/0.51.0) `LLMPdfParser`,将 `GeminiPdfParser` 泛化为直接用 LLM 解析文档。
- [0.50.0](https://github.com/langroid/langroid/releases/tag/0.50.0) 结构感知的 Markdown 分块,分块通过章节标题得到增强。
- [0.49.0](https://github.com/langroid/langroid/releases/tag/0.49.0) 支持轻松切换到 LiteLLM 代理服务器。
- [0.48.0](https://github.com/langroid/langroid/releases/tag/0.48.0) Exa 爬虫,Markitdown 解析器。
- [0.47.0](https://github.com/langroid/langroid/releases/tag/0.47.0) 支持 Firecrawl URL 抓取器/爬虫 - 感谢 @abab-dev。
- [0.46.0](https://github.com/langroid/langroid/releases/tag/0.46.0) 支持 LangDB LLM 网关 - 感谢 @MrunmayS。
- [0.45.0](https://github.com/langroid/langroid/releases/tag/0.45.0) 使用 `Marker` 进行 Markdown 解析 - 感谢 @abab-dev。
- [0.44.0](https://github.com/langroid/langroid/releases/tag/0.44.0) 延迟导入以减少启动时间。感谢 @abab-dev。
- **2025年2月:**
- [0.43.0](https://github.com/langroid/langroid/releases/tag/0.43.0): `GeminiPdfParser` 用于使用 Gemini LLM 解析 PDF - 感谢 @abab-dev。
- [0.42.0](https://github.com/langroid/langroid/releases/tag/0.42.0): 用于 `pptx,xlsx,xls` 文件的 `markitdown` 解析器,感谢 @abab-dev。
- [0.41.0](https://github.com/langroid/langroid/releases/tag/0.41.0): `pinecone` 向量数据库(感谢 @coretado),`Tavily` 网络搜索(感谢 @Sozhan308),`Exa` 网络搜索(感谢 @MuddyHope)。
- [0.40.0](https://github.com/langroid/langroid/releases/tag/0.40.0): `pgvector` 向量数据库。感谢 @abab-dev。
- [0.39.0](https://github.com/langroid/langroid/releases/tag/0.39.0): `ChatAgentConfig.handle_llm_no_tool` 用于处理 LLM “忘记”使用工具的情况。
- [0.38.0](https://github.com/langroid/langroid/releases/tag/0.38.0): Gemini 嵌入 - 感谢 @abab-dev。
- [0.37.0](https://github.com/langroid/langroid/releases/tag/0.37.0): 新的 PDF 解析器:`docling`, `pymupdf4llm`。
- **2025年1月:**
- [0.36.0](https://github.com/langroid/langroid/releases/tag/0.36.0): Weaviate 向量数据库支持(感谢 @abab-dev)。
- [0.35.0](https://github.com/langroid/langroid/releases/tag/0.35.0): 捕获/流式传输推理 LLM(如 DeepSeek-R1, OpenAI o1)的推理内容以及最终答案。
- [0.34.0](https://github.com/langroid/langroid/releases/tag/0.34.0): DocChatAgent 分块增强以改进检索。(与 @dfm88 合作)。
- [0.33.0](https://github.com/langroid/langroid/releases/tag/0.33.3) 从 Poetry 迁移到 uv!(感谢 @abab-dev)。
- [0.32.0](https://github.com/langroid/langroid/releases/tag/0.32.0) DeepSeek v3 支持。
- **2024年12月:**
- [0.31.0](https://github.com/langroid/langroid/releases/tag/0.31.0) Azure OpenAI 嵌入。
- [0.30.0](https://github.com/langroid/langroid/releases/tag/0.30.0) Llama-cpp 嵌入(感谢 @Kwigg)。
- [0.29.0](https://github.com/langroid/langroid/releases/tag/0.29.0) 自定义 Azure OpenAI 客户端(感谢 @johannestang)。
- [0.28.0](https://github.com/langroid/langroid/releases/tag/0.28.0) `ToolMessage`:`_handler` 字段用于覆盖 `request` 字段中的默认处理方法名称(感谢 @alexagr)。
- [0.27.0](https://github.com/langroid/langroid/releases/tag/0.27.0) OpenRouter 支持。
- [0.26.0](https://github.com/langroid/langroid/releases/tag/0.26.0) 更新到最新的 Chainlit。
- [0.25.0](https://github.com/langroid/langroid/releases/tag/0.25.0) 智能体和用户响应的真正异步方法(感谢 @alexagr)。
- **2024年11月:**
- **[0.24.0](https://langroid.github.io/langroid/notes/structured-output/)**: 支持 `Agent` 在兼容的 LLM 上使用严格的 JSON 模式输出格式,以及 OpenAI 工具 API 的严格模式。(感谢 @nilspalumbo)。
- **[0.23.0](https://langroid.github.io/langroid/tutorials/local-llm-setup/#local-llms-hosted-on-glhfchat)**: 支持托管在 glhf.chat 上的 LLM(例如 `Qwen2.5-Coder-32b-Instruct`)。
- **[0.22.0](https://langroid.github.io/langroid/notes/large-tool-results/)**: 截断大型工具结果的可选参数。
- **[0.21.0](https://langroid.github.io/langroid/notes/gemini/)** 通过 OpenAI 客户端直接支持 Gemini 模型,而不是使用 LiteLLM。
- **[0.20.0](https://github.com/langroid/langroid/releases/tag/0.20.0)** 支持 ArangoDB 知识图谱。
-