0
0
Lập trình
Admin Team
Admin Teamtechmely

Đại lý lập kế hoạch nội dung dựa trên A2A và ADK

Đăng vào 2 ngày trước

• 10 phút đọc

Chủ đề:

#a2a

Giới thiệu Dự án

Đại lý lập kế hoạch nội dung là một tác nhân lập kế hoạch nội dung thông minh được xây dựng trên Google Agent Development Kit (ADK) và Python A2A SDK. Tác nhân này có khả năng tạo ra các dàn ý nội dung chi tiết dựa trên mô tả nội dung cấp cao.

A2A Protocol là gì?

A2A Protocol (Giao thức Agent2Agent) là một giao thức tiêu chuẩn mở được thiết kế đặc biệt cho các tác nhân AI. Mục tiêu cốt lõi của nó là đạt được khả năng tương tác giữa các tác nhân trên các nền tảng và công nghệ khác nhau, cho phép chúng hợp tác như những "đồng nghiệp" để hoàn thành các nhiệm vụ, bất kể công nghệ nền tảng.

Công nghệ sử dụng

  • Python: 3.10+
  • UV: Trình quản lý gói Python
  • Google ADK: Bộ công cụ phát triển tác nhân của Google
  • A2A SDK: Giao thức giao tiếp giữa các tác nhân
  • Gemini 2.5 Flash: Mô hình ngôn ngữ lớn
  • Google Search: Công cụ tìm kiếm
  • Uvicorn: Máy chủ ASGI

Các yêu cầu trước khi bắt đầu

1. Cài đặt môi trường

Đảm bảo hệ thống của bạn đã cài đặt các phần mềm sau:

Copy
# Kiểm tra phiên bản Python (yêu cầu 3.10+)
python --version

# Cài đặt trình quản lý gói UV (nếu chưa cài)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Hoặc sử dụng pip
pip install uv

2. Khóa API

Bạn cần lấy khóa API của Google để sử dụng các mô hình Gemini và chức năng tìm kiếm của Google:

  1. Truy cập Google AI Studio
  2. Tạo một khóa API mới
  3. Lưu khóa để sử dụng sau này

Cấu trúc dự án

Copy
samples/python/agents/content_planner/
├── __init__.py                 # Tập tin khởi tạo gói
├── __main__.py                # Tập tin nhập chính
├── agent_executor.py          # Thực thi tác nhân
├── content_planner_agent.py   # Định nghĩa tác nhân lập kế hoạch nội dung
├── pyproject.toml            # Tập tin cấu hình dự án
├── requirements.txt          # Danh sách phụ thuộc
├── .env.example             # Ví dụ biến môi trường
└── README.md               # Tài liệu dự án

Khởi động nhanh

Bước 1: Sao chép dự án và điều hướng đến thư mục

Copy
# Giả sử bạn đã có dự án a2a-samples
git clone https://github.com/a2aproject/a2a-samples.git
cd a2a-samples/samples/python/agents/content_planner

Bước 2: Cấu hình biến môi trường

Copy
# Sao chép tập tin ví dụ biến môi trường
cp .env.example .env

# Chỉnh sửa tập tin .env và thêm khóa API Google của bạn
echo "GOOGLE_API_KEY=your_actual_api_key_here" > .env

Bước 3: Cài đặt các phụ thuộc và chạy tác nhân

Copy
# Sử dụng UV để cài đặt các phụ thuộc và chạy dự án
uv run .

# Lưu ý:
"gradio>=5.30.0" không cần thiết trong tác nhân hiện tại.

Mặc định, tác nhân sẽ khởi động tại http://localhost:10001.

Bước 4: Kiểm tra tác nhân (cửa sổ terminal mới)

Copy
# Điều hướng đến thư mục khách hàng CLI
cd samples/python/hosts/cli

# Kết nối với tác nhân và gửi tin nhắn
uv run . --agent http://localhost:10001

Bước 5: Tương tác với tác nhân

Trong khách hàng CLI, bạn có thể gửi các tin nhắn như:

Copy
Tạo một dàn ý cho một bài viết ngắn, vui tươi, khuyến khích về việc học Java

Giải thích mã

1. Tập tin nhập chính (__main__.py)

Copy
@click.command()
@click.option("--host", default="localhost")
@click.option("--port", default=10001)
def main(host, port):
    # Thẻ tác nhân (metadata)
    agent_card = AgentCard(
        name='Content Planner Agent',
        description=content_planner_agent.description,
        url=f'http://{host}:{port}',
        version="1.0.0",
        defaultInputModes=["text", "text/plain"],
        defaultOutputModes=["text", "text/plain"],
        capabilities=AgentCapabilities(streaming=True),
        skills=[
            AgentSkill(
                id="content_planner",
                name="Tạo dàn ý cho nội dung",
                description="Tạo dàn ý cho nội dung dựa trên mô tả cấp cao của nội dung",
                tags=["plan", "outline"],
                examples=[
                    "Tạo một dàn ý cho một bài viết ngắn, vui tươi, khuyến khích về việc học Java",
                ],
            )
        ],
    )

