การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน
ส่งคำขอแบบง่ายไปยังโมเดลราคาประหยัดอย่าง 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การแคชแบบตรงตัวด้วย Redis
- การแคชเชิงความหมายด้วยเวกเตอร์ฝัง
- การแคชคำนำหน้าพรอมต์ของ OpenAI
- การรวมคำขอ การเลือกเส้นทางโมเดล และแดชบอร์ดต้นทุน