[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-langchain-ai--langgraph-swarm-py":3,"tool-langchain-ai--langgraph-swarm-py":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":76,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":23,"env_os":96,"env_gpu":96,"env_ram":96,"env_deps":97,"category_tags":105,"github_topics":106,"view_count":112,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":144},569,"langchain-ai\u002Flanggraph-swarm-py","langgraph-swarm-py","For your multi-agent needs","langgraph-swarm-py 是一个基于 LangGraph 框架的 Python 库，旨在简化多智能体协作系统的构建。它采用“蜂群”架构，允许你创建多个拥有不同专长的智能体，让它们根据任务需求动态交接控制权。这种设计有效解决了单一模型在处理复杂、多步骤任务时能力受限或上下文丢失的问题，确保对话能在不同角色间无缝流转。\n\n对于开发者而言，langgraph-swarm-py 提供了开箱即用的智能体交接工具，无需从零编写通信逻辑。它深度集成了 LangGraph 的核心优势，支持流式输出、短期与长期记忆管理，以及人工介入机制。你只需定义好每个智能体的提示词和可用工具，即可快速搭建出能自主协作的智能体网络。无论是进行 AI 应用原型开发，还是构建复杂的自动化工作流，langgraph-swarm-py 都能帮助技术人员高效实现多角色协同，有效降低多智能体架构的开发门槛。","# 🤖 LangGraph Multi-Agent Swarm\n\nA Python library for creating swarm-style multi-agent systems using [LangGraph](https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph). A swarm is a type of [multi-agent](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmulti_agent) architecture where agents dynamically hand off control to one another based on their specializations. The system remembers which agent was last active, ensuring that on subsequent interactions, the conversation resumes with that agent.\n\n![Swarm](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flangchain-ai_langgraph-swarm-py_readme_058175063f78.png)\n\n## Features\n\n- 🤖 **Multi-agent collaboration** - Enable specialized agents to work together and hand off context to each other\n- 🛠️ **Customizable handoff tools** - Built-in tools for communication between agents\n\nThis library is built on top of [LangGraph](https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph), a powerful framework for building agent applications, and comes with out-of-box support for [streaming](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002F#streaming), [short-term and long-term memory](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmemory\u002F) and [human-in-the-loop](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fhuman_in_the_loop\u002F)\n\n## Installation\n\n```bash\npip install langgraph-swarm\n```\n\n## Quickstart\n\n```bash\npip install langgraph-swarm langchain-openai\n\nexport OPENAI_API_KEY=\u003Cyour_api_key>\n```\n\n```python\nfrom langchain_openai import ChatOpenAI\n\nfrom langgraph.checkpoint.memory import InMemorySaver\nfrom langchain.agents import create_agent\nfrom langgraph_swarm import create_handoff_tool, create_swarm\n\nmodel = ChatOpenAI(model=\"gpt-4o\")\n\ndef add(a: int, b: int) -> int:\n    \"\"\"Add two numbers\"\"\"\n    return a + b\n\nalice = create_agent(\n    model,\n    tools=[\n        add,\n        create_handoff_tool(\n            agent_name=\"Bob\",\n            description=\"Transfer to Bob\",\n        ),\n    ],\n    system_prompt=\"You are Alice, an addition expert.\",\n    name=\"Alice\",\n)\n\nbob = create_agent(\n    model,\n    tools=[\n        create_handoff_tool(\n            agent_name=\"Alice\",\n            description=\"Transfer to Alice, she can help with math\",\n        ),\n    ],\n    system_prompt=\"You are Bob, you speak like a pirate.\",\n    name=\"Bob\",\n)\n\ncheckpointer = InMemorySaver()\nworkflow = create_swarm(\n    [alice, bob],\n    default_active_agent=\"Alice\"\n)\napp = workflow.compile(checkpointer=checkpointer)\n\nconfig = {\"configurable\": {\"thread_id\": \"1\"}}\nturn_1 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"i'd like to speak to Bob\"}]},\n    config,\n)\nprint(turn_1)\nturn_2 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"what's 5 + 7?\"}]},\n    config,\n)\nprint(turn_2)\n```\n\n> [!TIP]\n> For developing, debugging, and deploying AI agents and LLM applications, see [LangSmith](https:\u002F\u002Fdocs.langchain.com\u002Flangsmith\u002Fhome).\n\n## Memory\n\nYou can add [short-term](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fpersistence\u002F) and [long-term](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fcross-thread-persistence\u002F) [memory](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmemory\u002F) to your swarm multi-agent system. Since `create_swarm()` returns an instance of `StateGraph` that needs to be compiled before use, you can directly pass a [checkpointer](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fcheckpoints\u002F#langgraph.checkpoint.base.BaseCheckpointSaver) or a [store](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fstore\u002F#langgraph.store.base.BaseStore) instance to the `.compile()` method:\n\n```python\nfrom langgraph.checkpoint.memory import InMemorySaver\nfrom langgraph.store.memory import InMemoryStore\n\n# short-term memory\ncheckpointer = InMemorySaver()\n# long-term memory\nstore = InMemoryStore()\n\nmodel = ...\nalice = ...\nbob = ...\n\nworkflow = create_swarm(\n    [alice, bob],\n    default_active_agent=\"Alice\"\n)\n\n# Compile with checkpointer\u002Fstore\napp = workflow.compile(\n    checkpointer=checkpointer,\n    store=store\n)\n```\n\n> [!IMPORTANT]\n> Adding [short-term memory](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fpersistence\u002F) is crucial for maintaining conversation state across multiple interactions. Without it, the swarm would \"forget\" which agent was last active and lose the conversation history. Make sure to always compile the swarm with a checkpointer if you plan to use it in multi-turn conversations; e.g., `workflow.compile(checkpointer=checkpointer)`.\n\n## How to customize\n\nYou can customize multi-agent swarm by changing either the [handoff tools](#customizing-handoff-tools) implementation or the [agent implementation](#customizing-agent-implementation).\n\n### Customizing handoff tools\n\nBy default, the agents in the swarm are assumed to use handoff tools created with the prebuilt `create_handoff_tool`. You can also create your own, custom handoff tools. Here are some ideas on how you can modify the default implementation:\n\n- change tool name and\u002For description\n- add tool call arguments for the LLM to populate, for example a task description for the next agent\n- change what data is passed to the next agent as part of the handoff: by default `create_handoff_tool` passes **full** message history (all of the messages generated in the swarm up to this point), as well as a tool message indicating successful handoff.\n\nHere is an example of what a custom handoff tool might look like:\n\n```python\nfrom typing import Annotated\n\nfrom langchain.tools import tool, BaseTool, InjectedToolCallId\nfrom langchain.messages import ToolMessage\nfrom langgraph.types import Command\nfrom langgraph.prebuilt import InjectedState\n\ndef create_custom_handoff_tool(*, agent_name: str, name: str | None, description: str | None) -> BaseTool:\n\n    @tool(name, description=description)\n    def handoff_to_agent(\n        # you can add additional tool call arguments for the LLM to populate\n        # for example, you can ask the LLM to populate a task description for the next agent\n        task_description: Annotated[str, \"Detailed description of what the next agent should do, including all of the relevant context.\"],\n        # you can inject the state of the agent that is calling the tool\n        state: Annotated[dict, InjectedState],\n        tool_call_id: Annotated[str, InjectedToolCallId],\n    ):\n        tool_message = ToolMessage(\n            content=f\"Successfully transferred to {agent_name}\",\n            name=name,\n            tool_call_id=tool_call_id,\n        )\n        # you can use a different messages state key here, if your agent uses a different schema\n        # e.g., \"alice_messages\" instead of \"messages\"\n        messages = state[\"messages\"]\n        return Command(\n            goto=agent_name,\n            graph=Command.PARENT,\n            # NOTE: this is a state update that will be applied to the swarm multi-agent graph (i.e., the PARENT graph)\n            update={\n                \"messages\": messages + [tool_message],\n                \"active_agent\": agent_name,\n                # optionally pass the task description to the next agent\n                \"task_description\": task_description,\n            },\n        )\n\n    return handoff_to_agent\n```\n\n> [!IMPORTANT]\n> If you are implementing custom handoff tools that return `Command`, you need to ensure that:  \n>  (1) your agent has a tool-calling node that can handle tools returning `Command` (like LangGraph's prebuilt [`ToolNode`](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fprebuilt\u002F#langgraph.prebuilt.tool_node.ToolNode))  \n>  (2) both the swarm graph and the next agent graph have the [state schema](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Flow_level#schema) containing the keys you want to update in `Command.update`\n\n### Customizing agent implementation\n\nBy default, individual agents are expected to communicate over a single `messages` key that is shared by all agents and the overall multi-agent swarm graph. This means that messages from **all** of the agents will be combined into a single, shared list of messages. This might not be desirable if you don't want to expose an agent's internal history of messages. To change this, you can customize the agent by taking the following steps:\n\n1.  use custom [state schema](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Flow_level#schema) with a different key for messages, for example `alice_messages`\n1.  write a wrapper that converts the parent graph state to the child agent state and back (see this [how-to](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fsubgraph-transform-state\u002F) guide)\n\n```python\nfrom typing_extensions import TypedDict, Annotated\n\nfrom langchain.messages import AnyMessage\nfrom langgraph.graph import StateGraph, add_messages\nfrom langgraph_swarm import SwarmState\n\nclass AliceState(TypedDict):\n    alice_messages: Annotated[list[AnyMessage], add_messages]\n\n# see this guide to learn how you can implement a custom tool-calling agent\n# https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Freact-agent-from-scratch\u002F\nalice = (\n    StateGraph(AliceState)\n    .add_node(\"model\", ...)\n    .add_node(\"tools\", ...)\n    .add_edge(...)\n    ...\n    .compile()\n)\n\n# wrapper calling the agent\ndef call_alice(state: SwarmState):\n    # you can put any input transformation from parent state -> agent state\n    # for example, you can invoke \"alice\" with \"task_description\" populated by the LLM\n    response = alice.invoke({\"alice_messages\": state[\"messages\"]})\n    # you can put any output transformation from agent state -> parent state\n    return {\"messages\": response[\"alice_messages\"]}\n\ndef call_bob(state: SwarmState):\n    ...\n```\n\nThen, you can create the swarm manually in the following way:\n\n```python\nfrom langgraph_swarm import add_active_agent_router\n\nworkflow = (\n    StateGraph(SwarmState)\n    .add_node(\"Alice\", call_alice, destinations=(\"Bob\",))\n    .add_node(\"Bob\", call_bob, destinations=(\"Alice\",))\n)\n# this is the router that enables us to keep track of the last active agent\nworkflow = add_active_agent_router(\n    builder=workflow,\n    route_to=[\"Alice\", \"Bob\"],\n    default_active_agent=\"Alice\",\n)\n\n# compile the workflow\napp = workflow.compile()\n```\n","# 🤖 LangGraph Multi-Agent Swarm\n\n一个使用 [LangGraph](https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph) 创建蜂群式**多智能体 (multi-agent)** 系统的 Python 库。蜂群是一种 [多智能体](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmulti_agent) 架构类型，其中智能体根据其专长动态地将控制权移交给彼此。系统会记住最后活跃的智能体是谁，确保在后续交互中，对话能与该智能体继续。\n\n![Swarm](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flangchain-ai_langgraph-swarm-py_readme_058175063f78.png)\n\n## Features\n\n- 🤖 **多智能体协作** - 启用专用智能体协同工作并相互传递上下文\n- 🛠️ **可自定义的交接工具** - 内置用于智能体间通信的工具\n\n本库基于 [LangGraph](https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph) 构建，这是一个用于构建智能体应用的强大框架，并开箱即用地支持 [流式传输 (streaming)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002F#streaming)、[短期和长期记忆 (memory)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmemory\u002F) 以及 [人机回环 (human-in-the-loop)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fhuman_in_the_loop\u002F)\n\n## Installation\n\n```bash\npip install langgraph-swarm\n```\n\n## Quickstart\n\n```bash\npip install langgraph-swarm langchain-openai\n\nexport OPENAI_API_KEY=\u003Cyour_api_key>\n```\n\n```python\nfrom langchain_openai import ChatOpenAI\n\nfrom langgraph.checkpoint.memory import InMemorySaver\nfrom langchain.agents import create_agent\nfrom langgraph_swarm import create_handoff_tool, create_swarm\n\nmodel = ChatOpenAI(model=\"gpt-4o\")\n\ndef add(a: int, b: int) -> int:\n    \"\"\"Add two numbers\"\"\"\n    return a + b\n\nalice = create_agent(\n    model,\n    tools=[\n        add,\n        create_handoff_tool(\n            agent_name=\"Bob\",\n            description=\"Transfer to Bob\",\n        ),\n    ],\n    system_prompt=\"You are Alice, an addition expert.\",\n    name=\"Alice\",\n)\n\nbob = create_agent(\n    model,\n    tools=[\n        create_handoff_tool(\n            agent_name=\"Alice\",\n            description=\"Transfer to Alice, she can help with math\",\n        ),\n    ],\n    system_prompt=\"You are Bob, you speak like a pirate.\",\n    name=\"Bob\",\n)\n\ncheckpointer = InMemorySaver()\nworkflow = create_swarm(\n    [alice, bob],\n    default_active_agent=\"Alice\"\n)\napp = workflow.compile(checkpointer=checkpointer)\n\nconfig = {\"configurable\": {\"thread_id\": \"1\"}}\nturn_1 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"i'd like to speak to Bob\"}]},\n    config,\n)\nprint(turn_1)\nturn_2 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"what's 5 + 7?\"}]},\n    config,\n)\nprint(turn_2)\n```\n\n> [!TIP]\n> 对于开发、调试和部署 AI 智能体和 [大语言模型 (LLM)](https:\u002F\u002Fdocs.langchain.com\u002Flangsmith\u002Fhome) 应用，请参阅 [LangSmith](https:\u002F\u002Fdocs.langchain.com\u002Flangsmith\u002Fhome)。\n\n## Memory\n\n您可以为您的蜂群多智能体系统添加 [短期 (short-term)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fpersistence\u002F) 和 [长期 (long-term)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fcross-thread-persistence\u002F) [记忆 (memory)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fmemory\u002F)。由于 `create_swarm()` 返回一个需要在编译后才能使用的 `状态图 (StateGraph)` 实例，您可以直接将 [检查点保存器 (checkpointer)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fcheckpoints\u002F#langgraph.checkpoint.base.BaseCheckpointSaver) 或 [存储 (store)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fstore\u002F#langgraph.store.base.BaseStore) 实例传递给 `.compile()` 方法：\n\n```python\nfrom langgraph.checkpoint.memory import InMemorySaver\nfrom langgraph.store.memory import InMemoryStore\n\n# short-term memory\ncheckpointer = InMemorySaver()\n# long-term memory\nstore = InMemoryStore()\n\nmodel = ...\nalice = ...\nbob = ...\n\nworkflow = create_swarm(\n    [alice, bob],\n    default_active_agent=\"Alice\"\n)\n\n# Compile with checkpointer\u002Fstore\napp = workflow.compile(\n    checkpointer=checkpointer,\n    store=store\n)\n```\n\n> [!IMPORTANT]\n> 添加 [短期记忆 (short-term memory)](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fpersistence\u002F) 对于跨多次交互维持对话状态至关重要。如果没有它，蜂群将“忘记”最后活跃的智能体是谁并丢失对话历史。如果您计划在多轮对话中使用它，请确保始终使用检查点保存器编译蜂群；例如，`workflow.compile(checkpointer=checkpointer)`。\n\n## How to customize\n\n您可以通过更改 [交接工具 (handoff tools)](#customizing-handoff-tools) 实现或 [智能体 (agent)](#customizing-agent-implementation) 实现来自定义多智能体蜂群。\n\n### 自定义交接工具\n\n默认情况下，群集（swarm）中的代理（agents）假定使用通过预构建的 `create_handoff_tool` 创建的交接工具（handoff tools）。你也可以创建自己的自定义交接工具。以下是一些关于如何修改默认实现的想法：\n\n- 更改工具名称和\u002F或描述\n- 添加供大语言模型（LLM）填充的工具调用参数，例如下一个代理的任务描述\n- 更改作为交接一部分传递给下一个代理的数据：默认情况下，`create_handoff_tool` 传递**完整**的消息历史（直到当前点群集中生成的所有消息），以及一个指示交接成功的工具消息。\n\n以下是自定义交接工具可能的外观示例：\n\n```python\nfrom typing import Annotated\n\nfrom langchain.tools import tool, BaseTool, InjectedToolCallId\nfrom langchain.messages import ToolMessage\nfrom langgraph.types import Command\nfrom langgraph.prebuilt import InjectedState\n\ndef create_custom_handoff_tool(*, agent_name: str, name: str | None, description: str | None) -> BaseTool:\n\n    @tool(name, description=description)\n    def handoff_to_agent(\n        # you can add additional tool call arguments for the LLM to populate\n        # for example, you can ask the LLM to populate a task description for the next agent\n        task_description: Annotated[str, \"Detailed description of what the next agent should do, including all of the relevant context.\"],\n        # you can inject the state of the agent that is calling the tool\n        state: Annotated[dict, InjectedState],\n        tool_call_id: Annotated[str, InjectedToolCallId],\n    ):\n        tool_message = ToolMessage(\n            content=f\"Successfully transferred to {agent_name}\",\n            name=name,\n            tool_call_id=tool_call_id,\n        )\n        # you can use a different messages state key here, if your agent uses a different schema\n        # e.g., \"alice_messages\" instead of \"messages\"\n        messages = state[\"messages\"]\n        return Command(\n            goto=agent_name,\n            graph=Command.PARENT,\n            # NOTE: this is a state update that will be applied to the swarm multi-agent graph (i.e., the PARENT graph)\n            update={\n                \"messages\": messages + [tool_message],\n                \"active_agent\": agent_name,\n                # optionally pass the task description to the next agent\n                \"task_description\": task_description,\n            },\n        )\n\n    return handoff_to_agent\n```\n\n> [!IMPORTANT]\n> 如果你正在实现返回 `Command` 的自定义交接工具，你需要确保：  \n>  (1) 你的代理拥有一个可以处理返回 `Command` 的工具的调用节点（例如 LangGraph 预构建的 [`ToolNode`](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fprebuilt\u002F#langgraph.prebuilt.tool_node.ToolNode)）  \n>  (2) 群集图和下一个代理图都拥有包含你希望在 `Command.update` 中更新的键的 [状态架构](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Flow_level#schema)\n\n### 自定义代理实现\n\n默认情况下，各个代理预期通过一个由所有代理和整体多代理群集图共享的单一 `messages` 键进行通信。这意味着来自**所有**代理的消息将被合并到一个单一的共享消息列表中。如果你不希望暴露代理的内部消息历史，这可能不是理想的方案。要更改这一点，你可以通过以下步骤自定义代理：\n\n1. 使用自定义的 [状态架构](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Flow_level#schema)，为消息使用不同的键，例如 `alice_messages`\n2. 编写一个包装器，将父图状态转换为子代理状态并转换回来（参见此 [操作指南](https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Fsubgraph-transform-state\u002F) 指南）\n\n```python\nfrom typing_extensions import TypedDict, Annotated\n\nfrom langchain.messages import AnyMessage\nfrom langgraph.graph import StateGraph, add_messages\nfrom langgraph_swarm import SwarmState\n\nclass AliceState(TypedDict):\n    alice_messages: Annotated[list[AnyMessage], add_messages]\n\n# see this guide to learn how you can implement a custom tool-calling agent\n# https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fhow-tos\u002Freact-agent-from-scratch\u002F\nalice = (\n    StateGraph(AliceState)\n    .add_node(\"model\", ...)\n    .add_node(\"tools\", ...)\n    .add_edge(...)\n    ...\n    .compile()\n)\n\n# wrapper calling the agent\ndef call_alice(state: SwarmState):\n    # you can put any input transformation from parent state -> agent state\n    # for example, you can invoke \"alice\" with \"task_description\" populated by the LLM\n    response = alice.invoke({\"alice_messages\": state[\"messages\"]})\n    # you can put any output transformation from agent state -> parent state\n    return {\"messages\": response[\"alice_messages\"]}\n\ndef call_bob(state: SwarmState):\n    ...\n```\n\n然后，你可以按以下方式手动创建群集：\n\n```python\nfrom langgraph_swarm import add_active_agent_router\n\nworkflow = (\n    StateGraph(SwarmState)\n    .add_node(\"Alice\", call_alice, destinations=(\"Bob\",))\n    .add_node(\"Bob\", call_bob, destinations=(\"Alice\",))\n)\n# this is the router that enables us to keep track of the last active agent\nworkflow = add_active_agent_router(\n    builder=workflow,\n    route_to=[\"Alice\", \"Bob\"],\n    default_active_agent=\"Alice\",\n)\n\n# compile the workflow\napp = workflow.compile()\n```","# 🤖 langgraph-swarm-py 快速上手指南\n\n**LangGraph Multi-Agent Swarm** 是一个基于 LangGraph 的 Python 库，用于构建蜂群式多智能体系统。它允许智能体根据专长动态交接控制权，并自动记录最后活跃的智能体以维持上下文。\n\n## 1. 环境准备\n\n- **Python 版本**：建议 3.8 及以上\n- **前置依赖**：需配置 OpenAI API 密钥（示例基于 OpenAI 模型）\n- **网络环境**：建议配置国内镜像源以加速依赖下载\n\n## 2. 安装步骤\n\n使用国内镜像源安装核心库及 OpenAI 适配器：\n\n```bash\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple langgraph-swarm langchain-openai\n```\n\n设置环境变量（请替换为真实密钥）：\n\n```bash\nexport OPENAI_API_KEY=\u003Cyour_api_key>\n```\n\n## 3. 基本使用\n\n以下示例演示了如何创建两个智能体（Alice 和 Bob），定义交接工具，并编译支持多轮对话记忆的工作流。\n\n```python\nfrom langchain_openai import ChatOpenAI\n\nfrom langgraph.checkpoint.memory import InMemorySaver\nfrom langchain.agents import create_agent\nfrom langgraph_swarm import create_handoff_tool, create_swarm\n\nmodel = ChatOpenAI(model=\"gpt-4o\")\n\ndef add(a: int, b: int) -> int:\n    \"\"\"Add two numbers\"\"\"\n    return a + b\n\nalice = create_agent(\n    model,\n    tools=[\n        add,\n        create_handoff_tool(\n            agent_name=\"Bob\",\n            description=\"Transfer to Bob\",\n        ),\n    ],\n    system_prompt=\"You are Alice, an addition expert.\",\n    name=\"Alice\",\n)\n\nbob = create_agent(\n    model,\n    tools=[\n        create_handoff_tool(\n            agent_name=\"Alice\",\n            description=\"Transfer to Alice, she can help with math\",\n        ),\n    ],\n    system_prompt=\"You are Bob, you speak like a pirate.\",\n    name=\"Bob\",\n)\n\ncheckpointer = InMemorySaver()\nworkflow = create_swarm(\n    [alice, bob],\n    default_active_agent=\"Alice\"\n)\napp = workflow.compile(checkpointer=checkpointer)\n\nconfig = {\"configurable\": {\"thread_id\": \"1\"}}\nturn_1 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"i'd like to speak to Bob\"}]},\n    config,\n)\nprint(turn_1)\nturn_2 = app.invoke(\n    {\"messages\": [{\"role\": \"user\", \"content\": \"what's 5 + 7?\"}]},\n    config,\n)\nprint(turn_2)\n```\n\n### 💡 关键说明\n- **记忆持久化**：务必在 `workflow.compile()` 时传入 `checkpointer`（如 `InMemorySaver`）。否则系统将无法记住上一轮活跃的智能体，导致多轮对话中断。\n- **智能体交接**：通过 `create_handoff_tool` 定义智能体间的通信规则，LLM 会根据上下文自动调用交接工具切换智能体。","某电商公司的技术团队正在开发新一代智能售后助手，旨在高效解决用户复杂的订单查询与故障排查需求。\n\n### 没有 langgraph-swarm-py 时\n- 单一 LLM 模型难以兼顾财务对账逻辑与代码级故障分析，专业度不足且易产生幻觉。\n- 用户从“查订单”转到“修 Bug\"时，上下文经常中断，需反复确认身份与历史细节。\n- 硬编码的 if-else 路由逻辑臃肿，新增业务角色需重构整个流程，维护成本极高。\n- 缺乏会话状态持久化，长对话中容易遗忘之前的关键信息，导致服务体验严重割裂。\n\n### 使用 langgraph-swarm-py 后\n- 构建了“财务专员”与“技术极客”两个独立 Agent，通过专业化分工显著提升回答准确率。\n- 内置手递手（Handoff）工具让 Agent 间自动传递控制权，用户完全感知不到后台切换过程。\n- 结合 Checkpointer 实现短期记忆，确保跨 Agent 协作时上下文不丢失，对话连贯自然流畅。\n- 动态路由机制简化了调度逻辑，新增角色只需注册即可接入工作流，系统扩展性大幅提升。\n\n`langgraph-swarm-py` 通过解耦 Agent 职责与自动化状态管理，显著降低了多智能体系统的开发复杂度并优化了最终用户体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flangchain-ai_langgraph-swarm-py_05817506.png","langchain-ai","LangChain","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Flangchain-ai_8e6aaeef.png","",null,"support@langchain.dev","https:\u002F\u002Fwww.langchain.com","https:\u002F\u002Fgithub.com\u002Flangchain-ai",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",93.8,{"name":89,"color":90,"percentage":91},"Makefile","#427819",6.2,1455,205,"2026-04-04T01:40:32","MIT","未说明",{"notes":98,"python":96,"dependencies":99},"运行示例需配置 OpenAI API 密钥；核心依赖 LangGraph 框架进行多智能体编排；多轮对话场景必须使用 checkpointer 来维护会话状态和记忆；支持流式传输、短期\u002F长期记忆及人工介入模式。",[100,101,102,103,104],"langgraph-swarm","langchain-openai","langgraph","langchain","openai",[26,15],[107,102,108,109,110,111],"agents","llms","multiagent","multiagent-systems","python",5,"2026-03-27T02:49:30.150509","2026-04-06T10:24:03.547295",[116,121,125,130,134,139],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},2319,"如何在 Swarm 中隔离不同代理之间的消息历史？","不要在整个 Swarm 图中共享完整的消息历史。建议使用复合状态类（如 FullSwarmState），为每个代理定义独立的消息列表字段（例如 alice_messages, bob_messages）。在更新状态时要非常谨慎，确保只更新特定代理的字段，从而实现两个代理之间消息流的完全私有化。","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fissues\u002F56",{"id":122,"question_zh":123,"answer_zh":124,"source_url":120},2320,"如何定义用于代理隔离的自定义状态类？","需要继承 AgentState 并使用 Annotated 类型注解来定义消息列表。例如：\n```python\nclass AliceState(AgentState):\n    alice_messages: Annotated[list[AnyMessage], add_messages]\n    active_agent: str\n```\n然后在 StateGraph 中使用这些状态，并通过 StateGraph(FullSwarmState) 组合它们。",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},2321,"更新后 `create_swarm` 报错 'StateGraph' object has no attribute 'schema' 是什么原因？","这是由于更新了 `langchain`、`langgraph` 或 `langgraph-sdk` 后出现的破坏性变更。维护者已在 0.0.12 版本发布了解决方案，但如果仍遇到此错误，可能是版本未同步或存在其他兼容性问题。","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fissues\u002F85",{"id":131,"question_zh":132,"answer_zh":133,"source_url":129},2322,"`create_swarm` 出现 'schema' 属性错误的临时解决方案是什么？","作为临时变通方法，可以在本地 `langgraph_swarm` venv 文件的 `add_active_agent_router` 函数中实现以下修复：\n```py\nchannels = builder.schemas[builder.state_schema]\n```\n这能解决即时问题，但建议关注官方是否有更永久的修复方案。",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},2323,"如何在代理交接前修改查询内容？","可以自定义代理调用函数。在调用 `agent.invoke` 之前，根据提取的实体信息生成新的查询语句（例如 `generate_new_query`）。然后将新查询与现有消息结合传入，并在最后返回结果时更新父级 Swarm 状态的实体和消息字段，确保只有相关部分传递给下一个代理。","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fissues\u002F44",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},2324,"使用 LangGraph CLI 或内存服务器运行 Swarm 遇到问题怎么办？","如果在运行 `langgraph dev` 或使用 InMemorySaver 时遇到问题，且确认代码逻辑无误，这可能不是 `langgraph-swarm` 库本身的问题。维护者建议将此问题反馈到 LangGraph 主仓库的 Issue 中，以便获得针对核心工具链的支持。","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fissues\u002F9",[145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220],{"id":146,"version":147,"summary_zh":148,"released_at":149},111551,"langgraph-swarm==0.0.15","## What's Changed\n* chore(bump): allow using with langchain 1.0 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F103\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.14...langgraph-swarm==0.0.15","2025-11-07T15:45:35",{"id":151,"version":152,"summary_zh":153,"released_at":154},111552,"langgraph-swarm==0.0.14","## What's Changed\n* release: v0.0.14 and prep for langgraph v0.6 by @sydney-runkle in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F92\n\n## New Contributors\n* @sydney-runkle made their first contribution in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F92\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.13...langgraph-swarm==0.0.14","2025-07-28T14:26:17",{"id":156,"version":157,"summary_zh":158,"released_at":159},111553,"langgraph-swarm==0.0.13","## What's Changed\n* Apply stricter linting by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F89\n* chore: turn on mypy, add py.typed by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F90\n* add support for pydantic state for the swarm state by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F91\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.12...langgraph-swarm==0.0.13","2025-07-16T18:13:25",{"id":161,"version":162,"summary_zh":163,"released_at":164},111554,"langgraph-swarm==0.0.12","## What's Changed\n* make compatible with langgraph 0.5 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F87\n* Release 0.0.12 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F88\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.11...langgraph-swarm==0.0.12","2025-07-09T14:15:00",{"id":166,"version":167,"summary_zh":168,"released_at":169},111555,"langgraph-swarm==0.0.11","## What's Changed\n* docs: fix docsting for create_swarm by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F71\n* docs: improve docstring for create_swarm by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F72\n* docs: improve docstring for add_active_agent_router by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F73\n* docs: improve example formatting by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F74\n* update langgraph range by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F75\n* release 0.0.11 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F76\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.10...langgraph-swarm==0.0.11","2025-04-30T15:59:44",{"id":171,"version":172,"summary_zh":173,"released_at":174},111556,"langgraph-swarm==0.0.10","## What's Changed\n* relax agent types by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F62\n* release 0.0.10 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F63\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.9...langgraph-swarm==0.0.10","2025-04-11T01:11:24",{"id":176,"version":177,"summary_zh":178,"released_at":179},111557,"langgraph-swarm==0.0.9","## What's Changed\n* update handoff to include names by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F51\n* release 0.0.9 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F52\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.8...langgraph-swarm==0.0.9","2025-04-02T15:14:39",{"id":181,"version":182,"summary_zh":183,"released_at":184},111558,"langgraph-swarm==0.0.8","## What's Changed\n* Add researcher by @rlancemartin in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F46\n* update active_agent typing, use agent names enum as default type by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F48\n* add config schema by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F49\n* release 0.0.8 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F50\n\n## New Contributors\n* @rlancemartin made their first contribution in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F46\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.7...langgraph-swarm==0.0.8","2025-03-31T17:54:14",{"id":186,"version":187,"summary_zh":188,"released_at":189},111559,"langgraph-swarm==0.0.7","## What's Changed\n* add py.typed by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F37\n* release 0.0.7 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F38\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.6...langgraph-swarm==0.0.7","2025-03-19T18:09:21",{"id":191,"version":192,"summary_zh":193,"released_at":194},111560,"langgraph-swarm==0.0.6","## What's Changed\n* Export SwarmState from __init__.py by @hinthornw in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F33\n\n## New Contributors\n* @hinthornw made their first contribution in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F33\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.5...langgraph-swarm==0.0.6","2025-03-17T20:46:25",{"id":196,"version":197,"summary_zh":198,"released_at":199},111561,"langgraph-swarm==0.0.5","## What's Changed\n* update README by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F17\n* add test by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F19\n* update langgraph & pass state explicitly in handoffs by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F20\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.4...langgraph-swarm==0.0.5","2025-03-05T01:06:43",{"id":201,"version":202,"summary_zh":203,"released_at":204},111562,"langgraph-swarm==0.0.4","## What's Changed\n* bump langchain core, release 0.0.4 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F14\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.3...langgraph-swarm==0.0.4","2025-03-01T14:15:21",{"id":206,"version":207,"summary_zh":208,"released_at":209},111563,"langgraph-swarm==0.0.3","## What's Changed\n* release 0.0.3 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F7\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.2...langgraph-swarm==0.0.3","2025-02-27T00:14:15",{"id":211,"version":212,"summary_zh":213,"released_at":214},111564,"langgraph-swarm==0.0.2","## What's Changed\n* bump core and update tool definition by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F4\n* release 0.0.2 by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F5\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.1...langgraph-swarm==0.0.2","2025-02-26T00:59:01",{"id":216,"version":217,"summary_zh":218,"released_at":219},111565,"langgraph-swarm==0.0.1","## What's Changed\n* initial implementation by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F1\n* update readme image by @vbarda in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F3\n\n## New Contributors\n* @vbarda made their first contribution in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F1\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcommits\u002Flanggraph-swarm==0.0.1","2025-02-25T19:54:41",{"id":221,"version":222,"summary_zh":223,"released_at":224},111550,"langgraph-swarm==0.1.0","## What's Changed\n* fix: migrate to langchain 1.0 by @philogicae in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F110\n\n## New Contributors\n* @philogicae made their first contribution in https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fpull\u002F110\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph-swarm-py\u002Fcompare\u002Flanggraph-swarm==0.0.15...langgraph-swarm==0.1.0","2025-12-04T19:04:25"]