Giải thích các thành phần chính:

  • AgentCard: Thẻ metadata của tác nhân chứa tên, mô tả, URL, phiên bản, v.v.
  • AgentSkill: Định nghĩa kỹ năng của tác nhân bao gồm ID, tên, mô tả, thẻ và ví dụ
  • AgentCapabilities: Cấu hình khả năng của tác nhân, chẳng hạn như hỗ trợ phát trực tuyến

2. Định nghĩa tác nhân (content_planner_agent.py)

Copy
from google.adk.agents import Agent
from google.adk.tools import google_search

root_agent = Agent(
    name="content_planner_agent",
    model="gemini-2.5-flash",
    description=("Tác nhân lập kế hoạch tạo ra một dàn ý chi tiết và hợp lý cho một nội dung,"
                 "dựa trên mô tả cấp cao."),
    instruction=("Bạn là một chuyên gia lập kế hoạch nội dung. Nhiệm vụ của bạn là tạo ra một dàn ý chi tiết và hợp lý cho một nội dung"
                 "dựa trên mô tả cấp cao."),
    tools=[google_search],
)

Các tính năng chính:

  • Model: Sử dụng Gemini 2.5 Flash làm mô hình nền tảng
  • Tools: Tích hợp công cụ tìm kiếm Google để truy xuất thông tin liên quan
  • Instructions: Định nghĩa rõ ràng vai trò và nhiệm vụ của tác nhân

3. Thực thi tác nhân (agent_executor.py)

Copy
class ADKAgentExecutor(AgentExecutor):
    def __init__(self, agent, status_message="Đang xử lý yêu cầu...", artifact_name="response"):
        self.agent = agent
        self.status_message = status_message
        self.artifact_name = artifact_name
        self.runner = Runner(
            app_name=agent.name,
            agent=agent,
            artifact_service=InMemoryArtifactService(),
            session_service=InMemorySessionService(),
            memory_service=InMemoryMemoryService(),
        )

Chức năng cốt lõi:

  • Runner: Trình chạy ADK quản lý việc thực thi tác nhân
  • Service Components:
    • ArtifactService: Quản lý các artefact được tạo ra
    • SessionService: Quản lý trạng thái phiên
    • MemoryService: Quản lý bộ nhớ cuộc trò chuyện

Sơ đồ kiến trúc hệ thống

Copy
graph TB
    A[User Request] --> B[A2A CLI Client]
    B --> C[HTTP Request]
    C --> D[A2A Starlette Application]
    D --> E[DefaultRequestHandler]
    E --> F[ADKAgentExecutor]
    F --> G[ADK Runner]
    G --> H[Content Planner Agent]
    H --> I[Gemini 2.5 Flash Model]
    H --> J[Google Search Tool]
    I --> K[Generate Content Outline]
    J --> K
    K --> L[Response Artifact]
    L --> M[Task Completion]
    M --> N[Return Result to User]

    subgraph "ADK Components"
        O[InMemoryArtifactService]
        P[InMemorySessionService]
        Q[InMemoryMemoryService]
    end

    G --> O
    G --> P
    G --> Q

Quy trình thực thi chi tiết

1. Giai đoạn khởi tạo

Copy
sequenceDiagram
    participant Main as __main__.py
    participant Agent as content_planner_agent
    participant Executor as ADKAgentExecutor
    participant Server as A2AStarletteApplication

    Main->>Agent: Tải cấu hình tác nhân
    Main->>Executor: Tạo phiên thực thi
    Main->>Server: Tạo máy chủ A2A
    Server->>Server: Khởi động máy chủ Uvicorn

2. Giai đoạn xử lý yêu cầu

Copy
sequenceDiagram
    participant Client as CLI Client
    participant Server as A2A Server
    participant Handler as DefaultRequestHandler
    participant Executor as ADKAgentExecutor
    participant Runner as ADK Runner
    participant Model as Gemini 2.5 Flash
    participant Search as Google Search

    Client->>Server: Gửi yêu cầu lập kế hoạch nội dung
    Server->>Handler: Định tuyến yêu cầu
    Handler->>Executor: Thực hiện nhiệm vụ tác nhân
    Executor->>Runner: Bắt đầu trình chạy ADK
    Runner->>Model: Gọi mô hình Gemini
    Runner->>Search: Thực hiện tìm kiếm Google
    Model->>Runner: Trả về nội dung đã tạo
    Search->>Runner: Trả về kết quả tìm kiếm
    Runner->>Executor: Gộp kết quả
    Executor->>Handler: Trả về artefact
    Handler->>Server: Hoàn thành nhiệm vụ
    Server->>Client: Trả về dàn ý nội dung

