ส่วนของฐานความรู้ ▾

การนำทาง

▸ เริ่มต้นที่นี่ ตามบทบาท

หมวดหมู่

เครื่องมือ 54
อภิธานศัพท์ 12

เครื่องมือ

PydanticAI + Gonka — เอเจนต์ AI แบบมีไทป์ราคาถูก

PydanticAI คือ Python framework สำหรับสร้าง AI agents จากทีม Pydantic (ไลบรารีการตรวจสอบข้อมูลที่สำคัญที่สุดในระบบนิเวศของ Python) จุดเด่นหลักของ PydanticAI คือ typed output: คุณกำหนดผลลัพธ์เป็น Pydantic model ปกติ และ framework จะรับประกันว่าโมเดลจะส่งคืนโครงสร้างข้อมูลนั้นที่ผ่านการตรวจสอบแล้วและพร้อมใช้งาน นอกจากนี้ยังมี @agent.tool สำหรับ tool calling, dependency injection และรองรับ provider ใดก็ได้

ปัญหาเหมือนกับ framework ของเอเจนต์อื่นๆ คือราคาของ tokens เอเจนต์ที่มีเครื่องมือจะหมุนเวียนบริบทไปมา: คำถาม → เรียกใช้ tool → ผลลัพธ์ → คำถามซ้ำ ในงานหนึ่งอย่าง อาจใช้ tokens ไปหลายล้านหน่วย ด้วยราคาของ OpenAI ($2.50–15 ต่อ 1M) และ Anthropic ($3–15 ต่อ 1M) ทำให้แม้แต่ตัวต้นแบบ (prototype) ก็ยังแพง และในระดับ production ที่มีการใช้งานหลายพันครั้งต่อวัน ค่าใช้จ่ายจะสูงเกินแบกรับ

PydanticAI ทำงานได้โดยตรงกับ OpenAI-compatible endpoint ผ่านคลาส OpenAIChatModel และ OpenAIProvider ซึ่งหมายความว่า JoinGonka Gateway สามารถเชื่อมต่อได้ด้วยโค้ดไม่กี่บรรทัดโดยไม่ต้องมีแพ็กเกจหรือตัวแปลงเพิ่มเติม ผลลัพธ์: เอเจนต์แบบมีชนิดข้อมูล (typed agents) ที่ทำงานด้วยราคา $0.0062 ต่อ 1M input tokens แทนที่จะเป็น $2.50–15 ของ OpenAI/Anthropic — ถูกกว่าหลายร้อยถึงหลายพันเท่า

เริ่มต้นใช้งานอย่างรวดเร็ว: การเชื่อมต่อในโค้ด

เริ่มจากรับคีย์ก่อน: สมัครที่ gate.joingonka.ai/register — เมื่อสมัครเรามอบโทเคนฟรี 3M — แล้วสร้างคีย์ jg-xxx ใน Dashboard → API Keys

การติดตั้ง:

pip install pydantic-ai
# or the slim variant with only the OpenAI dependencies:
# pip install "pydantic-ai-slim[openai]"

ตัวอย่างแบบสั้นที่สุด — เอเจนต์ผ่าน Gonka PydanticAI กำหนด endpoint แบบกำหนดเองผ่าน OpenAIProvider(base_url=..., api_key=...) ซึ่งส่งต่อไปยัง 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-your-key",
    ),
)

agent = Agent(model)

result = agent.run_sync("Explain in two sentences what PoUW is")
print(result.output)

เท่านี้ก็เรียบร้อย — เอเจนต์ PydanticAI ของคุณทำงานผ่านเครือข่ายแบบกระจายศูนย์ Gonkaในราคาไม่กี่สตางค์ เมธอด run_sync เหมาะกับสคริปต์ ส่วนโค้ดแบบ async ใช้ await agent.run(...)

