Vibe Coding AI Agent: การจัดการวงจรของ Agent ด้วย Agents CLI และ ADK 2.0

1. ภาพรวม

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ Agents CLI เพื่อควบคุมวงจรการพัฒนา AI Agent ในเครื่องทั้งหมด ไม่ว่าคุณจะใช้โมเดล Gemini ที่มีอยู่หรือสร้าง Agent ที่กำหนดเองตั้งแต่เริ่มต้นด้วย Agent Development Kit (ADK 2.0) Agents CLI ก็มีเครื่องมือในการสร้างโครงสร้างพื้นฐาน สร้าง ตรวจสอบโค้ด และทดสอบ Agent ในเครื่อง

สิ่งที่คุณจะได้เรียนรู้

  • วิธีติดตั้งและตั้งค่า agents-cli และทักษะที่เกี่ยวข้อง
  • วิธีสร้างโครงสร้างพื้นฐานของโปรเจ็กต์ Agent ใหม่
  • โครงสร้างและไฟล์สำคัญของโปรเจ็กต์ Agent เวิร์กโฟลว์กราฟ ADK 2.0
  • วิธีเรียกใช้การตรวจสอบโค้ดอัตโนมัติและการล้างโค้ด
  • วิธีเปิดและใช้เว็บเพลย์กราวด์ในเครื่องเพื่อการทดสอบแบบอินเทอร์แอกทีฟด้วยการโหลดซ้ำอัตโนมัติ

สิ่งที่ต้องมี

  • Python 3.11 ขึ้นไป
  • uv
  • Node.js 18 ขึ้นไป (หากใช้ทักษะ Agent ในการเขียนโค้ด)
  • Antigravity IDE (ติดตั้งและกำหนดค่าจาก Google Antigravity)

ข้อกำหนดเบื้องต้น

Codelab นี้ถือว่าคุณคุ้นเคยกับสิ่งต่อไปนี้

  • การใช้เทอร์มินัลและบรรทัดคำสั่ง

ไม่จำเป็นต้องมีประสบการณ์เกี่ยวกับ AI Agent หรือ ADK 2.0 มาก่อน

2. ตั้งค่าการตรวจสอบสิทธิ์และสภาพแวดล้อม

ระบุข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์เพื่อให้ Agent เรียกใช้โมเดล Gemini ได้

ตัวเลือกที่ 1: คีย์ Gemini API (Google AI Studio)

หากใช้คีย์ Gemini API มาตรฐาน (ซึ่งรับได้จาก Google AI Studio) ให้ส่งออกคีย์ดังกล่าวในเซสชันเทอร์มินัล IDE

export GEMINI_API_KEY="your_api_key_here"
export GOOGLE_GENAI_USE_ENTERPRISE=FALSE

ตัวเลือกที่ 2: ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google Cloud

หากใช้ Vertex AI ใน Google Cloud ให้ตรวจสอบสิทธิ์ด้วยข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google Cloud (ADC) และตั้งค่าโปรเจ็กต์ Google Cloud ที่ใช้งานอยู่

gcloud auth application-default login
gcloud config set project <YOUR_PROJECT_ID>
export GOOGLE_GENAI_USE_ENTERPRISE=TRUE
export GOOGLE_CLOUD_PROJECT=REPLACE-WITH-YOUR-PROJECT_ID # Replace with your project ID
export GOOGLE_CLOUD_LOCATION=REPLACE-WITH-LOCATION # Replace the location

3. ตั้งค่า Agents CLI และทักษะ

ขั้นตอนแรกคือการติดตั้งเครื่องมือ agents-cli เครื่องมือนี้จะจัดการงานที่ซับซ้อนในการจัดการโปรเจ็กต์ Agent

เมื่อติดตั้ง Antigravity แล้ว ให้เรียกใช้คำสั่งการตั้งค่าในเทอร์มินัลโดยตรง

👉 เปิดเทอร์มินัลแล้วเรียกใช้คำสั่งต่อไปนี้

uvx google-agents-cli setup

