Các phần cơ sở kiến thức ▾

Điều hướng

▸ Bắt đầu tại đây Theo vai trò

Danh mục

Công cụ 32
Bảng thuật ngữ 12

Công cụ

PydanticAI + Gonka — các tác nhân AI có kiểu dữ liệu với chi phí thấp

PydanticAI là framework Python dùng để tạo các AI-agents từ đội ngũ Pydantic (thư viện xác thực mà một nửa hệ sinh thái Python đang dựa vào). Điểm nổi bật chính của PydanticAI là kết quả trả về có kiểu dữ liệu (typed output): bạn mô tả kết quả như một Pydantic model thông thường, và framework đảm bảo rằng model sẽ trả về chính xác cấu trúc đó, đã được xác thực và sẵn sàng sử dụng. Cộng thêm @agent.tool tool calling trực quan, dependency injection và hỗ trợ cho bất kỳ provider nào.

Vấn đề tương tự như tất cả các framework agent khác — chi phí tokens. Agent với các công cụ sẽ xoay vòng ngữ cảnh: truy vấn → gọi tool → kết quả → truy vấn lại. Với một tác vụ, bạn có thể dễ dàng tiêu tốn vài triệu tokens. Với giá cước của OpenAI ($2.50–15 cho 1M) và Anthropic ($3–15 cho 1M), ngay cả bản mẫu cũng trở nên đắt đỏ, và việc đưa vào production với hàng ngàn yêu cầu mỗi ngày là điều không tưởng.

PydanticAI hoạt động native với bất kỳ endpoint tương thích OpenAI nào thông qua các class OpenAIChatModelOpenAIProvider. Điều này có nghĩa là JoinGonka Gateway kết nối chỉ sau vài dòng code — không cần các gói riêng biệt hay adapter. Kết quả: các agent có kiểu dữ liệu chạy với giá $0.003 cho 1M tokens đầu vào thay vì $2.50–15 của OpenAI/Anthropic — rẻ hơn hàng trăm đến hàng ngàn lần.

Bắt đầu nhanh: kết nối trong code

Trước tiên, hãy lấy khóa: đăng ký tại gate.joingonka.ai/register — chúng tôi tặng 10M token miễn phí khi đăng ký — và tạo khóa jg-xxx trong Dashboard → API Keys.

Cài đặt:

pip install pydantic-ai
# hoặc tùy chọn nhẹ hơn chỉ với các dependency của OpenAI:
# pip install "pydantic-ai-slim[openai]"

Ví dụ tối thiểu — agent qua Gonka. PydanticAI thiết lập custom endpoint thông qua OpenAIProvider(base_url=..., api_key=...), được truyền vào OpenAIChatModel:

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-khóa-của-bạn",
    ),
)

agent = Agent(model)

result = agent.run_sync("Giải thích PoUW là gì trong hai câu")
print(result.output)

Vậy là xong — agent PydanticAI của bạn đang hoạt động thông qua mạng phi tập trung Gonka với chi phí cực thấp. Phương thức run_sync thuận tiện cho các script; đối với code bất đồng bộ (async), hãy sử dụng await agent.run(...).

Tham số mô hình: cửa sổ ngữ cảnh của các mô hình trong mạng là 200K token (200000), độ dài phản hồi tối đa qua Gateway — lên tới 8192 token. Bạn có thể giới hạn đầu ra thông qua cài đặt mô hình (OpenAIChatModelSettings(max_tokens=8192)). Ngoài ra còn có moonshotai/Kimi-K2.6MiniMaxAI/MiniMax-M2.7 (mỗi mô hình hỗ trợ tới 8192 token đầu ra) — chỉ cần thay đổi tên mô hình trong đối số đầu tiên của OpenAIChatModel.

Tính năng của PydanticAI: đầu ra được định kiểu

Lý do chính để chọn PydanticAI là structured output. Thay vì phân tích văn bản phản hồi bằng regex, bạn mô tả kết quả như một Pydantic model và truyền nó vào tham số output_type. Framework sử dụng tính năng tool calling của mô hình để ép nó trả về dữ liệu tuân thủ nghiêm ngặt theo schema, xác thực chúng và trả về đối tượng đã sẵn sàng thông qua result.output.

from pydantic import BaseModel
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-khóa-của-bạn",
    ),
)


class Profile(BaseModel):
    name: str
    role: str
    skills: list[str]


agent = Agent(model, output_type=Profile)

result = agent.run_sync(
    "Trích xuất dữ liệu: Anna là backend-developer, biết Python, Go và Postgres"
)
print(result.output)
# name='Anna' role='backend-developer' skills=['Python', 'Go', 'Postgres']
print(result.output.skills)  # ['Python', 'Go', 'Postgres'] — đây là list[str], không phải văn bản