พารามิเตอร์ของโมเดล: หน้าต่างบริบทของ MiniMax M2.7 คือ 180K โทเคน (180000), DeepSeek V4 Flash คือ 380K, GLM-5.3 Flash คือ 390K; ความยาวคำตอบสูงสุดผ่าน Gateway สูงถึง 8192 โทเคนสำหรับ MiniMax และ GLM-5.3 Flash และสูงถึง 32768 สำหรับ DeepSeek จำกัดเอาต์พุตได้ผ่านการตั้งค่าโมเดล (OpenAIChatModelSettings(max_tokens=8192)) ใช้ได้ทั้ง MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 และ zai-org/GLM-5.3-Flash — แค่เปลี่ยนชื่อโมเดลในอาร์กิวเมนต์แรกของ OpenAIChatModel ก็พอ

คุณสมบัติของ PydanticAI: เอาต์พุตแบบไทป์

เหตุผลหลักที่ควรเลือก PydanticAI คือ structured output แทนที่จะต้องแยกวิเคราะห์ข้อความตอบกลับด้วย regex คุณอธิบายผลลัพธ์เป็นโมเดล Pydantic แล้วส่งเข้าไปในพารามิเตอร์ output_type เฟรมเวิร์กจะใช้ tool calling ของโมเดลเพื่อบังคับให้คืนค่าตามสคีมาอย่างเคร่งครัด ตรวจสอบความถูกต้อง และส่งอ็อบเจกต์ที่พร้อมใช้กลับมาผ่าน 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-your-key",
    ),
)


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


agent = Agent(model, output_type=Profile)

result = agent.run_sync(
    "Extract the data: Anna is a backend developer who knows Python, Go and Postgres"
)
print(result.output)
# name='Anna' role='backend developer' skills=['Python', 'Go', 'Postgres']
print(result.output.skills)  # ['Python', 'Go', 'Postgres'] — already a list[str], not text

วิธีนี้ใช้ได้เพราะโมเดลทั้งสามตัวของ Gonka (MiniMax M2.7, DeepSeek V4 Flash และ GLM-5.3 Flash) รองรับ native tool calling — PydanticAI พึ่งพากลไกนี้ในการคืนค่าโครงสร้าง JSON ที่ถูกต้อง ผลลัพธ์ที่ได้คืออ็อบเจกต์ Python ที่มีชนิดข้อมูลชัดเจน ไม่ใช่สตริงที่ต้องมานั่งแยกวิเคราะห์เอง เหมาะอย่างยิ่งสำหรับการสกัดข้อมูล การจำแนกประเภท การกรอกแบบฟอร์ม และไปป์ไลน์ RAG ที่ผลลัพธ์ต้องส่งต่อไปยังโค้ดอื่นในรูปแบบที่เข้มงวด

การเปรียบเทียบค่าใช้จ่าย

PydanticAI คือเฟรมเวิร์กสำหรับเอเจนต์และไปป์ไลน์ที่ทำงานต่อเนื่อง: ดึงข้อมูล, เรียกใช้เครื่องมือ, ประมวลผลสตรีมคำขอ ที่นี่ต้นทุนของโทเค็นคือตัวตัดสินว่าโปรเจกต์จะเป็นเพียงแค่โปรโตไทป์หรือก้าวไปสู่ production ลองเปรียบเทียบภาระงานทั่วไป:

สถานการณ์โทเค็นOpenAI / AnthropicJoinGonka Gonka
การดึงโครงสร้างจากเอกสาร~3K$0.008 — $0.045~$0.000028
เอเจนต์พร้อม tool calling (หนึ่งรอบ)~15K$0.04 — $0.22~$0.00014
RAG-ไปป์ไลน์ (1000 คำขอ/วัน)~5M/วัน$12 — $75/วัน~$0.048/วัน
Production-เอเจนต์ (100K คำขอ/วัน)~500M/วัน$1,250 — $7,500/วัน~$4.80/วัน

ความแตกต่างนั้นมีค่าเป็นร้อยเป็นพันเท่า สำหรับโปรโตไทป์ หมายความว่า 3M โทเค็นฟรีนั้นเพียงพอสำหรับการเริ่มต้นใช้งานเอเจนต์ สำหรับ production ที่รองรับคำขอหลายแสนครั้งต่อวัน การประหยัดค่าใช้จ่ายอยู่ที่หลักหลายหมื่นดอลลาร์ต่อเดือน โดยใช้โค้ดเดิมบน PydanticAI เพียงแค่เปลี่ยน base_url เท่านั้น

