|
43 | 43 | </details> |
44 | 44 | </div> |
45 | 45 |
|
46 | | -This repository contains code samples and demos which use the [Agent2Agent (A2A) Protocol](https://goo.gle/a2a). |
| 46 | +Welcome to the official code samples and demonstrations for the [Agent2Agent (A2A) Protocol](https://goo.gle/a2a). |
47 | 47 |
|
48 | | -## Related Repositories |
| 48 | +We are thrilled to have you here! Whether you are exploring multi-agent architectures for the first time or building advanced interoperable agent networks, this repository provides simple, inspiring, and accessible learning resources to accelerate your development. |
| 49 | + |
| 50 | +## Why Agent2Agent? |
| 51 | + |
| 52 | +In a world of diverse AI frameworks and ecosystems, agents need a common language to communicate, collaborate, and delegate tasks securely. The A2A protocol establishes a standardized, open standard for multi-agent interoperability. |
| 53 | + |
| 54 | +Our samples demonstrate how easily complex multi-agent problems can be solved across different languages and host applications. |
| 55 | + |
| 56 | +## Quick Start |
| 57 | + |
| 58 | +Get up and running immediately by launching a Helloworld agent and communicating with it via our Python CLI host. |
| 59 | + |
| 60 | +1. **Start the Agent Server**: |
| 61 | + Open a terminal and start the Helloworld agent server: |
| 62 | + |
| 63 | + ```bash |
| 64 | + cd samples/python/agents/helloworld |
| 65 | + uv run . |
| 66 | + ``` |
49 | 67 |
|
50 | | -- [A2A](https://github.com/a2aproject/A2A) - A2A Specification and documentation. |
51 | | -- [a2a-python](https://github.com/a2aproject/a2a-python) - A2A Python SDK. |
52 | | -- [a2a-inspector](https://github.com/a2aproject/a2a-inspector) - UI tool for inspecting A2A enabled agents. |
| 68 | +2. **Run the Host Client**: |
| 69 | + Open a second terminal and run the CLI client to send a task to the agent: |
| 70 | + |
| 71 | + ```bash |
| 72 | + cd samples/python/agents/helloworld |
| 73 | + uv run test_client.py |
| 74 | + ``` |
| 75 | + |
| 76 | +## Repository Structure |
| 77 | + |
| 78 | +The repository is organized into several key directories by language: |
| 79 | + |
| 80 | +| Directory | Description | |
| 81 | +| --- | --- | |
| 82 | +| [samples](/samples) | Core A2A samples organized by programming language. | |
| 83 | +| [samples/python](/samples/python) | Demonstrates Python agent implementations using the A2A Python SDK. | |
| 84 | +| [samples/go](/samples/go) | Demonstrates Go agent implementations using the A2A Go SDK. | |
| 85 | +| [samples/dotnet](/samples/dotnet) | Demonstrates C# agent implementations using the A2A .NET SDK. | |
| 86 | +| [samples/java](/samples/java) | Demonstrates Java agent implementations using the A2A Java SDK. | |
| 87 | +| [samples/js](/samples/js) | Demonstrates Node.js agent implementations using the A2A JavaScript SDK. | |
53 | 88 |
|
54 | 89 | ## Contributing |
55 | 90 |
|
56 | | -Contributions welcome! See the [Contributing Guide](CONTRIBUTING.md). |
| 91 | +We welcome and encourage contributions of all skill levels! If you have an idea for a new sample, a bug fix, or a documentation improvement, please check out our [Contributing Guide](CONTRIBUTING.md). |
57 | 92 |
|
58 | | -## Getting help |
| 93 | +## Getting Help |
59 | 94 |
|
60 | | -Please use the [issues page](https://github.com/a2aproject/a2a-samples/issues) to provide suggestions, feedback or submit a bug report. |
| 95 | +We are dedicated to providing a welcoming and supportive community. If you have questions, feedback, or run into any issues, please reach out on our [issues page](https://github.com/a2aproject/a2a-samples/issues). |
61 | 96 |
|
62 | | -## Disclaimer |
| 97 | +## Related Repositories |
63 | 98 |
|
64 | | -This repository itself is not an officially supported Google product. The code in this repository is for demonstrative purposes only. |
| 99 | +| Repository | Category | Description | |
| 100 | +| --- | --- | --- | |
| 101 | +| [A2A](https://github.com/a2aproject/A2A) | Core Specification | A2A Specification and documentation. | |
| 102 | +| [a2a-inspector](https://github.com/a2aproject/a2a-inspector) | Tooling | UI tool for inspecting A2A enabled agents. | |
| 103 | +| [a2a-tck](https://github.com/a2aproject/a2a-tck) | Testing | Test suite for validating A2A Protocol compliance. | |
| 104 | +| [a2a-itk](https://github.com/a2aproject/a2a-itk) | Testing | Toolkit to verify compatibility across different A2A SDK implementations and versions using multi-hop traversal model and varied transport protocols. | |
| 105 | +| [a2a-python](https://github.com/a2aproject/a2a-python) | SDK (Python) | Official Python SDK for A2A. | |
| 106 | +| [a2a-go](https://github.com/a2aproject/a2a-go) | SDK (Go) | Official Go SDK for A2A. | |
| 107 | +| [a2a-java](https://github.com/a2aproject/a2a-java) | SDK (Java) | Official Java SDK for A2A. | |
| 108 | +| [a2a-js](https://github.com/a2aproject/a2a-js) | SDK (JavaScript) | Official Node.js/JavaScript SDK for A2A. | |
| 109 | +| [a2a-dotnet](https://github.com/a2aproject/a2a-dotnet) | SDK (C#/.NET) | Official C#/.NET SDK for A2A. | |
| 110 | +| [a2a-rs](https://github.com/a2aproject/a2a-rs) | SDK (Rust) | Official Rust SDK for A2A. | |
| 111 | + |
| 112 | +## Disclaimer |
65 | 113 |
|
66 | | -Important: The sample code provided is for demonstration purposes and illustrates the mechanics of the Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent operating outside of your direct control as a potentially untrusted entity. |
| 114 | +**Important:** The sample code provided is for demonstration purposes and illustrates the mechanics of the |
| 115 | +Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent |
| 116 | +operating outside of your direct control as a potentially untrusted entity. |
67 | 117 |
|
68 | | -All data received from an external agent—including but not limited to its AgentCard, messages, artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent could provide an AgentCard containing crafted data in its fields (e.g., description, name, skills.description). If this data is used without sanitization to construct prompts for a Large Language Model (LLM), it could expose your application to prompt injection attacks. Failure to properly validate and sanitize this data before use can introduce security vulnerabilities into your application. |
| 118 | +All data received from an external agent—including but not limited to its AgentCard, messages, |
| 119 | +artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent |
| 120 | +could provide an AgentCard containing crafted data in its fields (e.g., description, name, |
| 121 | +skills.description). If this data is used without sanitization to construct prompts for a Large |
| 122 | +Language Model (LLM), it could expose your application to prompt injection attacks. Failure to |
| 123 | +properly validate and sanitize this data before use can introduce security vulnerabilities into |
| 124 | +your application. |
69 | 125 |
|
70 | | -Developers are responsible for implementing appropriate security measures, such as input validation and secure handling of credentials to protect their systems and users. |
| 126 | +> Developers are responsible for implementing appropriate security measures, such as input validation |
| 127 | +> and secure handling of credentials to protect their systems and users. |
0 commit comments