인공지능

버그 티켓 관리, AI가 대신해준다면? - ADK로 직접 만드는 AI 디버깅 에이전트 완전 가이드

파파누보 2025. 7. 4. 12:18
728x90
반응형

프로젝트가 커질수록 늘어나는 고객 문의, 알 수 없는 에러 메시지, 복잡한 의존성 문제들.
하루에도 수십 개씩 쏟아지는 버그 리포트와 티켓을 보며 "이걸 좀 더 자동화할 수는 없을까?" 하는 생각, 해보신 적 있을 겁니다.

여기, 진짜로 그 일을 도와줄 수 있는 AI 도우미가 있습니다.
바로 ADK(Agent Development Kit)를 이용한 AI 디버깅 에이전트입니다.

이 글에서는 단순한 소개를 넘어,
ADK의 기본 구조부터 실제 구축 방법, 그리고 외부 도구와의 연동 방식까지 상세하게 설명합니다.
당신이 직접 실무에서 사용할 수 있는 지능형 티켓 관리 시스템을 구현할 수 있도록 돕는 것이 이 글의 목적입니다.

반응형

AI Agent란 무엇인가?

기존의 자동화 시스템은 주로 정해진 규칙(rule)만을 따릅니다.
하지만 AI 에이전트는 다릅니다.
LLM 기반의 추론 능력을 바탕으로 상황을 이해하고, 그에 따라 외부 도구를 호출하거나 직접 행동을 취할 수 있습니다.

즉, 사용자가 문제 상황을 설명하면, 에이전트는 그 문제를 분석하고, 적절한 도구를 선택하여 실제 해결 절차를 실행합니다.


ADK: AI 에이전트를 구현하는 프레임워크

ADK는 Google이 제공하는 오픈 프레임워크로, 다양한 종류의 도구(tool)를 조합하여 자신만의 AI 에이전트를 만들 수 있게 해줍니다.
ADK의 가장 큰 특징은 다음과 같습니다.

  • 다양한 도구 유형을 기본적으로 지원
  • LLM 기반 추론과 외부 연동을 통합
  • Google Cloud, LangChain, GitHub 등과 손쉽게 연동 가능

에이전트에 연결 가능한 도구 유형 정리

1. Function Tool (함수 도구)

기본적인 파이썬 함수 하나로도 도구를 만들 수 있습니다.
예: 현재 날짜를 반환하는 도구

def get_current_date() -> dict:
    return {"current_date": datetime.now().strftime("%Y-%m-%d")}

티켓 요청 시점, 혹은 "최근 일주일 이내 티켓" 등의 조건에 활용됩니다.


2. Built-in Tool (Google Search 등 내장 도구)

Google Search를 도구로 연결해, 버그에 대한 웹 검색 결과를 AI가 직접 받아볼 수 있습니다.
검색 전용 에이전트를 따로 구성한 뒤, 이 에이전트를 하나의 도구로 불러오는 방식입니다.

from google.adk.tools import google_search
search_agent = Agent(
    model="gemini-2.5-flash",
    name="search_agent",
    tools=[google_search],
)

3. Third-party API Tool (LangChain 연동)

StackOverflow의 질문/답변 API를 통해, 관련 버그나 해결 사례를 직접 AI가 검색하게 할 수 있습니다.

from langchain_community.tools import StackExchangeTool
stack_exchange_tool = StackExchangeTool(api_wrapper=StackExchangeAPIWrapper())

LangChain을 활용하면 수많은 외부 API를 손쉽게 연결할 수 있습니다.


4. MCP Tool (API 연동용 도구)

Anthropic이 발표한 MCP(Model Context Protocol)는 API 연동을 위한 표준 프로토콜입니다.
GitHub와 같은 외부 플랫폼이 이 MCP를 활용해, AI 에이전트가 다양한 기능(API)을 쉽게 사용할 수 있도록 했습니다.