Điều này hoạt động vì cả hai mô hình Gonka (Kimi K2.6 và MiniMax M2.7) đều hỗ trợ tool calling gốc — PydanticAI dựa vào đó để trả về cấu trúc JSON hợp lệ. Đầu ra bạn nhận được là một đối tượng Python kiểu hóa (typed object), không phải một chuỗi cần phân tích thủ công. Hoàn hảo cho việc trích xuất dữ liệu, phân loại, điền biểu mẫu và các pipeline RAG, nơi kết quả cần được xử lý tiếp trong code theo định dạng nghiêm ngặt.

So sánh chi phí

PydanticAI là framework cho các agent và pipeline hoạt động liên tục: trích xuất dữ liệu, gọi công cụ, xử lý luồng yêu cầu. Ở đây, chi phí token quyết định liệu dự án sẽ chỉ dừng lại ở bản mẫu hay được đưa vào production. Hãy so sánh các khối lượng công việc điển hình:

Kịch bảnTokensOpenAI / AnthropicJoinGonka Gonka
Trích xuất cấu trúc từ tài liệu~3K$0.008 — $0.045~$0.000014
Agent với tool calling (một chu kỳ)~15K$0.04 — $0.22~$0.00007
RAG-pipeline (1000 yêu cầu/ngày)~5M/ngày$12 — $75/ngày~$0.024/ngày
Production-agent (100K yêu cầu/ngày)~500M/ngày$1,250 — $7,500/ngày~$2.40/ngày

Sự khác biệt lên tới hàng trăm, hàng ngàn lần. Đối với bản mẫu, điều này có nghĩa là 10M tokens miễn phí đủ cho hàng trăm lần chạy agent. Đối với production xử lý hàng trăm ngàn yêu cầu mỗi ngày, số tiền tiết kiệm được lên tới hàng chục ngàn đô la mỗi tháng — vẫn cùng một đoạn code PydanticAI đó, chỉ cần thay đổi base_url.

Một khóa jg-xxx và một số dư hoạt động cho cả định dạng OpenAI (/v1) và định dạng Anthropic (/v1/messages) — nhưng đối với PydanticAI, bạn chỉ cần endpoint tương thích OpenAI như đã hiển thị ở trên.

Gọi công cụ và chọn mô hình

Khả năng quan trọng thứ hai của PydanticAI là các công cụ. Bạn có thể đăng ký một hàm bằng decorator @agent.tool_plain (không có ngữ cảnh) hoặc @agent.tool (có quyền truy cập vào RunContext và dependency injection). Mô hình tự quyết định khi nào cần gọi công cụ, nhận kết quả và tiếp tục suy luận:

import random
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-your-key",
    ),
)

agent = Agent(
    model,
    instructions="Bạn là một trợ lý. Hãy sử dụng các công cụ khi cần thiết.",
)


@agent.tool_plain
def roll_dice() -> str:
    """Gieo xúc xắc 6 mặt và trả về kết quả."""
    return str(random.randint(1, 6))


@agent.tool_plain
def calculator(expression: str) -> str:
    """Tính toán biểu thức toán học."""
    return str(eval(expression))


result = agent.run_sync("Gieo xúc xắc và nhân kết quả với 7")
print(result.output)

Vì tool calling tại Gonka là native, các công cụ được gọi một cách đáng tin cậy — mà không cần phân tích phản hồi văn bản dễ bị lỗi. Toàn bộ chu trình (truy vấn → gọi tool → phản hồi cuối cùng) có chi phí khoảng $0.00007 qua Gonka so với $0.04–0.22 của OpenAI/Anthropic.

Chọn mô hình nào: moonshotai/Kimi-K2.6 — mạnh về coding và suy luận phức tạp, output lên tới 8192. MiniMaxAI/MiniMax-M2.7 — cho các cuộc hội thoại dài và những tác vụ cân bằng, output lên tới 8192. Cả hai đều có sẵn ngay lập tức với một key duy nhất — chỉ cần thay đổi dòng mô hình. Các công cụ tương tự: LangChain cho các chuỗi và RAG, LlamaIndex để lập chỉ mục dữ liệu.

PydanticAI + Gonka = các tác tử AI có kiểu (typed AI agents) trên Python với chi phí cực thấp. Structured output trên các Pydantic-model, native tool calling, dependency injection — tất cả thông qua OpenAIChatModel + OpenAIProvider với một base_url duy nhất. Chi phí từ $0.003 cho 1 triệu token thay vì $2.50–15 của OpenAI và Anthropic.

Muốn tìm hiểu thêm?

Khám phá các phần khác hoặc bắt đầu kiếm GNK ngay bây giờ.

Nhận 10M token miễn phí →