คีย์ jg-xxx เดียวและยอดเงินเดียวสามารถใช้ได้ทั้งรูปแบบ OpenAI (/v1) และรูปแบบ Anthropic (/v1/messages) — แต่สำหรับ PydanticAI เพียงแค่ใช้ endpoint ที่รองรับ OpenAI ตามที่แสดงด้านบนก็เพียงพอแล้ว

Tool calling และการเลือกโมเดล

ความสามารถหลักอีกอย่างของ PydanticAI คือเครื่องมือ (tools) คุณลงทะเบียนฟังก์ชันได้ด้วยเดโคเรเตอร์ @agent.tool_plain (แบบไม่มีบริบท) หรือ @agent.tool (แบบเข้าถึง RunContext และ dependency injection) โมเดลจะตัดสินใจเองว่าจะเรียกเครื่องมือเมื่อไหร่ รับผลลัพธ์ แล้วดำเนินการให้เหตุผลต่อ:

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="You are an assistant. Use the tools when needed.",
)


@agent.tool_plain
def roll_dice() -> str:
    """Rolls a six-sided die and returns the result."""
    return str(random.randint(1, 6))


@agent.tool_plain
def calculator(expression: str) -> str:
    """Evaluates a math expression."""
    return str(eval(expression))


result = agent.run_sync("Roll the die and multiply the result by 7")
print(result.output)

เนื่องจาก tool calling ของ Gonka เป็นแบบ native เครื่องมือจึงถูกเรียกอย่างเชื่อถือได้ — ไม่ต้องพึ่งการแยกวิเคราะห์ข้อความตอบกลับที่เปราะบาง วงจรทั้งหมด (คำขอ → เรียก tool → คำตอบสุดท้าย) มีค่าใช้จ่ายประมาณ $0.00007 ผ่าน Gonka เทียบกับ $0.04–0.22 ของ OpenAI/Anthropic

จะเลือกโมเดลไหนดี: MiniMaxAI/MiniMax-M2.7 — สำหรับบทสนทนายาวและงานที่ต้องการความสมดุล เอาต์พุตสูงสุด 8192 deepseek-ai/DeepSeek-V4-Flash-0731 — หนึ่งในบริบทที่ยาวที่สุดของเครือข่าย (380K) และพรอมป์ขนาดใหญ่ราคาถูก เอาต์พุตสูงสุด 32768 zai-org/GLM-5.3-Flash — โมเดล reasoning สำหรับการให้เหตุผลซับซ้อนและบริบทที่ยาวที่สุดของเครือข่าย (390K) เอาต์พุตสูงสุด 8192; การให้เหตุผลจะกิน max_tokens ไปส่วนหนึ่ง จึงควรตั้งค่าเผื่อไว้ (ตั้งแต่ 600 ขึ้นไป) ทั้งสามตัวใช้ได้ทันทีด้วยคีย์เดียว — แค่เปลี่ยนชื่อโมเดล เครื่องมือที่มีแนวคิดใกล้เคียงกัน: LangChain สำหรับเชนและ RAG, LlamaIndex สำหรับการทำดัชนีข้อมูล

PydanticAI + Gonka = AI agents แบบ typed ใน Python ในราคาถูกเหลือเชื่อ รองรับ structured output ด้วย Pydantic models, tool calling, dependency injection ทั้งหมดนี้ผ่าน OpenAIChatModel + OpenAIProvider ด้วย base_url เดียว ราคาเริ่มต้นที่ $0.0062 ต่อ 1M tokens เทียบกับ $2.50–15 ของ OpenAI และ Anthropic

ต้องการเรียนรู้เพิ่มเติมหรือไม่?

สำรวจส่วนอื่นๆ หรือเริ่มรับ GNK ทันที

รับโทเค็นฟรี →