Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Building AI Agents with Agent Develeopment Kit ...

Building AI Agents with Agent Develeopment Kit Go @DevFest Cloud x Seoul 2025

DevFest Cloud x Seoul 2025
2025-11-30
Building AI Agents with Agent Develeopment Kit Go
박제창, jaichangpark

Avatar for JaiChangPark

JaiChangPark

November 30, 2025
Tweet

More Decks by JaiChangPark

Other Decks in Programming

Transcript

  1. Cloud x Seoul 박제창 GDE Dart-Flutter GDG Golang Korea, Flutter

    Seoul Building AI Agents with Agent Develeopment Kit Go 2025
  2. Agents 개발 프레임워크 • LangChain, LangGraph • OpenAI Agents SDK

    • Claude Agent SDK • Agent Development Kit • etc…
  3. Agent Development Kit Agent Development Kit (ADK)는 AI 에이전트 개발

    및 배포를 위한 유연한 모듈식 프레임워크입니다. Gemini 및 Google 생태계에 최적화되어 있지만, ADK는 모델에 구애받지 않고(model-agnostic), 배포 환경에 제약이 없으며 (deployment-agnostic), 다른 프레임워크와의 호환성을 위해 구축되었습니다. ADK는 에이전트 개발이 일반적인 소프트웨어 개발처럼 느껴지도록 설계되었으며, 개발자가 간단한 작업부터 복잡한 워크플로에 이르는 에이전트 아키텍처를 쉽게 생성, 배포 및 오케스트레이션할 수 있도록 지원합니다.
  4. Hands-on: Process Chart Structured Output 만들기 도구(Tools)를 활용한 검색 에이전트

    만들기 커스텀 도구 (Custom Tools) 만들기 첫 번째 AI 에이전트 만들기 Router Agent Memory & Runner A2A(Agent-to- Agent) Parallel & Sequential Multi-Agents
  5. rootAgent, err := llmagent.New(llmagent.Config{ Name: "root_agent", Model: model, Description: "A

    helpful agent.", Instruction: "You are a helpful assistant. Answer the user's questions.", })
  6. config := &launcher.Config{ AgentLoader: agent.NewSingleLoader(rootAgent), } // Package full provides

    easy way to play with ADK with all available options l := full.NewLauncher() if err = l.Execute(ctx, config, os.Args[1:]); err != nil { log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax()) }
  7. type getWeatherArgs struct { City string `json:"city" jsonschema:"The city to

    get weather for."` } func getWeather(ctx tool.Context, args getWeatherArgs) (string, error) { fmt.Printf("[Tool] Getting weather for %s...\n", args.City) return fmt.Sprintf("The weather in %s is Sunny, 25°C", args.City), nil }
  8. outputSchema := &genai.Schema{ Type: genai.TypeObject, Properties: map[string]*genai.Schema{ "summary": {Type: genai.TypeString},

    "action_items": {Type: genai.TypeArray, Items: &genai.Schema{Type: genai.TypeString}}, }, } https://ai.google.dev/gemini-api/docs/structured-output?example=recip e#go_2
  9. routerAgent, err := llmagent.New(llmagent.Config{ Name: "root_agent", Model: model, Description: "A

    helpful agent. Uses a router to route the user questions.", Instruction: "You are a helpful assistant. Answer the user's questions.", OutputSchema: outputSchema, })
  10. restaurantScout, _ := llmagent.New(llmagent.Config{ Name: "RestaurantScout", Model: model, // 변경:

    입력에서 도시를 추출하도록 명시 Instruction: `You are a Restaurant Scout. The user's request will contain a destination city (e.g., "Plan a trip to Tokyo"). 1. Extract the city name from the request. 2. IMMEDIATELY use Google Search to find the top 3 restaurants in that city. 3. Output ONLY a brief list of the restaurants found. Do not ask for clarification.`, Tools: []tool.Tool{geminitool.GoogleSearch{}}, OutputKey: "restaurant_list", })
  11. activityScout, _ := llmagent.New(llmagent.Config{ Name: "ActivityScout", Model: model, // 변경:

    입력에서 도시를 추출하도록 명시 Instruction: `You are an Activity Scout. The user's request will contain a destination city (e.g., "Plan a trip to Tokyo"). 1. Extract the city name from the request. 2. IMMEDIATELY use Google Search to find the top 3 tourist activities in that city. 3. Output ONLY a brief list of the activities found. Do not ask for clarification.`, Tools: []tool.Tool{geminitool.GoogleSearch{}}, OutputKey: "activity_list", })
  12. // 3. Parallel Runner scouts, _ := parallelagent.New(parallelagent.Config{ AgentConfig: agent.Config{

    Name: "CityScouts", Description: "Scouts for restaurants and activities in parallel.", SubAgents: []agent.Agent{restaurantScout, activityScout}, }, })
  13. planner, _ := llmagent.New(llmagent.Config{ Name: "ItineraryPlanner", Model: model, Instruction: `You

    are a travel planner. Create a one-day itinerary based on the following research: Restaurants: {restaurant_list} Activities: {activity_list} Combine them into a logical schedule.`, })
  14. // 5. Sequential Pipeline tripPlanner, _ := sequentialagent.New(sequentialagent.Config{ AgentConfig: agent.Config{

    Name: "TripPlannerPipeline", Description: "Executes scouting and then planning.", SubAgents: []agent.Agent{scouts, planner}, }, })