[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72071":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":41,"readmeContent":42,"aiSummary":43,"trendingCount":16,"starSnapshotCount":16,"syncStatus":44,"lastSyncTime":45,"discoverSource":46},72071,"sdk-python","strands-agents\u002Fsdk-python","strands-agents","A model-driven approach to building AI agents in just a few lines of code.","https:\u002F\u002Fstrandsagents.com",null,"Python",5988,857,49,342,0,151,39.8,"Apache License 2.0",false,"main",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,7],"agentic","agentic-ai","agents","ai","anthropic","autonomous-agents","bedrock","genai","litellm","llama","llm","machine-learning","mcp","multi-agent-systems","ollama","openai","opentelemetry","python","2026-06-12 02:02:58","\u003Cdiv align=\"center\">\n  \u003Cdiv>\n    \u003Ca href=\"https:\u002F\u002Fstrandsagents.com\">\n      \u003Cimg src=\"https:\u002F\u002Fstrandsagents.com\u002Flatest\u002Fassets\u002Flogo-github.svg\" alt=\"Strands Agents\" width=\"55px\" height=\"105px\">\n    \u003C\u002Fa>\n  \u003C\u002Fdiv>\n\n  \u003Ch1>\n    Strands Agents\n  \u003C\u002Fh1>\n\n  \u003Ch2>\n    A model-driven approach to building AI agents in just a few lines of code.\n  \u003C\u002Fh2>\n\n  \u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsdk-python\u002Fgraphs\u002Fcommit-activity\">\u003Cimg alt=\"GitHub commit activity\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcommit-activity\u002Fm\u002Fstrands-agents\u002Fsdk-python\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsdk-python\u002Fissues\">\u003Cimg alt=\"GitHub open issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fstrands-agents\u002Fsdk-python\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsdk-python\u002Fpulls\">\u003Cimg alt=\"GitHub open pull requests\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002Fstrands-agents\u002Fsdk-python\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsdk-python\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fstrands-agents\u002Fsdk-python\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fstrands-agents\u002F\">\u003Cimg alt=\"PyPI version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fstrands-agents\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpython.org\">\u003Cimg alt=\"Python versions\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fstrands-agents\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fstrands\">\u003Cimg alt=\"Strands Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Strands-5865F2?logo=discord&logoColor=white\"\u002F>\u003C\u002Fa>\n  \u003C\u002Fdiv>\n  \n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fstrandsagents.com\u002F\">Documentation\u003C\u002Fa>\n    ◆ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsamples\">Samples\u003C\u002Fa>\n    ◆ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fsdk-python\">Python SDK\u003C\u002Fa>\n    ◆ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Ftools\">Tools\u003C\u002Fa>\n    ◆ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fagent-builder\">Agent Builder\u003C\u002Fa>\n    ◆ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Fmcp-server\">MCP Server\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\nStrands Agents is a simple yet powerful SDK that takes a model-driven approach to building and running AI agents. From simple conversational assistants to complex autonomous workflows, from local development to production deployment, Strands Agents scales with your needs.\n\n## Feature Overview\n\n- **Lightweight & Flexible**: Simple agent loop that just works and is fully customizable\n- **Model Agnostic**: Support for Amazon Bedrock, Anthropic, Gemini, LiteLLM, Llama, Ollama, OpenAI, Writer, and custom providers\n- **Advanced Capabilities**: Multi-agent systems, autonomous agents, and streaming support\n- **Built-in MCP**: Native support for Model Context Protocol (MCP) servers, enabling access to thousands of pre-built tools\n\n## Quick Start\n\n```bash\n# Install Strands Agents\npip install strands-agents strands-agents-tools\n```\n\n```python\nfrom strands import Agent\nfrom strands_tools import calculator\nagent = Agent(tools=[calculator])\nagent(\"What is the square root of 1764\")\n```\n\n> **Note**: For the default Amazon Bedrock model provider, you'll need AWS credentials configured and model access enabled for Claude 4 Sonnet in the us-west-2 region. See the [Quickstart Guide](https:\u002F\u002Fstrandsagents.com\u002F) for details on configuring other model providers.\n\n## Installation\n\nEnsure you have Python 3.10+ installed, then:\n\n```bash\n# Create and activate virtual environment\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate  # On Windows use: .venv\\Scripts\\activate\n\n# Install Strands and tools\npip install strands-agents strands-agents-tools\n```\n\n## Features at a Glance\n\n### Python-Based Tools\n\nEasily build tools using Python decorators:\n\n```python\nfrom strands import Agent, tool\n\n@tool\ndef word_count(text: str) -> int:\n    \"\"\"Count words in text.\n\n    This docstring is used by the LLM to understand the tool's purpose.\n    \"\"\"\n    return len(text.split())\n\nagent = Agent(tools=[word_count])\nresponse = agent(\"How many words are in this sentence?\")\n```\n\n**Hot Reloading from Directory:**\nEnable automatic tool loading and reloading from the `.\u002Ftools\u002F` directory:\n\n```python\nfrom strands import Agent\n\n# Agent will watch .\u002Ftools\u002F directory for changes\nagent = Agent(load_tools_from_directory=True)\nresponse = agent(\"Use any tools you find in the tools directory\")\n```\n\n### MCP Support\n\nSeamlessly integrate Model Context Protocol (MCP) servers:\n\n```python\nfrom strands import Agent\nfrom strands.tools.mcp import MCPClient\nfrom mcp import stdio_client, StdioServerParameters\n\naws_docs_client = MCPClient(\n    lambda: stdio_client(StdioServerParameters(command=\"uvx\", args=[\"awslabs.aws-documentation-mcp-server@latest\"]))\n)\n\nwith aws_docs_client:\n   agent = Agent(tools=aws_docs_client.list_tools_sync())\n   response = agent(\"Tell me about Amazon Bedrock and how to use it with Python\")\n```\n\n### Multiple Model Providers\n\nSupport for various model providers:\n\n```python\nfrom strands import Agent\nfrom strands.models import BedrockModel\nfrom strands.models.ollama import OllamaModel\nfrom strands.models.llamaapi import LlamaAPIModel\nfrom strands.models.gemini import GeminiModel\nfrom strands.models.llamacpp import LlamaCppModel\n\n# Bedrock\nbedrock_model = BedrockModel(\n  model_id=\"us.amazon.nova-pro-v1:0\",\n  temperature=0.3,\n  streaming=True, # Enable\u002Fdisable streaming\n)\nagent = Agent(model=bedrock_model)\nagent(\"Tell me about Agentic AI\")\n\n# Google Gemini\ngemini_model = GeminiModel(\n  client_args={\n    \"api_key\": \"your_gemini_api_key\",\n  },\n  model_id=\"gemini-2.5-flash\",\n  params={\"temperature\": 0.7}\n)\nagent = Agent(model=gemini_model)\nagent(\"Tell me about Agentic AI\")\n\n# Ollama\nollama_model = OllamaModel(\n  host=\"http:\u002F\u002Flocalhost:11434\",\n  model_id=\"llama3\"\n)\nagent = Agent(model=ollama_model)\nagent(\"Tell me about Agentic AI\")\n\n# Llama API\nllama_model = LlamaAPIModel(\n    model_id=\"Llama-4-Maverick-17B-128E-Instruct-FP8\",\n)\nagent = Agent(model=llama_model)\nresponse = agent(\"Tell me about Agentic AI\")\n```\n\nBuilt-in providers:\n - [Amazon Bedrock](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Famazon-bedrock\u002F)\n - [Anthropic](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fanthropic\u002F)\n - [Gemini](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fgemini\u002F)\n - [Cohere](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fcohere\u002F)\n - [LiteLLM](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Flitellm\u002F)\n - [llama.cpp](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fllamacpp\u002F)\n - [LlamaAPI](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fllamaapi\u002F)\n - [MistralAI](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fmistral\u002F)\n - [Ollama](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Follama\u002F)\n - [OpenAI](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fopenai\u002F)\n - [OpenAI Responses API](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fopenai\u002F)\n - [SageMaker](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fsagemaker\u002F)\n - [Writer](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fwriter\u002F)\n\nCustom providers can be implemented using [Custom Providers](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fmodel-providers\u002Fcustom_model_provider\u002F)\n\n### Example tools\n\nStrands offers an optional strands-agents-tools package with pre-built tools for quick experimentation:\n\n```python\nfrom strands import Agent\nfrom strands_tools import calculator\nagent = Agent(tools=[calculator])\nagent(\"What is the square root of 1764\")\n```\n\nIt's also available on GitHub via [strands-agents\u002Ftools](https:\u002F\u002Fgithub.com\u002Fstrands-agents\u002Ftools).\n\n### Bidirectional Streaming\n\n> **⚠️ Experimental Feature**: Bidirectional streaming is currently in experimental status. APIs may change in future releases as we refine the feature based on user feedback and evolving model capabilities.\n\nBuild real-time voice and audio conversations with persistent streaming connections. Unlike traditional request-response patterns, bidirectional streaming maintains long-running conversations where users can interrupt, provide continuous input, and receive real-time audio responses. Get started with your first BidiAgent by following the [Quickstart](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fbidirectional-streaming\u002Fquickstart\u002F) guide. \n\n**Supported Model Providers:**\n- Amazon Nova Sonic (v1, v2)\n- Google Gemini Live\n- OpenAI Realtime API\n\n**Installation:**\n\n```bash\n# Server-side only (no audio I\u002FO dependencies)\npip install strands-agents[bidi]\n\n# With audio I\u002FO support (includes PyAudio dependency)\npip install strands-agents[bidi,bidi-io]\n```\n\n**Quick Example:**\n\n```python\nimport asyncio\nfrom strands.experimental.bidi import BidiAgent\nfrom strands.experimental.bidi.models import BidiNovaSonicModel\nfrom strands.experimental.bidi.io import BidiAudioIO, BidiTextIO\nfrom strands.experimental.bidi.tools import stop_conversation\nfrom strands_tools import calculator\n\nasync def main():\n    # Create bidirectional agent with Nova Sonic v2\n    model = BidiNovaSonicModel()\n    agent = BidiAgent(model=model, tools=[calculator, stop_conversation])\n\n    # Setup audio and text I\u002FO (requires bidi-io extra)\n    audio_io = BidiAudioIO()\n    text_io = BidiTextIO()\n\n    # Run with real-time audio streaming\n    # Say \"stop conversation\" to gracefully end the conversation\n    await agent.run(\n        inputs=[audio_io.input()],\n        outputs=[audio_io.output(), text_io.output()]\n    )\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n> **Note**: `BidiAudioIO` and `BidiTextIO` require the `bidi-io` extra. For server-side deployments where audio I\u002FO is handled by clients (browsers, mobile apps), install only `strands-agents[bidi]` and implement custom input\u002Foutput handlers using the `BidiInput` and `BidiOutput` protocols.\n\n**Configuration Options:**\n\n```python\nfrom strands.experimental.bidi.models import BidiNovaSonicModel\n\n# Configure audio settings and turn detection (v2 only)\nmodel = BidiNovaSonicModel(\n    provider_config={\n        \"audio\": {\n            \"input_rate\": 16000,\n            \"output_rate\": 16000,\n            \"voice\": \"matthew\"\n        },\n        \"turn_detection\": {\n            \"endpointingSensitivity\": \"MEDIUM\"  # HIGH, MEDIUM, or LOW\n        },\n        \"inference\": {\n            \"max_tokens\": 2048,\n            \"temperature\": 0.7\n        }\n    }\n)\n\n# Configure I\u002FO devices\naudio_io = BidiAudioIO(\n    input_device_index=0,  # Specific microphone\n    output_device_index=1,  # Specific speaker\n    input_buffer_size=10,\n    output_buffer_size=10\n)\n\n# Text input mode (type messages instead of speaking)\ntext_io = BidiTextIO()\nawait agent.run(\n    inputs=[text_io.input()],  # Use text input\n    outputs=[audio_io.output(), text_io.output()]\n)\n\n# Multi-modal: Both audio and text input\nawait agent.run(\n    inputs=[audio_io.input(), text_io.input()],  # Speak OR type\n    outputs=[audio_io.output(), text_io.output()]\n)\n```\n\n## Documentation\n\nFor detailed guidance & examples, explore our documentation:\n\n- [User Guide](https:\u002F\u002Fstrandsagents.com\u002F)\n- [Quick Start Guide](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fquickstart\u002F)\n- [Agent Loop](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fconcepts\u002Fagents\u002Fagent-loop\u002F)\n- [Examples](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fexamples\u002F)\n- [API Reference](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fapi\u002Fpython\u002Fstrands.agent.agent\u002F)\n- [Production & Deployment Guide](https:\u002F\u002Fstrandsagents.com\u002Fdocs\u002Fuser-guide\u002Fdeploy\u002Foperating-agents-in-production\u002F)\n\n## Contributing ❤️\n\nWe welcome contributions! See our [Contributing Guide](CONTRIBUTING.md) for details on:\n- Reporting bugs & features\n- Development setup\n- Contributing via Pull Requests\n- Code of Conduct\n- Reporting of security issues\n\n## Stay in touch with the team\nCome meet the Strands team and other users on [**Discord**](https:\u002F\u002Fdiscord.com\u002Finvite\u002Fstrands)\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.\n\n","Strands Agents 是一个用于构建和运行AI代理的SDK，采用模型驱动的方法，只需几行代码即可实现从简单的对话助手到复杂的自主工作流。其核心功能包括轻量级且灵活的代理循环、支持多种模型提供商（如Amazon Bedrock、Anthropic等）、多代理系统及自主代理支持，并内置了Model Context Protocol (MCP)服务器，可访问数千种预构建工具。适用于需要快速开发和部署AI解决方案的场景，无论是本地开发还是生产环境部署都能满足需求。",2,"2026-06-01 03:31:42","high_star"]