คำสั่งนี้จะติดตั้งสิ่งต่อไปนี้โดยอัตโนมัติ

  1. เครื่องมือ Agents CLI ทั่วโลกในระบบ
  2. ทักษะ ผู้ช่วยเขียนโค้ดเฉพาะโดเมน 7 รายการที่ Antigravity ใช้เพื่อช่วยคุณสร้างโครงสร้างพื้นฐาน ประเมิน และติดตั้งใช้งาน Agent ระบบจะติดตั้งทักษะเหล่านี้เพียงครั้งเดียวทั่วโลกใน ~/.agents/skills/ และ Antigravity จะค้นพบทักษะเหล่านี้โดยอัตโนมัติ

หมายเหตุ: ระบบจะติดตั้งทักษะใน ~/.agents/skills/ และ Antigravity จะเลือกทักษะเหล่านี้โดยอัตโนมัติ คุณสามารถยืนยันได้โดยใช้คำสั่ง /skills หรือการตั้งค่า Antigravity

ผลลัพธ์ที่คาดไว้ (ตัดทอน)

█▀█ █▀▀ █▀▀ █▄  ▀█▀ █▀ █▀▀  █`
`█▀█ █▄█ ██▄  ▀█  ▄█ █▄▄ █▄ █`

`Your coding agent just got an upgrade.`

`1. Authentication`

`─────────────────`

`✓ Authenticated with Google Cloud`

`2. CLI Installation`

`───────────────────`

`▸ uv tool install google-agents-cli`

`✓ Installed google-agents-cli`

`3. Skills Installation`

`──────────────────────`

`▸ npx -y skills add https://github.com/google/agents-cli -y --all -g`

`◇ Found 7 skills`

`~/.agents/skills/google-agents-cli-adk-code`

`~/.agents/skills/google-agents-cli-deploy`

`~/.agents/skills/google-agents-cli-eval`

`~/.agents/skills/google-agents-cli-observability`

`~/.agents/skills/google-agents-cli-publish`

`~/.agents/skills/google-agents-cli-scaffold`

`~/.agents/skills/google-agents-cli-workflow`

4. สร้างโปรเจ็กต์ Agent

ในส่วนนี้ คุณจะได้สร้างไดเรกทอรีโปรเจ็กต์ที่มีโครงสร้างครบถ้วนโดยใช้เทมเพลตต้นแบบ

👉 แจ้ง Antigravity ดังนี้

Use ADK 2.0 to create a new graph workflow agent project called
customer-support-agent. I don't want to deploy this agent, so you can skip
the deployment files. The workflow should act as a customer support
representative for a shipping company. It should first classify if the user
query is related to shipping (rates, tracking, delivery, returns) or
unrelated. If it is related to shipping, route to a shipping FAQ agent to
answer the question. If it is unrelated, route to a node that politely
declines to answer.

Antigravity จะเรียกใช้คำสั่งการสร้างโครงสร้างพื้นฐาน (agents-cli scaffold create customer-support-agent --prototype --yes) โดยอัตโนมัติและตั้งค่าไฟล์โปรเจ็กต์ให้คุณ

5. สำรวจโค้ด Agent

👉 ขอให้ Antigravity อธิบายโค้ดที่สร้างขึ้น

Read and explain the project structure of my new agent project. Walk me
through how `app/agent.py` is configured, highlighting the role of the
tools, nodes, edges, and the root Workflow.

ใน Antigravity IDE ระบบจะแสดงไฟล์และอาร์ติแฟกต์โปรเจ็กต์ที่สร้างขึ้นใหม่ในบานหน้าต่างเสริม (ด้านซ้าย) โดยตรง คุณสามารถดู app/agent.py ในบานหน้าต่างดังกล่าว หรือเปิดจากโปรแกรมสำรวจไฟล์ IDE เพื่อสำรวจโค้ดที่สร้างโครงสร้างพื้นฐานไว้

# app/agent.py

from __future__ import annotations

from typing import Any, Literal