Cấu hình nâng cao

Cổng tùy chỉnh

Copy
# Khởi động tác nhân trên cổng đã chỉ định
uv run . --port=8080

Máy chủ tùy chỉnh

Copy
# Khởi động trên máy chủ và cổng đã chỉ định
uv run . --host=0.0.0.0 --port=8080

Cấu hình biến môi trường

Bạn có thể cấu hình thêm các tùy chọn trong tập tin .env:

Copy
GOOGLE_API_KEY=your_api_key_here
# Bạn có thể thêm các mục cấu hình khác
LOG_LEVEL=INFO

Khắc phục sự cố

Các vấn đề phổ biến

  1. Lỗi khóa API
Copy
   Error: Khóa API không hợp lệ
   Solution: Kiểm tra xem GOOGLE_API_KEY trong tập tin .env có đúng không
  1. Cổng đã được sử dụng
Copy
   Error: Cổng 10001 đã được sử dụng
   Solution: Sử dụng tham số --port để chỉ định cổng khác
  1. Cài đặt phụ thuộc thất bại
Copy
   Error: Không thể cài đặt các phụ thuộc
   Solution: Đảm bảo UV đã được cài đặt đúng cách, thử uv sync

Mở rộng và tùy chỉnh

Thêm công cụ mới

Thêm các công cụ mới trong content_planner_agent.py:

Copy
from google.adk.tools import google_search, web_search

root_agent = Agent(
    # ... các cấu hình khác
    tools=[google_search, web_search],  # Thêm nhiều công cụ hơn
)

Thay đổi mô hình

Copy
root_agent = Agent(
    name="content_planner_agent",
    model="gemini-1.5-pro",  # Sử dụng mô hình khác
    # ... các cấu hình khác
)

Hướng dẫn tùy chỉnh

Copy
root_agent = Agent(
    # ... các cấu hình khác
    instruction=(
        "Bạn là một lập kế hoạch nội dung chuyên biệt cho tài liệu kỹ thuật. "
        "Tạo các dàn ý chi tiết bao gồm các ví dụ mã và các thực hành tốt nhất."
    ),
)

Thực hành tốt nhất

  1. Bảo mật:

    • Luôn lưu trữ các khóa API trong biến môi trường
    • Không cam kết các tập tin .env vào quản lý phiên bản
  2. Tối ưu hóa hiệu suất:

    • Sử dụng kích thước mô hình phù hợp
    • Cấu hình đúng bộ nhớ và dịch vụ phiên
  3. Xử lý lỗi:

    • Thực hiện xử lý lỗi và ghi lại đúng cách
    • Cung cấp thông báo lỗi có ý nghĩa
  4. Kiểm tra:

    • Viết các bài kiểm tra đơn vị và bài kiểm tra tích hợp
    • Kiểm tra phản hồi của tác nhân với các đầu vào khác nhau

Tóm tắt

Đại lý lập kế hoạch nội dung cho thấy cách xây dựng các tác nhân thông minh sử dụng Google ADK và Giao thức A2A. Qua hướng dẫn này, bạn nên có thể:

  • Hiểu kiến trúc tổng thể của dự án
  • Chạy và kiểm tra tác nhân thành công
  • Tùy chỉnh và mở rộng khi cần
  • Giải quyết các vấn đề phổ biến

Tác nhân này có thể phục vụ như một nền tảng để xây dựng các hệ thống đa tác nhân phức tạp hơn, chẳng hạn như quy trình tạo nội dung hoàn chỉnh.

Thêm ví dụ về Giao thức A2A

  • Giao thức A2A
  • Ví dụ A2A Multi-Agent: Trò chơi đoán số
  • Ví dụ tác nhân thông minh A2A MCP AG2
  • Hướng dẫn tạo biểu đồ A2A + CrewAI + OpenRouter
  • Ví dụ A2A JS: Tác nhân phim
  • Ví dụ A2A Python: Tác nhân Github
  • Ví dụ A2A: Lập kế hoạch du lịch OpenRouter
  • Ví dụ A2A Java
  • Ví dụ A2A: Tác nhân Hello World
  • Ví dụ A2A Phương thức và phản hồi JSON
  • Quy trình trò chuyện với tệp LlamaIndex bằng Giao thức A2A

Nội dung bài viết

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào