0Pricing
AI Engineering Academy · บทเรียน

การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน

ส่งคำขอแบบง่ายไปยังโมเดลราคาประหยัดอย่าง GPT-4o-mini และคำขอซับซ้อนไปยัง GPT-4o รวมคำขอที่ไม่เร่งด่วนเป็นชุด และสร้างแดชบอร์ดต้นทุนเพื่อติดตามค่าใช้จ่ายแยกตามฟีเจอร์

การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน เป็นบทเรียน AI Engineering Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Engineering Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน

คันโยกเพิ่มเติมสามประการเพื่อเพิ่มประสิทธิภาพค่าใช้จ่าย

หลังจากการแคชแล้ว ยังมีกลยุทธ์เพิ่มเติมอีกสามอย่างที่ช่วยลดค่าใช้จ่ายในการดำเนินงานของ LLM ได้อย่างมาก ได้แก่ การประมวลผลแบบชุด (เลื่อนคำขอที่ไม่เร่งด่วนแล้วส่งเป็นชุดในอัตรา API ที่ต่ำกว่า) การกำหนดเส้นทางโมเดล (ส่ง query ง่ายไปยังโมเดลราคาถูก และส่ง query ซับซ้อนไปยังโมเดลประสิทธิภาพสูง) และแดชบอร์ดค่าใช้จ่าย (ติดตามการใช้จ่ายแยกตามฟีเจอร์ เพื่อระบุจุดที่การเพิ่มประสิทธิภาพให้ผลตอบแทนสูงสุด หรือ ROI สูงสุด) เมื่อใช้ร่วมกัน กลยุทธ์เหล่านี้อาจลดค่าใช้จ่ายเพิ่มเติมจากการแคชได้อีก 40–60 เปอร์เซ็นต์

Batch API ของ OpenAI: ลดราคา 50% สำหรับงานแบบอะซิงโครนัส

Batch API ของ OpenAI รับไฟล์ JSONL ที่มีคำขอได้สูงสุด 50,000 รายการ และประมวลผลแบบอะซิงโครนัสภายใน 24 ชั่วโมง โดยคิดราคา50 เปอร์เซ็นต์ของราคามาตรฐาน เหมาะอย่างยิ่งสำหรับงานที่ไม่ต้องโต้ตอบทันที เช่น การสร้าง embedding ให้คลังเอกสารขนาดใหญ่ การสร้างคำอธิบายสินค้า การประเมินผลในช่วงกลางคืน หรือการประมวลผลข้อมูลฝึกอบรมล่วงหน้า ข้อแลกเปลี่ยนคือเวลาแฝง — ผลลัพธ์จะพร้อมใช้งานในอีกหลายชั่วโมง ไม่ใช่ทันที

import json
from openai import OpenAI

client = OpenAI()

# Prepare batch file
requests = [
    {
        'custom_id': f'req_{i}',
        'method': 'POST',
        'url': '/v1/chat/completions',
        'body': {
            'model': 'gpt-4o-mini',
            'messages': [
                {'role': 'user', 'content': f'Summarize: {document}'}
            ],
            'max_tokens': 150,
        }
    }
    for i, document in enumerate(documents_to_process)
]

# Write JSONL batch file
with open('/tmp/batch_requests.jsonl', 'w') as f:
    for req in requests:
        f.write(json.dumps(req) + '\n')

# Upload and submit batch
with open('/tmp/batch_requests.jsonl', 'rb') as f:
    batch_file = client.files.create(file=f, purpose='batch')

batch = client.batches.create(
    input_file_id=batch_file.id,
    endpoint='/v1/chat/completions',
    completion_window='24h',
)
print(f'Batch {batch.id} submitted, status: {batch.status}')

การตรวจสอบผลลัพธ์ของชุดงาน

หลังส่งชุดงานแล้ว ให้ตรวจสอบสถานะเป็นระยะจนกว่าจะเสร็จสมบูรณ์ (สถานะเปลี่ยนจาก in_progress เป็น completed) เมื่อเสร็จแล้ว ให้ดาวน์โหลดไฟล์ output ที่มีผลลัพธ์ของคำขอทั้งหมด แต่ละบรรทัดของ output เป็นออบเจ็กต์ JSON ที่มี custom_id จากคำขอ และมีฟิลด์ response หรือ error อย่างใดอย่างหนึ่ง — ต้องจัดการทั้งสองกรณีเสมอ เนื่องจากคำขอแต่ละรายการภายในชุดงานอาจล้มเหลวแยกจากกัน

import time

def wait_for_batch(batch_id: str, poll_interval: int = 60) -> str:
    while True:
        batch = client.batches.retrieve(batch_id)
        print(f'Status: {batch.status}, completed: {batch.request_counts.completed}')

        if batch.status == 'completed':
            return batch.output_file_id
        elif batch.status == 'failed':
            raise RuntimeError(f'Batch failed: {batch.errors}')

        time.sleep(poll_interval)

def download_batch_results(output_file_id: str) -> list[dict]:
    content = client.files.content(output_file_id)
    results = []
    for line in content.text.strip().split('\n'):
        results.append(json.loads(line))
    return results

output_file_id = wait_for_batch(batch.id)
results = download_batch_results(output_file_id)
for result in results[:3]:
    print(result['custom_id'], result.get('response', {}).get('body', {}).get('choices', [{}])[0])

การกำหนดเส้นทางโมเดล: จับคู่ความซับซ้อนกับขนาดโมเดล

การกำหนดเส้นทางโมเดลจะจัดสรรคำขอแต่ละรายการไปยังโมเดลที่มีราคาถูกที่สุดและยังสามารถจัดการคำขอนั้นได้อย่างมีประสิทธิภาพ GPT-4o-mini มีค่าใช้จ่ายถูกกว่า GPT-4o ประมาณ 30 เท่า แต่ยังจัดการงานจำแนกประเภท การดึงข้อมูล และการถามตอบสั้น ๆ ได้ดีไม่แพ้กัน ควรกำหนดเส้นทางให้ งานง่ายที่มีโครงสร้างชัดเจน ไปยังโมเดลขนาดเล็กราคาถูก และกำหนดเส้นทางให้ งานที่ต้องใช้เหตุผลซับซ้อน การสังเคราะห์ข้อมูลบริบทขนาดยาว และการสร้างเนื้อหาที่มีความละเอียดอ่อน ไปยังโมเดลขนาดใหญ่ที่มีประสิทธิภาพสูง แม้จะกำหนดเส้นทางให้คำขอ 60 เปอร์เซ็นต์ไปยังโมเดลราคาถูก ก็ช่วยลดค่าใช้จ่ายได้อย่างมาก

CHEAP_MODEL = 'gpt-4o-mini'
POWERFUL_MODEL = 'gpt-4o'

def classify_query_complexity(query: str) -> str:
    # Heuristic-based routing (replace with ML classifier for production)
    words = query.split()
    has_code = any(c in query for c in ['```', 'def ', 'class ', 'SELECT ', 'function '])
    is_multi_step = any(w in query.lower() for w in ['compare', 'analyze', 'explain why', 'evaluate'])
    is_long = len(words) > 50

    if has_code or is_multi_step or is_long:
        return POWERFUL_MODEL
    return CHEAP_MODEL

def routed_completion(messages: list[dict]) -> str:
    user_query = messages[-1].get('content', '')
    model = classify_query_complexity(user_query)
    print(f'Routing to: {model}')
    response = client.chat.completions.create(model=model, messages=messages)
    return response.choices[0].message.content

การกำหนดเส้นทางโดยใช้ LLM เพื่อความแม่นยำที่สูงขึ้น

การกำหนดเส้นทางด้วยหลักเกณฑ์ทำได้รวดเร็ว แต่เปราะบาง วิธีที่แม่นยำกว่าคือใช้ โมเดลจำแนกประเภทขนาดเล็กราคาถูก เพื่อตัดสินใจว่าจะกำหนดเส้นทางไปยังโมเดลใด คุณอาจปรับแต่งโมเดลขนาดเล็กด้วยตัวอย่างคำถามง่ายและซับซ้อนในโดเมนของคุณ หรือใช้การเขียนคำสั่งแบบตัวอย่างจำนวนน้อยร่วมกับ GPT-4o-mini เอง การเรียกใช้ตัวจำแนกประเภทมีค่าใช้จ่ายเพียงโทเค็นอินพุตไม่กี่ร้อยรายการ ซึ่งน้อยกว่าค่าใช้จ่ายจากการกำหนดเส้นทางคำถามซับซ้อนไปยังโมเดลราคาถูกแล้วได้คำตอบผิดอย่างมาก

CLASSIFIER_SYSTEM = '''You are a query complexity classifier.
Classify the user query as SIMPLE or COMPLEX.
SIMPLE: factual lookup, extraction, classification with clear answer.
COMPLEX: multi-step reasoning, synthesis, comparison, code generation, long-form writing.
Reply with just SIMPLE or COMPLEX.'''

def llm_classify_complexity(query: str) -> str:
    response = client.chat.completions.create(
        model='gpt-4o-mini',  # use cheap model for routing
        messages=[
            {'role': 'system', 'content': CLASSIFIER_SYSTEM},
            {'role': 'user', 'content': query},
        ],
        max_tokens=10,
        temperature=0,
    )
    label = response.choices[0].message.content.strip()
    return POWERFUL_MODEL if label == 'COMPLEX' else CHEAP_MODEL

การติดตามค่าใช้จ่ายแยกตามฟีเจอร์

หากต้องการทราบว่าควรให้ความสำคัญกับการปรับปรุงประสิทธิภาพส่วนใด คุณต้องติดตาม ค่าใช้จ่ายต่อฟีเจอร์ของแอปพลิเคชัน ไม่ใช่เพียงยอดใช้จ่ายรวม ให้กำกับการเรียกใช้ LLM ทุกครั้งด้วยป้ายกำกับฟีเจอร์ และสะสมค่าใช้จ่ายโทเค็นแยกตามป้ายกำกับนั้น ฟีเจอร์ 'การสรุปผลการค้นหา' อาจใช้ 40 เปอร์เซ็นต์ของงบประมาณ แต่รองรับคำขอเพียง 5 เปอร์เซ็นต์ จึงเป็นเป้าหมายสำคัญที่ควรปรับปรุง ส่วนฟีเจอร์ 'การเริ่มต้นใช้งานของผู้ใช้' อาจมีค่าใช้จ่ายสูง แต่รองรับขั้นตอนการใช้งานที่มีคุณค่าสูงซึ่งคุณไม่ต้องการลดคุณภาพลง

from collections import defaultdict

cost_tracker = defaultdict(lambda: {'prompt_tokens': 0, 'completion_tokens': 0, 'cost_usd': 0.0})

MODEL_PRICING = {
    'gpt-4o-mini': {'input': 0.15 / 1e6, 'output': 0.60 / 1e6},
    'gpt-4o':      {'input': 2.50 / 1e6, 'output': 10.00 / 1e6},
}

def tracked_completion(feature: str, messages: list[dict], model: str = 'gpt-4o-mini') -> str:
    response = client.chat.completions.create(model=model, messages=messages)
    usage = response.usage
    pricing = MODEL_PRICING.get(model, {'input': 0, 'output': 0})
    cost = usage.prompt_tokens * pricing['input'] + usage.completion_tokens * pricing['output']

    cost_tracker[feature]['prompt_tokens'] += usage.prompt_tokens
    cost_tracker[feature]['completion_tokens'] += usage.completion_tokens
    cost_tracker[feature]['cost_usd'] += cost

    return response.choices[0].message.content

def print_cost_report():
    print(f'{"Feature":<30} {"Prompt":<10} {"Completion":<12} {"Cost USD":<12}')
    for feature, stats in sorted(cost_tracker.items(), key=lambda x: -x[1]['cost_usd']):
        print(f'{feature:<30} {stats["prompt_tokens"]:<10} {stats["completion_tokens"]:<12} ${stats["cost_usd"]:.4f}')

การสร้างแดชบอร์ดค่าใช้จ่ายอย่างง่าย

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

from fastapi import FastAPI
import datetime

app = FastAPI()

async def record_cost(feature: str, model: str, prompt_tokens: int, completion_tokens: int):
    pricing = MODEL_PRICING.get(model, {'input': 0, 'output': 0})
    cost = prompt_tokens * pricing['input'] + completion_tokens * pricing['output']
    today = datetime.date.today().isoformat()
    key = f'cost:{today}:{feature}:{model}'
    await async_r.incrbyfloat(key, cost)
    await async_r.expire(key, 86400 * 30)  # keep 30 days

@app.get('/dashboard/costs')
async def cost_dashboard():
    today = datetime.date.today().isoformat()
    pattern = f'cost:{today}:*'
    costs = {}
    async for key in async_r.scan_iter(match=pattern):
        value = await async_r.get(key)
        parts = key.split(':')
        feature_model = ':'.join(parts[2:])
        costs[feature_model] = float(value or 0)
    return {'date': today, 'costs': costs, 'total': sum(costs.values())}

การแจ้งเตือนงบประมาณรายเดือน

ตั้ง การแจ้งเตือนงบประมาณรายเดือน เพื่อจับสัญญาณค่าใช้จ่ายที่พุ่งสูงอย่างไม่คาดคิดก่อนจะกลายเป็นใบเรียกเก็บเงินก้อนใหญ่ คำนวณค่าใช้จ่ายรายวันแบบเลื่อนจากตัวติดตามค่าใช้จ่าย คาดการณ์ไปจนถึงสิ้นเดือน และส่งการแจ้งเตือนใน Slack เมื่อค่าคาดการณ์เกินเกณฑ์งบประมาณของคุณ การคาดการณ์อย่างง่าย — ค่าใช้จ่ายรายวัน * จำนวนวันที่เหลือ — ช่วยตรวจพบคำขอที่พุ่งสูงผิดปกติได้ตั้งแต่เนิ่น ๆ แม้รูปแบบการใช้งานจริงจะไม่เป็นเชิงเส้นก็ตาม

import datetime
import httpx

SLACK_WEBHOOK = 'https://hooks.slack.com/services/YOUR/WEBHOOK'
MONTHLY_BUDGET_USD = 500.0

async def check_budget_alert():
    today = datetime.date.today()
    days_in_month = 30
    day_of_month = today.day
    days_remaining = days_in_month - day_of_month

    # Sum today's costs
    today_total = sum(cost_tracker[f]['cost_usd'] for f in cost_tracker)
    avg_daily = today_total  # simplified: just today's spend
    projected_month = avg_daily * days_in_month

    if projected_month > MONTHLY_BUDGET_USD:
        message = (
            f'LLM Budget Alert: Projected monthly spend ${projected_month:.2f} '
            f'exceeds budget ${MONTHLY_BUDGET_USD:.2f}. '
            f'Today spend: ${today_total:.2f}'
        )
        async with httpx.AsyncClient() as client:
            await client.post(SLACK_WEBHOOK, json={'text': message})

คิวคำขอสำหรับจัดการขีดจำกัดอัตรา

เมื่อปริมาณการใช้งานพุ่งสูง คำขอจะชนขีดจำกัดอัตราของ OpenAI และล้มเหลวด้วย 429 Too Many Requests คิวคำขอจะช่วยพักคำขอขาเข้าและส่งคำขอออกไปด้วยอัตราที่ควบคุมไว้ ทำให้ช่วงที่การใช้งานพุ่งสูงมีความราบรื่นขึ้น สำหรับระบบใช้งานจริง ให้ใช้คิวแบบอะซิงก์ที่มี Redis หรือระบบตัวกลางข้อความอย่าง RabbitMQ รองรับ และใช้ตรรกะการลองใหม่แบบหน่วงเวลาเพิ่มขึ้นเป็นทวีคูณสำหรับข้อผิดพลาด 429 ชั่วคราว

import asyncio
from asyncio import Queue

class RateLimitedLLMClient:
    def __init__(self, requests_per_minute: int = 500):
        self.rpm = requests_per_minute
        self.queue: Queue = Queue(maxsize=1000)
        self.interval = 60.0 / requests_per_minute

    async def start(self):
        asyncio.create_task(self._worker())

    async def _worker(self):
        while True:
            request_fn, future = await self.queue.get()
            try:
                result = await request_fn()
                future.set_result(result)
            except Exception as e:
                future.set_exception(e)
            await asyncio.sleep(self.interval)

    async def submit(self, request_fn) -> str:
        loop = asyncio.get_event_loop()
        future = loop.create_future()
        await self.queue.put((request_fn, future))
        return await future

การรวมทุกอย่างเข้าด้วยกัน: ชุดเครื่องมือเพิ่มประสิทธิภาพค่าใช้จ่าย

ชุดเครื่องมือเพิ่มประสิทธิภาพค่าใช้จ่ายของ LLM ที่ครบถ้วนจะทำงานเป็นชั้น ๆ ได้แก่ แคชแบบตรงกันทุกประการ ซึ่งตัดการเรียกใช้สำหรับคำถามซ้ำที่เหมือนกันทุกประการ แคชเชิงความหมาย ซึ่งตัดการเรียกใช้สำหรับคำถามที่คล้ายกัน การแคชคำนำหน้า ซึ่งลดค่าใช้จ่ายอินพุตสำหรับการเรียกใช้ที่เหลือทั้งหมด การกำหนดเส้นทางโมเดล ซึ่งใช้โมเดลราคาถูกกับคำถามง่าย การประมวลผลเป็นชุด ซึ่งเลื่อนงานที่ไม่เร่งด่วนเพื่อรับส่วนลด 50 เปอร์เซ็นต์ และ แดชบอร์ดกับการแจ้งเตือน ซึ่งช่วยให้มองเห็นและควบคุมค่าใช้จ่ายได้ ควรนำมาใช้อย่างค่อยเป็นค่อยไป โดยเรียงตามผลกระทบที่มีต่อแอปพลิเคชันของคุณ

# Decision framework for cost optimization priority:
#
# 1. Enable prefix caching (free, zero effort, automatic)
# 2. Add exact caching (high hit rate for FAQ/support bots)
# 3. Add model routing (simple heuristics first, ML classifier later)
# 4. Add semantic caching (complex, high ROI for paraphrase-heavy use cases)
# 5. Enable batch API (only for non-real-time pipelines)
# 6. Build cost dashboard (essential for ongoing monitoring)
#
# Typical combined result in a customer support bot:
# Before: $1,000/month
# After step 1-2: $400/month (-60%)
# After step 3-4: $200/month (-50% of remaining)
# After step 5-6: $150/month and visible

การสำรองแบบต่อเนื่องเมื่อโมเดลราคาถูกล้มเหลว

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

async def routing_with_fallback(messages: list[dict], min_length: int = 50) -> str:
    # Try cheap model first
    cheap_response = await async_client.chat.completions.create(
        model=CHEAP_MODEL, messages=messages, temperature=0.0
    )
    answer = cheap_response.choices[0].message.content

    # Quality check: response too short indicates poor answer
    if len(answer.strip()) < min_length:
        print(f'Cheap model answer too short ({len(answer)} chars), escalating...')
        powerful_response = await async_client.chat.completions.create(
            model=POWERFUL_MODEL, messages=messages, temperature=0.0
        )
        return powerful_response.choices[0].message.content

    return answer

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจของคุณเกี่ยวกับการประมวลผลเป็นชุด การกำหนดเส้นทางโมเดล และแดชบอร์ดค่าใช้จ่ายจากบทเรียนนี้

ทบทวนบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า OpenAI Batch API มอบส่วนลด 50 เปอร์เซ็นต์สำหรับงานอะซิงก์ที่ไม่ต้องการผลลัพธ์แบบเรียลไทม์ การกำหนดเส้นทางโมเดลใช้โมเดลราคาถูกอย่าง GPT-4o-mini สำหรับงานง่าย และใช้โมเดลราคาแพงสำหรับงานซับซ้อน ส่วน การติดตามค่าใช้จ่ายแยกตามฟีเจอร์จะแสดงให้เห็นว่าส่วนใดของแอปพลิเคชันใช้งบประมาณมากที่สุด เพื่อให้คุณจัดลำดับความสำคัญของการปรับปรุงได้อย่างมีประสิทธิภาพ เมื่อใช้ร่วมกับกลยุทธ์การแคชจากบทเรียนก่อนหน้า เทคนิคเหล่านี้สามารถลดค่าใช้จ่ายโครงสร้างพื้นฐานของ LLM ได้ 60–80 เปอร์เซ็นต์ ขณะนี้คุณเรียนจบหลักสูตรการแคช LLM และการเพิ่มประสิทธิภาพค่าใช้จ่ายแล้ว

คำถามที่พบบ่อย

บทเรียน “การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Engineering Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน”

ส่งคำขอแบบง่ายไปยังโมเดลราคาประหยัดอย่าง GPT-4o-mini และคำขอซับซ้อนไปยัง GPT-4o รวมคำขอที่ไม่เร่งด่วนเป็นชุด และสร้างแดชบอร์ดต้นทุนเพื่อติดตามค่าใช้จ่ายแยกตามฟีเจอร์ คุณปฏิบัติ AI Engineering Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Engineering Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Engineering Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Engineering Academy นี้ได้ไหม

ได้ บทเรียน AI Engineering Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแคชแบบตรงตัวด้วย Redis
  2. การแคชเชิงความหมายด้วยเวกเตอร์ฝัง
  3. การแคชคำนำหน้าพรอมต์ของ OpenAI
  4. การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน
← กลับไปที่ AI Engineering Academy