from google.adk.agents.context import Context
from google.adk.apps.app import App
from google.adk.events.event import Event
from google.adk.workflow import Edge
from google.adk.workflow import Workflow
from google.adk.workflow.agents.llm_agent import LlmAgent
from google.adk.workflow.node import node
from pydantic import BaseModel
from pydantic import Field


class InquiryCategory(BaseModel):
  category: Literal['shipping', 'unrelated'] = Field(
      description=(
          'Determine if the user query is related to shipping (rates, tracking,'
          ' delivery times, returns) or unrelated.'
      )
  )


def save_query(node_input: str):
  """Saves user query in state for downstream nodes."""
  yield Event(data=node_input, state={'user_query': node_input})


categorize_agent = LlmAgent(
    name='categorize',
    model='gemini-3.1-flash-lite',
    instruction='You are an expert classifier. Categorize the user query.',
    output_key='inquiry_category',
    output_schema=InquiryCategory,
)


@node
def route_inquiry(ctx: Context, node_input: Any):
  """Routes the workflow based on the classified category."""
  category_data = ctx.state.get('inquiry_category', {})
  category = category_data.get('category', 'unrelated')
  query = ctx.state.get('user_query', '')
  yield Event(data=query, route=category)


faq_agent = LlmAgent(
    name='shipping_faq',
    model='gemini-3.1-flash-lite'',
    instruction="""You are a customer support representative for a shipping company. Answer user questions based ONLY on the shipping FAQ below. Do not answer questions outside of the FAQ.
    
    SHIPPING FAQ:
    - Rates: Standard shipping is $5.99. Express shipping is $12.99. Orders
      over $50 qualify for free standard shipping.
    - Tracking: You can track your order by entering your tracking number on
      our website's tracking page.
    - Delivery Times: Standard delivery takes 3-5 business days. Express
      delivery takes 1-2 business days.
    - Returns: We offer free returns within 30 days of delivery. Please make
      sure the item is in its original condition.
    """,
)


@node
def handle_unrelated(ctx: Context, node_input: Any):
  """Handles unrelated inquiries politely."""
  yield Event(
      data=(
          'I am sorry, I am a shipping customer support assistant and can only'
          ' answer questions related to our shipping FAQ.'
      )
  )


root_agent = Workflow(
    name='customer_support_workflow',
    edges=[
        *Edge.chain('START', save_query, categorize_agent, route_inquiry),
        (route_inquiry, faq_agent, 'shipping'),
        (route_inquiry, handle_unrelated, 'unrelated'),
    ],
)

app = App(
    name='customer_support_agent',
    root_agent=root_agent,
)

