agentscope-ai

    agentscope-ai/agentscope

    Build and run agents you can see, understand and trust.

    ai-agents
    llm
    agent
    chatbot
    large-language-models
    llm-agent
    mcp
    multi-agent
    multi-modal
    react-agent
    Python
    Apache-2.0
    16.6K stars
    1.5K forks
    16.6K watching
    Updated 2/28/2026
    View on GitHub
    Backblaze Advertisement

    Loading star history...

    Health Score

    24.89

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    1

    Total contributors

    Open Issues

    107

    Generated Insights

    About agentscope

    AgentScope Logo

    中文主页 | Tutorial | Roadmap (Jan 2026 -) | FAQ

    arxiv pypi pypi discord docs license

    modelscope%2Fagentscope | Trendshift

    What is AgentScope?

    AgentScope is a production-ready, easy-to-use agent framework with essential abstractions that work with rising model capability and built-in support for finetuning.

    We design for increasingly agentic LLMs. Our approach leverages the models' reasoning and tool use abilities rather than constraining them with strict prompts and opinionated orchestrations.

    Why use AgentScope?

    • Simple: start building your agents in 5 minutes with built-in ReAct agent, tools, skills, human-in-the-loop steering, memory, planning, realtime voice, evaluation and model finetuning
    • Extensible: large number of ecosystem integrations for tools, memory and observability; built-in support for MCP and A2A; message hub for flexible multi-agent orchestration and workflows
    • Production-ready: deploy and serve your agents locally, as serverless in the cloud, or on your K8s cluster with built-in OTel support


    The AgentScope Ecosystem

    News

    • [2026-02] FEAT: Realtime Voice Agent support. Example | Multi-Agent Realtime Example | Tutorial
    • [2026-01] COMM: Biweekly Meetings launched to share ecosystem updates and development plans - join us! Details & Schedule
    • [2026-01] FEAT: Database support & memory compression in memory module. Example | Tutorial
    • [2025-12] INTG: A2A (Agent-to-Agent) protocol support. Example | Tutorial
    • [2025-12] FEAT: TTS (Text-to-Speech) support. Example | Tutorial
    • [2025-11] INTG: Anthropic Agent Skill support. Example | Tutorial
    • [2025-11] RELS: Alias-Agent for diverse real-world tasks and Data-Juicer Agent for data processing open-sourced. Alias-Agent | Data-Juicer Agent
    • [2025-11] INTG: Agentic RL via Trinity-RFT library. Example | Trinity-RFT
    • [2025-11] INTG: ReMe for enhanced long-term memory. Example
    • [2025-11] RELS: agentscope-samples repository launched and agentscope-runtime upgraded with Docker/K8s deployment and VNC-powered GUI sandboxes. Samples | Runtime

    More news →

    Community

    Welcome to join our community on

    DiscordDingTalk

    📑 Table of Contents

    Quickstart

    Installation

    AgentScope requires Python 3.10 or higher.

    From PyPI

    pip install agentscope
    

    Or with uv:

    uv pip install agentscope
    

    From source

    # Pull the source code from GitHub
    git clone -b main https://github.com/agentscope-ai/agentscope.git
    
    # Install the package in editable mode
    cd agentscope
    
    pip install -e .
    # or with uv:
    # uv pip install -e .
    

    Example

    Hello AgentScope!

    Start with a conversation between user and a ReAct agent 🤖 named "Friday"!

    from agentscope.agent import ReActAgent, UserAgent
    from agentscope.model import DashScopeChatModel
    from agentscope.formatter import DashScopeChatFormatter
    from agentscope.memory import InMemoryMemory
    from agentscope.tool import Toolkit, execute_python_code, execute_shell_command
    import os, asyncio
    
    
    async def main():
        toolkit = Toolkit()
        toolkit.register_tool_function(execute_python_code)
        toolkit.register_tool_function(execute_shell_command)
    
        agent = ReActAgent(
            name="Friday",
            sys_prompt="You're a helpful assistant named Friday.",
            model=DashScopeChatModel(
                model_name="qwen-max",
                api_key=os.environ["DASHSCOPE_API_KEY"],
                stream=True,
            ),
            memory=InMemoryMemory(),
            formatter=DashScopeChatFormatter(),
            toolkit=toolkit,
        )
    
        user = UserAgent(name="user")
    
        msg = None
        while True:
            msg = await agent(msg)
            msg = await user(msg)
            if msg.get_text_content() == "exit":
                break
    
    asyncio.run(main())
    

    Voice Agent

    Create a voice-enabled ReAct agent that can understand and respond with speech, even playing a multi-agent werewolf game with voice interactions.

    https://github.com/user-attachments/assets/c5f05254-aff6-4375-90df-85e8da95d5da

    Realtime Voice Agent

    Build a realtime voice agent with web interface that can interact with users via voice input and output.

    Realtime chatbot | Realtime Multi-Agent Example

    https://github.com/user-attachments/assets/1b7b114b-e995-4586-9b3f-d3bb9fcd2558

    Human-in-the-loop

    Support realtime interruption in ReActAgent: conversation can be interrupted via cancellation in realtime and resumed seamlessly via robust memory preservation.

    Realtime Steering

    Flexible MCP Usage

    Use individual MCP tools as local callable functions to compose toolkits or wrap into a more complex tool.

    from agentscope.mcp import HttpStatelessClient
    from agentscope.tool import Toolkit
    import os
    
    async def fine_grained_mcp_control():
        # Initialize the MCP client
        client = HttpStatelessClient(
            name="gaode_mcp",
            transport="streamable_http",
            url=f"https://mcp.amap.com/mcp?key={os.environ['GAODE_API_KEY']}",
        )
    
        # Obtain the MCP tool as a **local callable function**, and use it anywhere
        func = await client.get_callable_function(func_name="maps_geo")
    
        # Option 1: Call directly
        await func(address="Tiananmen Square", city="Beijing")
    
        # Option 2: Pass to agent as a tool
        toolkit = Toolkit()
        toolkit.register_tool_function(func)
        # ...
    
        # Option 3: Wrap into a more complex tool
        # ...
    

    Agentic RL

    Train your agentic application seamlessly with Reinforcement Learning integration. We also prepare multiple sample projects covering various scenarios:

    ExampleDescriptionModelTraining Result
    Math AgentTune a math-solving agent with multi-step reasoning.Qwen3-0.6BAccuracy: 75% → 85%
    Frozen LakeTrain an agent to navigate the Frozen Lake environment.Qwen2.5-3B-InstructSuccess rate: 15% → 86%
    Learn to AskTune agents using LLM-as-a-judge for automated feedback.Qwen2.5-7B-InstructAccuracy: 47% → 92%
    Email SearchImprove tool-use capabilities without labeled ground truth.Qwen3-4B-Instruct-2507Accuracy: 60%
    Werewolf GameTrain agents for strategic multi-agent game interactions.Qwen2.5-7B-InstructWerewolf win rate: 50% → 80%
    Data AugmentGenerate synthetic training data to enhance tuning results.Qwen3-0.6BAIME-24 accuracy: 20% → 60%

    Multi-Agent Workflows

    AgentScope provides MsgHub and pipelines to streamline multi-agent conversations, offering efficient message routing and seamless information sharing

    from agentscope.pipeline import MsgHub, sequential_pipeline
    from agentscope.message import Msg
    import asyncio
    
    async def multi_agent_conversation():
        # Create agents
        agent1 = ...
        agent2 = ...
        agent3 = ...
        agent4 = ...
    
        # Create a message hub to manage multi-agent conversation
        async with MsgHub(
            participants=[agent1, agent2, agent3],
            announcement=Msg("Host", "Introduce yourselves.", "assistant")
        ) as hub:
            # Speak in a sequential manner
            await sequential_pipeline([agent1, agent2, agent3])
            # Dynamic manage the participants
            hub.add(agent4)
            hub.delete(agent3)
            await hub.broadcast(Msg("Host", "Goodbye!", "assistant"))
    
    asyncio.run(multi_agent_conversation())
    

    Documentation

    More Examples & Samples

    Functionality

    Agent

    Game

    Workflow

    Evaluation

    Tuner

    Contributing

    We welcome contributions from the community! Please refer to our CONTRIBUTING.md for guidelines on how to contribute.

    License

    AgentScope is released under Apache License 2.0.

    Publications

    If you find our work helpful for your research or application, please cite our papers.

    @article{agentscope_v1,
        author  = {Dawei Gao, Zitao Li, Yuexiang Xie, Weirui Kuang, Liuyi Yao, Bingchen Qian, Zhijian Ma, Yue Cui, Haohao Luo, Shen Li, Lu Yi, Yi Yu, Shiqi He, Zhiling Luo, Wenmeng Zhou, Zhicheng Zhang, Xuguang He, Ziqian Chen, Weikai Liao, Farruh Isakulovich Kushnazarov, Yaliang Li, Bolin Ding, Jingren Zhou}
        title   = {AgentScope 1.0: A Developer-Centric Framework for Building Agentic Applications},
        journal = {CoRR},
        volume  = {abs/2508.16279},
        year    = {2025},
    }
    
    @article{agentscope,
        author  = {Dawei Gao, Zitao Li, Xuchen Pan, Weirui Kuang, Zhijian Ma, Bingchen Qian, Fei Wei, Wenhao Zhang, Yuexiang Xie, Daoyuan Chen, Liuyi Yao, Hongyi Peng, Zeyu Zhang, Lin Zhu, Chen Cheng, Hongzhu Shi, Yaliang Li, Bolin Ding, Jingren Zhou}
        title   = {AgentScope: A Flexible yet Robust Multi-Agent Platform},
        journal = {CoRR},
        volume  = {abs/2402.14034},
        year    = {2024},
    }
    

    Contributors

    All thanks to our contributors:

    Discover Repositories

    Search across tracked repositories by name or description