mcp_tools = MCPToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://api.githubcopilot.com/mcp/",
        headers={
            "Authorization": "Bearer " + os.getenv("GITHUB_PERSONAL_ACCESS_TOKEN"),
        },
    ),
    tool_filter=["search_issues", "get_issue"],
)

이 구조를 사용하면, 민감한 기능은 차단하면서 필요한 기능만 선택적으로 노출할 수 있습니다.


5. MCP Tool (Database 연동용 도구)

내부 버그 티켓 데이터베이스(PostgreSQL)를 직접 연결할 수 있습니다.
검색, 생성, 수정 기능을 SQL 쿼리로 작성하고 YAML 파일로 정의하면, 이를 MCP Toolbox 서버가 도구로 노출합니다.

tools:
  search-tickets:
    kind: postgres-sql
    source: postgresql
    statement: |
      SELECT * FROM tickets
      WHERE description ILIKE '%' || $1 || '%'
      LIMIT 3;

Toolbox MCP 서버를 실행하면, AI는 이 도구를 사용해 내부 티켓 DB를 실시간으로 검색하거나 수정할 수 있습니다.


실전 예제: QuantumRoast Bug Assistant 만들기

가상의 커피 머신 회사 QuantumRoast에서는 내부적으로 다음과 같은 구조의 에이전트를 구축했습니다.

  • Google Gemini 2.5 Flash 모델 기반 에이전트
  • Function Tool로 날짜 확인
  • Built-in Tool로 웹 검색
  • StackOverflow Tool로 외부 질문 검색
  • GitHub MCP Tool로 오픈소스 이슈 추적
  • 내부 PostgreSQL DB MCP Tool로 티켓 검색 및 관리

전체 구성 예시는 다음과 같습니다.

root_agent = Agent(
    model="gemini-2.5-flash",
    name="software_bug_assistant",
    instruction=agent_instruction,
    tools=[get_current_date, search_tool, langchain_tool, *toolbox_tools, mcp_tools],
)

에이전트는 다음과 같은 절차를 따릅니다.

  1. 사용자 요청 이해
  2. 적절한 도구 선택
  3. 도구 호출 및 결과 해석
  4. 필요 시 후속 작업 수행

728x90

ADK 에이전트의 가능성과 시사점

이제 더 이상 티켓을 일일이 복사해서 검색하고, 수동으로 분류하지 않아도 됩니다.
AI 에이전트를 직접 구축하면 반복되는 티켓 분류, 문제 검색, 유사 이슈 분석 등을 자동화할 수 있습니다.

ADK의 장점은 명확합니다.

  • 다양한 도구와 유연하게 연결 가능
  • 코드와 추론을 모두 이해하는 AI
  • 내외부 시스템을 통합하는 자동화 허브

지금 당장은 실험용으로 시작하더라도, 장기적으로는 조직 내 전문 AI 도우미로 확장할 수 있는 잠재력을 갖고 있습니다.

버그로 인해 시간을 허비하는 대신,
이제는 문제를 스스로 해결할 줄 아는 AI에게 일을 맡겨보세요.

https://cloud.google.com/blog/topics/developers-practitioners/tools-make-an-agent-from-zero-to-assistant-with-adk?fbclid=IwY2xjawLUD8VleHRuA2FlbQIxMQBicmlkETFmS1dSdVJkc2padVVNOTJmAR6U4W2pMEA8J1fPlr4O937h-HQourzx_XuoXgGcUQxkSEO-SquBwT2UbIjHtg_aem_IyKBrv1dA6Jpz4JbqR5yYA&hl=en

 

Tools Make an Agent: From Zero to Assistant with ADK | Google Cloud Blog

from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams mcp_tools = MCPToolset( connection_params=StreamableHTTPConnectionParams( url="https://api.githubcopilot.com/mcp/", headers={ "Authorization": "Bearer " + os.getenv("GITHUB_PE

cloud.google.com

 

728x90
반응형