หัวข้อสำคัญ

  • เวิร์กโฟลว์และ Edge: ใน ADK 2.0 ระบบจะจัดระเบียบแอปพลิเคชัน Agent เป็นกราฟโดยใช้ Workflow รายการ edges จะกำหนดโฟลว์การดำเนินการ โดยเชื่อมโยงโหนดต่างๆ เข้าด้วยกันจาก START และเปิดใช้การแยกสาขาแบบมีเงื่อนไขตามเส้นทาง (เช่น การกำหนดเส้นทางไปยัง faq_agent ใน "shipping" หรือ handle_unrelated ใน "unrelated")
  • LlmAgent: โหนดประกาศที่กำหนดงานที่ขับเคลื่อนด้วย LLM พร้อมคำแนะนำ โมเดล และเอาต์พุตที่มีโครงสร้าง (output_schema) ที่เฉพาะเจาะจง
  • โหนดและบริบท: ฟังก์ชัน Python ที่ตกแต่งด้วย @node (หรือฟังก์ชันมาตรฐาน) ซึ่งดำเนินการตรรกะ เข้าถึงสถานะการดำเนินการผ่าน Context และสร้างออบเจ็กต์ Event เพื่อส่งข้อมูลและสัญญาณการกำหนดเส้นทางไปตามกราฟ
  • โมเดล: ระบบจะใช้ `gemini-3.1-flash-lite' เป็นโมเดลการให้เหตุผลที่รวดเร็วเริ่มต้น
  • App Wrapper: ออบเจ็กต์ระดับบนสุด App จะรวมเวิร์กโฟลว์ราก เครื่องมือภายนอก เช่น เพลย์กราวด์ในเครื่อง ชุดเครื่องมือประเมิน ADK และ Agent Runtime จะค้นพบและเรียกใช้เวิร์กโฟลว์ของคุณผ่านอินเทอร์เฟซ app ที่ได้มาตรฐานนี้

6. การตรวจสอบโค้ดอัตโนมัติ

ก่อนที่จะเรียกใช้หรือทดสอบ Agent คุณควรตรวจสอบว่าโค้ดสะอาดและจัดรูปแบบอย่างถูกต้อง

👉 แจ้ง Antigravity ดังนี้

Run linting on my agent project to verify its health.

Antigravity จะเรียกใช้ agents-cli lint เบื้องหลังเพื่อเรียกใช้การตรวจสอบที่กำหนดค่าไว้ล่วงหน้า โดยจะตรวจสอบการนำเข้า ไวยากรณ์ และความสอดคล้องของการจัดรูปแบบในไฟล์

7. การทดสอบแบบอินเทอร์แอกทีฟด้วยเพลย์กราวด์

เว็บเพลย์กราวด์ในเครื่องเป็นวิธีที่เร็วที่สุดในการยืนยันลักษณะการทำงานของ Agent โดยมีอินเทอร์เฟซแชทแบบอินเทอร์แอกทีฟที่คุณสามารถแชทกับ Agent และตรวจสอบการดำเนินการเครื่องมือแบบเรียลไทม์ได้

👉 แจ้ง Antigravity ดังนี้

Launch the local development playground for my agent.

Antigravity จะเริ่มเซิร์ฟเวอร์การพัฒนาในเครื่อง (agents-cli playground) เปิด URL ที่ระบุ (โดยปกติคือ http://127.0.0.1:8080/dev-ui/?app=app) ในเว็บเบราว์เซอร์ เลือกโฟลเดอร์ app จากเมนูแบบเลื่อนลงเพื่อเริ่มแชทกับ Agent

เริ่มแชทกับ Agent ในอินเทอร์เฟซเว็บ ลองถามคำถามเกี่ยวกับการจัดส่ง

How much is standard shipping?

สังเกตว่าเวิร์กโฟลว์จัดหมวดหมู่และกำหนดเส้นทางไปยัง faq_agent เพื่อตอบคำถามได้สำเร็จ นอกจากนี้ ให้ลองถามคำถามที่ไม่เกี่ยวข้องเพื่อยืนยันว่าเวิร์กโฟลว์กำหนดเส้นทางไปยัง handle_unrelated และปฏิเสธที่จะตอบคำถามอย่างถูกต้อง

What is the weather like?

ทดสอบการโหลดซ้ำอัตโนมัติแบบเรียลไทม์

คุณจะเห็นว่าการแก้ไข Agent แบบเรียลไทม์แสดงในเพลย์กราวด์อย่างไร

  1. แก้ไขคำแนะนำ faq_agent ใน app/agent.py โดยขอให้ Antigravity ทำดังนี้
    Modify the faq_agent instruction in app/agent.py to make the shipping rates
    response more playful and enthusiastic. Add some emojis and highlight the
    free shipping threshold.
    
  2. ส่งข้อความใหม่ไปยัง Agent ในเพลย์กราวด์เพื่อทดสอบการโหลดซ้ำอัตโนมัติ
    How much is standard shipping?
    
    เพลย์กราวด์จะโหลดซ้ำและเรียกใช้โค้ดที่อัปเดตแบบเรียลไทม์โดยอัตโนมัติโดยไม่จำเป็นต้องรีสตาร์ทเซิร์ฟเวอร์ ตอนนี้คุณควรเห็นอีโมจิบางรายการในการตอบกลับ

8. การดำเนินการบรรทัดคำสั่ง

สำหรับการทดสอบอย่างรวดเร็ว การทำงานอัตโนมัติ หรือการเขียนสคริปต์ คุณสามารถขอให้ Antigravity เรียกใช้ Agent จากเทอร์มินัลโดยตรง

👉 แจ้ง Antigravity ดังนี้

Run a CLI query asking my agent how long standard delivery takes.

Antigravity จะเรียกใช้คำสั่งการค้นหา (agents-cli run "How long does standard delivery take?") ซึ่งจะเรียกใช้การอนุมานแบบครั้งเดียวอย่างรวดเร็วและพิมพ์การตอบกลับสุดท้ายของ Agent พร้อมรายละเอียดการดำเนินการเครื่องมือ

9. การทำความสะอาดข้อมูล

ทำตามขั้นตอนการล้างข้อมูลต่อไปนี้เพื่อหลีกเลี่ยงการทิ้งทรัพยากรที่ไม่ต้องการไว้ในสภาพแวดล้อมในเครื่อง

  1. หยุดเซิร์ฟเวอร์ในเครื่อง: หากเซิร์ฟเวอร์ agents-cli playground ยังคงทำงานอยู่ ให้หยุดเซิร์ฟเวอร์ในเทอร์มินัลโดยกด Ctrl + C
  2. นำไฟล์โปรเจ็กต์ในเครื่องออก: ลบไดเรกทอรีโปรเจ็กต์ Agent ที่สร้างโครงสร้างพื้นฐานไว้จากเครื่องในเครื่อง
rm -rf customer-support-agent

10. สรุปและขั้นตอนถัดไป

ยินดีด้วย คุณจัดการวงจรการพัฒนา AI Agent ในเครื่องแบบครบวงจรได้สำเร็จโดยใช้ Agents CLI และ ADK 2.0

สิ่งที่คุณได้เรียนรู้

  • ตั้งค่าเครื่องมือ: ติดตั้ง Agents CLI และกำหนดค่าทักษะเวิร์กโฟลว์เฉพาะโดเมนสำหรับ Antigravity
  • สร้างโครงสร้างพื้นฐานของโปรเจ็กต์: สร้างโปรเจ็กต์ที่มีโครงสร้างครบถ้วนโดยใช้เทมเพลตที่ได้มาตรฐานcustomer-support-agent
  • วิเคราะห์โครงสร้าง ADK 2.0: สำรวจเวิร์กโฟลว์กราฟ, LLM Agent, โหนด, Edge และการกำหนดเส้นทางแบบมีเงื่อนไข
  • จัดการความสมบูรณ์ในเครื่อง: เรียกใช้การตรวจสอบคุณภาพโค้ดอัตโนมัติโดยใช้ agents-cli lint
  • ยืนยันลักษณะการทำงาน: ทดสอบ Agent แบบอินเทอร์แอกทีฟด้วยการโหลดซ้ำแบบเรียลไทม์ผ่านเพลย์กราวด์ และเรียกใช้การทดสอบอย่างรวดเร็วในบรรทัดคำสั่ง

ขั้นตอนต่อไปคือ

ตอนนี้คุณเชี่ยวชาญวงจรการพัฒนาในเครื่องแล้ว ต่อไปนี้คือวิธีขยายและนำ Agent ไปใช้จริง

  • การประเมิน: ให้คะแนน Agent กับชุดข้อมูลการประเมินโดยใช้ agents-cli eval run เพื่อวัดความถูกต้องและค้นหาการถดถอย
  • การปรับขนาดระบบคลาวด์ระดับองค์กร: การทำให้ใช้งานได้ & ความสามารถในการสังเกต: แพ็กเกจและทำให้ใช้งานได้ Agent ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ เช่น Agent Runtime หรือ Cloud Run โดยใช้ agents-cli deploy ตั้งค่าการวัดและส่งข้อมูลระยะไกลของการใช้งานจริงเพื่อสตรีมบันทึกและการติดตามการดำเนินการไปยัง Cloud Trace และ BigQuery

แหล่งข้อมูลเพิ่มเติม