a2aproject/a2a-go

Golang SDK for A2A Protocol

What is A2A Go SDK?

A2A Go SDK는 Go 라이브러리로, 에이전트 간(Agent-to-Agent, A2A) 프로토콜 v1.0 을 사용하는 에이전트 서비스 를 구축하고 사용할 수 있게 해줍니다. 실제로는 에이전트 는 요청(예: 사용자 메시지)을 받고, 일반적으로 LLM 또는 기타 AI 모델을 통해 로직을 실행한 후 응답을 반환하는 소프트웨어의 일부입니다. SDK는 네트워킹, 메시지 포맷팅, 프로토콜 준수를 자동으로 처리하므로, 에이전트의 핵심 로직에만 집중할 수 있습니다.


Core Components

Component What it does Typical use
a2asrv (Server SDK) 트랜스포트에 의존하지 않는 요청 핸들러 를 생성하고 gRPC, REST, 또는 JSON-RPC용으로 래핑합니다. 다른 에이전트가 호출할 수 있는 AI 기반 에이전트 서비스로 배포합니다.
a2aclient (Client SDK) AgentCard (에이전트에 접근하는 방법을 설명하는 메타데이터) 를 해결하고 메시지를 보낼 수 있는 클라이언트를 생성합니다. Go 프로그램이나 CLI 도구에서 다른 에이전트를 호출합니다.
Transport bindings (a2agrpc, a2asrv.NewRESTHandler, etc.) 일반 핸들러를 구체적인 네트워크 서버/클라이언트로 변환합니다. 환경에 맞는 프로토콜을 선택할 수 있습니다 (고성능 gRPC, 간단한 HTTP 등).
Extension points 사용자 정의 트랜스포트, 인증 미들웨어, 메시지 저장소 등을 플러그인 가능합니다. 기존 인증 시스템, 데이터베이스, 또는 사용자 정의 네트워크 계층과 통합합니다.

Getting Started (Step-by-step)

  1. Install the SDK

    go get github.com/a2aproject/a2a-go/v2
    

    Go 1.25+ 필요.

  2. Write a server

    // 에이전트 로직을 실행할 수 있는 자체 실행기 생성.
    agentExec := newMyAgentExecutor()
    handler   := a2asrv.NewHandler(agentExec)
    
    // 트랜스포트 선택 – 여기서는 gRPC.
    grpcHandler := a2agrpc.NewHandler(handler)
    srv := grpc.NewServer()
    grpcHandler.RegisterWith(srv)
    srv.Serve(lis) // lis 는 net.Listener
    

    newMyAgentExecutor 는 LLM 호출, 스크립트 실행 등의 코드로 대체하세요.

  3. Write a client

    card, _ := agentcard.DefaultResolver.Resolve(ctx) // 원격 에이전트 탐지
    client, _ := a2aclient.NewFromCard(ctx, card)
    msg := a2a.NewMessage(a2a.MessageRoleUser, a2a.NewTextPart("Hello!"))
    resp, _ := client.SendMessage(ctx, &a2a.SendMessageRequest{Message: msg})
    fmt.Println(resp)
    
  4. Run the example 리포지토리는 양방향을 보여주는 최소한의 examples/helloworld 를 포함하고 있습니다.


Why Use A2A?

  • 표준화된 통신 – A2A 사양을 따르면, 다른 언어의 에이전트도 커스텀 어댑터 없이 상호작용 가능합니다.
  • 트랜스포트 유연성 – 동일한 비즈니스 로직을 gRPC, 일반 HTTP, 또는 JSON-RPC로 몇 줄의 연결 코드만으로 노출할 수 있습니다.
  • 플러그인 아키텍처 – 코어를 다시 작성하지 않고도 사용자 정의 인증, 저장소, 트랜스포트 계층을 교체할 수 있습니다.
  • CLI 보조 도구 – 별도의 a2a-cli 도구를 사용하면 Go 코드를 작성하지 않고도 에이전트를 테스트하거나 탐지하거나 로컬 스크립트를 A2A 엔드포인트로 노출할 수 있습니다.

Ecosystem & Resources

  • Documentation – 전체 API 참조는 https://pkg.go.dev/github.com/a2aproject/a2a-go/v2 에 있습니다.
  • CLI tool – a2a-cli (리포지토리: a2aproject/a2a-cli) 는 빠른 실험에 적합합니다.
  • Sample projects – 더 복잡한 사용 사례는 a2aproject/a2a-samples 에 있습니다.
  • Specification – 프로토콜 정의는 https://a2a-protocol.org 에 공개되어 있습니다.
  • Contribution – 가이드라인은 CONTRIBUTING.md 에 있으며, 대규모 변경 전에 이슈를 열어주세요.

TL;DR

A2A Go SDK는 공통되고 버전 관리된 프로토콜을 사용하는 AI 중심 에이전트 서비스 를 구축하기 위한 프로덕션 준비 완료 라이브러리입니다. gRPC/REST/JSON-RPC 등의 네트워킹을 추상화하고, 준비된 클라이언트 및 서버 도우미를 제공하며, 사용자 정의 인증 또는 저장소 요구 사항에 대해 확장 가능합니다. LLM 기반 에이전트를 표준 준수 방식으로 노출 또는 사용해야 하는 Go 코드를 작성 중이라면, 이 SDK는 뼈대 코드를 제공하여 모델 로직 자체에 집중할 수 있도록 도와줍니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트