Nhảy đến nội dung chính

Agent trong OpenAI Agent SDK để gọi dữ liệu sản phẩm từ một API thật(Tool)

Dưới đây là hướng dẫn và ví dụ thêm một "Tool" vào mỗi Agent trong OpenAI Agent SDK để gọi dữ liệu sản phẩm từ một API thật (hoặc mô phỏng).

Mục tiêu

Thêm một tool có thể gọi API để lấy danh sách laptop phù hợp, và cho phép các agent dùng tool này trong quá trình phản hồi người dùng.

1. Giả lập Tool gọi API

Đầu tiên, bạn cần định nghĩa một tool dưới dạng Python function – nó nên có docstring đầy đủ để agent hiểu cách dùng.

from openai import tool

@tool
def get_laptop_suggestions(purpose: str) -> list:
    """
    Trả về danh sách gợi ý laptop phù hợp với mục đích sử dụng.

    Args:
        purpose (str): Mục đích sử dụng, ví dụ: "thiết kế đồ họa", "lập trình", "văn phòng".

    Returns:
        list: Danh sách các laptop phù hợp, mỗi cái là một chuỗi mô tả.
    """
    # Đây là dữ liệu mô phỏng. Bạn có thể thay bằng gọi tới API thật.
    database = {
        "thiết kế đồ họa": [
            "MacBook Pro 16 M3 Max - 64GB RAM, GPU mạnh",
            "Dell XPS 17 - Intel i9, RTX 4070, màn 4K",
            "Asus ROG Studio - Ryzen 9, RAM 32GB, GPU RTX"
        ],
        "lập trình": [
            "MacBook Air M2 - nhẹ, pin lâu",
            "Lenovo ThinkPad X1 Carbon",
            "Dell XPS 13 - nhỏ gọn, hiệu năng tốt"
        ]
    }
    return database.get(purpose.lower(), ["Không tìm thấy laptop phù hợp"])

2. Gắn Tool này vào Agent

from openai import Agent

agent_professional = Agent(
    instructions="Bạn là nhân viên bán hàng chuyên nghiệp, lịch sự. Hãy tư vấn đúng mục tiêu khách hàng.",
    tools=[get_laptop_suggestions],
)

agent_funny = Agent(
    instructions="Bạn tư vấn với phong cách hài hước. Hãy làm khách hàng vui vẻ nhưng vẫn đúng mục tiêu.",
    tools=[get_laptop_suggestions],
)

agent_direct = Agent(
    instructions="Bạn tư vấn ngắn gọn, đúng trọng tâm. Không vòng vo.",
    tools=[get_laptop_suggestions],
)

3. Chạy Agent với run_stream()

async def stream_agent(agent, input_text, label):
    print(f"\n💬 {label} đang trả lời:\n")
    runner = agent.runner()
    async for chunk in runner.run_stream(input_text):
        print(chunk.delta, end="", flush=True)
    print("\n---------------------------")

Ví dụ gọi Agent

async def main():
    input_text = "Tôi cần mua laptop để thiết kế đồ họa. Tư vấn giúp tôi."

    with trace():
        await stream_agent(agent_professional, input_text, "🎩 CHUYÊN NGHIỆP")
        await stream_agent(agent_funny, input_text, "😄 HÀI HƯỚC")
        await stream_agent(agent_direct, input_text, "⚡ NGẮN GỌN")

asyncio.run(main())

Agent có thể tự động gọi get_laptop_suggestions(), ví dụ:

🎩 CHUYÊN NGHIỆP đang trả lời:

Dựa trên nhu cầu "thiết kế đồ họa", tôi gợi ý bạn những mẫu laptop sau:
- MacBook Pro 16 M3 Max - 64GB RAM, GPU mạnh
- Dell XPS 17 - Intel i9, RTX 4070, màn 4K
- Asus ROG Studio - Ryzen 9, RAM 32GB, GPU RTX
  • Agent chủ động gọi tool khi thấy phù hợp với yêu cầu người dùng.

  • Bạn có thể thay tool bằng lệnh gọi API thật, ví dụ requests.get(...) tới một trang bán hàng.

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft