Panjang dan Kerelevanan Konteks
Seimbangkan konteks menyeluruh dengan had token dan kerelevanan.
Panjang dan Kerelevanan Konteks ialah pelajaran Kejuruteraan Arahan AI percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kejuruteraan Arahan AI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kejuruteraan Arahan AI merangkumi sejumlah 4 pelajaran.
Belanjawan Tetingkap Context
Setiap model mempunyai tetingkap context maksimum — jumlah token yang boleh diprosesnya dalam satu panggilan API. Ini merangkumi masukan (arahan anda + sejarah) dan hasil (balasan model).
Memahami belanjawan ini amat penting: melebihinya bermakna arahan anda mungkin dipotong atau hasil mungkin hilang. Membazirkannya pada context yang tidak relevan bermakna model mempunyai ruang yang lebih kecil untuk menaakul tentang perkara yang penting.
Saiz Tetingkap Context
Model yang berbeza mempunyai had context yang berbeza. Setakat tahun 2025:
- GPT-4o: 128,000 token
- Claude Opus 4.5: 200,000 token
- Gemini 1.5 Pro: 1,000,000 token
- GPT-3.5 Turbo: 16,385 token
Tetingkap yang lebih besar membolehkan anda menyertakan lebih banyak context — tetapi kosnya lebih tinggi bagi setiap panggilan. Untuk kebanyakan tugasan, 8,000–16,000 token sudah mencukupi. Lebih besar tidak semestinya lebih baik jika itu bermakna kandungan yang tidak relevan turut disertakan.
import tiktoken
def estimate_tokens(text, model='gpt-4o'):
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
# Quick token budget calculator
models = {
'GPT-3.5 Turbo': 16385,
'GPT-4o': 128000,
'Claude Opus 4.5': 200000,
}
prompt = 'Explain the concept of technical debt in 500 words for a non-technical CEO.'
prompt_tokens = estimate_tokens(prompt)
for model_name, limit in models.items():
reserved_for_output = 1024
available = limit - prompt_tokens - reserved_for_output
print(f'{model_name}: limit={limit:,} | prompt={prompt_tokens} | '
f'context budget={available:,} tokens')Perkara yang Perlu Disertakan: Pemarkahan Kerelevanan
Sebelum menyertakan mana-mana bahagian context, tanya diri anda: Adakah maklumat ini mengubah jawapan?
Kerangka fikiran yang ringkas — berikan skor kepada setiap elemen context:
- Kerelevanan tinggi (sertakan): mempengaruhi tugasan secara langsung, membentuk kosa kata dan mengehadkan pilihan
- Kerelevanan sederhana (mungkin): memberikan nuansa yang berguna, tetapi hasilnya tetap OK tanpanya
- Kerelevanan rendah (ketepikan): benar tetapi tidak mempengaruhi jawapan dalam apa-apa cara
def score_context_element(element, task):
'''
Heuristic: does this context element directly constrain or shape the answer?
Returns: HIGH / MEDIUM / LOW
'''
high_signals = ['stack', 'constraint', 'deadline', 'must', 'cannot', 'budget',
'audience', 'goal', 'version', 'scale', 'limit']
low_signals = ['founded', 'headquartered', 'fun fact', 'history', 'awards',
'team building', 'company culture', 'office location']
el_lower = element.lower()
if any(s in el_lower for s in high_signals):
return 'HIGH'
if any(s in el_lower for s in low_signals):
return 'LOW'
return 'MEDIUM'
context_elements = [
'Our stack is Python FastAPI and PostgreSQL',
'We cannot use any paid third-party APIs',
'Our company was founded in Berlin in 2020',
'We need the solution to handle 1000 requests/second',
'We won a startup award last year',
]
for el in context_elements:
score = score_context_element(el, task='optimize our API')
print(f'[{score:6}] {el}')Masalah Hilang di Tengah
Penyelidikan menunjukkan bahawa model bahasa besar kurang memberikan perhatian kepada maklumat yang diletakkan di tengah arahan yang sangat panjang. Context kritikal yang diletakkan di tengah-tengah arahan sepanjang 50,000 token mungkin diabaikan sebahagiannya.
Amalan terbaik: letakkan context yang paling penting pada awal atau akhir arahan anda — model memberikan perhatian paling kuat kepada kedudukan ini.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Structure: critical constraint at the TOP, then the body, then the task
well_structured_prompt = (
# Critical constraint FIRST
'CRITICAL CONSTRAINT: Output must be under 50 words and contain no code.\n\n'
# Background in the middle
'Background: we are explaining our API rate limiting policy to non-technical support agents. '
'They handle billing inquiries and need to explain errors to customers. '
'Our rate limit is 100 requests per minute per API key.\n\n'
# Task at the end
'Task: Write the explanation.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=128,
messages=[{'role': 'user', 'content': well_structured_prompt}]
)
print(response.content[0].text)Membahagikan Dokumen Panjang
Apabila anda perlu bekerja dengan dokumen yang lebih panjang daripada belanjawan token anda, terdapat tiga pilihan:
- Ringkaskan dahulu: minta model memadatkan dokumen, kemudian gunakan ringkasan itu
- Bahagikan dan proses: bahagikan dokumen kepada beberapa bahagian, proses setiap bahagian, kemudian gabungkan hasilnya
- Ekstrak dan masukkan: ekstrak bahagian yang relevan sahaja sebelum memasukkannya dalam arahan
Jangan sesekali cuba memaksa dokumen yang melebihi tetingkap context — dokumen itu akan dipotong secara senyap.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
def chunk_and_summarize(long_text, chunk_size=2000):
'''Split text into chunks, summarize each, combine summaries.'''
words = long_text.split()
chunks = []
for i in range(0, len(words), chunk_size):
chunk = ' '.join(words[i:i + chunk_size])
chunks.append(chunk)
summaries = []
for idx, chunk in enumerate(chunks):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
messages=[{
'role': 'user',
'content': f'Summarize this section in 3 bullet points:\n\n{chunk}'
}]
)
summaries.append(f'Section {idx+1}:\n{response.content[0].text}')
return '\n\n'.join(summaries)
# Example usage
long_doc = 'word ' * 5000 # placeholder for a real document
print('Chunks needed:', len(long_doc.split()) // 2000 + 1)Penapisan Kerelevanan dalam Amalan
Penapisan kerelevanan bermaksud mengekstrak bahagian yang relevan sahaja daripada dokumen besar sebelum memasukkannya dalam arahan. Perkara ini amat penting untuk:
- Laporan panjang yang hanya mempunyai satu bahagian relevan
- Fail kod yang hanya memerlukan satu fungsi untuk disemak
- Rangkaian e-mel yang hanya memerlukan 3 mesej terakhir
- Skema pangkalan data yang hanya mempunyai 2 daripada 50 jadual yang relevan
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Step 1: Filter first, then ask
full_schema = (
'Table: users (id, name, email, created_at, role)\n'
'Table: products (id, name, price, stock, category_id)\n'
'Table: orders (id, user_id, total, status, created_at)\n'
'Table: order_items (id, order_id, product_id, quantity, unit_price)\n'
'Table: categories (id, name, parent_id)\n'
'Table: reviews (id, product_id, user_id, rating, body)\n'
'Table: sessions (id, user_id, token, expires_at)'
)
# Only include relevant tables for the specific question
relevant_context = (
'Relevant tables for this query:\n'
'Table: orders (id, user_id, total, status, created_at)\n'
'Table: order_items (id, order_id, product_id, quantity, unit_price)\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': f'{relevant_context}\nWrite SQL to find the top 5 orders by total value this month.'
}]
)
print(response.choices[0].message.content)Mengurus Sejarah Perbualan
Dalam perbualan berbilang giliran, sejarah bertambah pada setiap giliran. Menguruskannya dengan bijak membantu mengekalkan belanjawan token anda:
- Tetingkap gelongsor: simpan hanya N giliran terakhir
- Penyuntikan ringkasan: ringkaskan giliran lama secara berkala menjadi satu mesej
- Pengekstrakan fakta utama: jejak keputusan penting sebagai senarai berbulet dan masukkannya sebagai context sistem
- Tetapkan semula apabila topik berubah: mulakan sesi baharu apabila beralih kepada topik yang tidak berkaitan
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
def summarize_history(old_history):
'''Compress old conversation turns into a brief summary.'''
history_text = '\n'.join(
f'{m["role"].upper()}: {m["content"]}' for m in old_history
)
response = client.chat.completions.create(
model='gpt-4o',
max_tokens=200,
messages=[{
'role': 'user',
'content': (
'Summarize this conversation history in 3 bullet points. '
'Focus on decisions made and key information established.\n\n'
+ history_text
)
}]
)
return response.choices[0].message.content
# Example: compressing old history before continuing
old_turns = [
{'role': 'user', 'content': 'We are building a Kanban app.'},
{'role': 'assistant', 'content': 'Great, what is your stack?'},
{'role': 'user', 'content': 'React + FastAPI + PostgreSQL.'},
{'role': 'assistant', 'content': 'Good choice for a Kanban app.'}
]
summary = summarize_history(old_turns)
print('Summary of old history:', summary)Teknik Pemampatan Context
Apabila anda perlu menyertakan banyak context tetapi belanjawan token terhad, gunakan teknik pemampatan:
- Gunakan senarai berbulet berbanding prosa: senarai berbulet menggunakan 30–50% lebih sedikit token berbanding ayat
- Ringkaskan istilah yang sudah diketahui: “PostgreSQL 15” → “PG15” selepas penggunaan pertama
- Buang frasa pengisi: “Perlu dinyatakan bahawa...” → nyatakan fakta sahaja
- Gunakan format berstruktur: pasangan kunci:nilai lebih padat berbanding ayat
import tiktoken
def count_tokens(text):
enc = tiktoken.encoding_for_model('gpt-4o')
return len(enc.encode(text))
# Same information, different token counts
prose_context = (
'Our company is a startup that was founded recently and we are building '
'a data analytics platform. It is worth noting that we use Python for our backend. '
'Additionally, we have chosen PostgreSQL as our primary database. '
'Furthermore, we deploy on AWS using ECS containers.'
)
bullet_context = (
'Company: data analytics startup\n'
'Stack: Python backend, PostgreSQL, AWS ECS'
)
print('Prose context tokens: ', count_tokens(prose_context))
print('Bullet context tokens:', count_tokens(bullet_context))
print('Tokens saved:', count_tokens(prose_context) - count_tokens(bullet_context))
print('Same information? Yes — same facts, 60% fewer tokens')Pemilihan Context Dinamik
Dalam aplikasi AI untuk kegunaan sebenar, context sering dipilih secara dinamik berdasarkan perkara yang paling relevan dengan pertanyaan semasa. Proses ini dipanggil Penjanaan Diperkukuh dengan Pengambilan (RAG).
Daripada menyertakan semua dokumen, anda hanya mengambil semula dokumen yang paling serupa dari segi semantik dengan soalan pengguna dan memasukkannya ke dalam arahan. Ini menjadikan context ringkas dan sangat relevan.
# Simplified RAG pattern: retrieve relevant chunks, inject into prompt
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Simulated knowledge base (in production: vector database)
knowledge_base = [
{'id': 1, 'topic': 'billing', 'text': 'Refunds are processed within 5-7 business days.'},
{'id': 2, 'topic': 'shipping', 'text': 'Standard shipping takes 3-5 days.'},
{'id': 3, 'topic': 'returns', 'text': 'Returns accepted within 30 days with receipt.'},
{'id': 4, 'topic': 'warranty', 'text': 'All products come with a 1-year warranty.'},
]
def get_relevant_docs(user_query, kb, top_k=2):
'''Simplified relevance: keyword match. Production uses embeddings.'''
scored = [(doc, sum(w in user_query.lower() for w in doc['topic'].split())) for doc in kb]
scored.sort(key=lambda x: x[1], reverse=True)
return [doc['text'] for doc, _ in scored[:top_k]]
query = 'Can I return this and get my money back?'
relevant = get_relevant_docs(query, knowledge_base)
context = '\n'.join(relevant)
print('Injected context:', context)
response = client.chat.completions.create(
model='gpt-4o', max_tokens=80,
messages=[{'role': 'user', 'content': f'Context:\n{context}\n\nQuestion: {query}'}]
)
print('Answer:', response.choices[0].message.content.strip())Perancangan Belanjawan Context
Untuk aplikasi bagi kegunaan sebenar, rancang belanjawan context anda secara jelas sebelum membina aplikasi:
- Peruntukkan 25% tetingkap context untuk hasil
- Peruntukkan 10% untuk mesej sistem dan watak
- Peruntukkan 30% untuk sejarah perbualan yang paling terkini
- Simpan 35% untuk context dinamik (dokumen yang diambil semula, data yang dimasukkan)
Dokumentasikan peruntukan ini sebagai pemalar dalam kod supaya mudah dilaraskan apabila kes penggunaan anda berkembang.
# Context budget planner
MODEL_LIMIT = 128000 # GPT-4o
BUDGET = {
'output_reserve': int(MODEL_LIMIT * 0.25), # 32,000 tokens
'system_message': int(MODEL_LIMIT * 0.05), # 6,400 tokens
'recent_history': int(MODEL_LIMIT * 0.30), # 38,400 tokens
'dynamic_context': int(MODEL_LIMIT * 0.35), # 44,800 tokens
'task_prompt': int(MODEL_LIMIT * 0.05), # 6,400 tokens
}
total_input = sum(v for k, v in BUDGET.items() if k != 'output_reserve')
print('Context budget plan:')
for key, tokens in BUDGET.items():
pct = round(tokens / MODEL_LIMIT * 100)
print(f' {key:<20}: {tokens:>7,} tokens ({pct}%)')
print(f' {"total input":<20}: {total_input:>7,} tokens')
print(f' {"+ output reserve":<20}: {BUDGET["output_reserve"]:>7,} tokens')
print(f' {"= model limit":<20}: {MODEL_LIMIT:>7,} tokens')Apabila Kerelevanan Mengatasi Panjang
Context 500 token yang sangat relevan menghasilkan hasil yang lebih baik berbanding context 5,000 token yang hanya berkaitan secara longgar. Model menghasilkan hasil yang lebih baik apabila bahan yang perlu ditelitinya lebih sedikit.
Petanda bahawa context anda terlalu panjang dan tidak fokus:
- Model mengabaikan sebahagian kekangan anda
- Hasilnya terasa umum walaupun context yang diberikan panjang
- Model menjawab bahagian soalan yang salah
- Kependaman dan kos lebih tinggi daripada jangkaan
Apabila anda melihat petanda ini: kurangkan context dan jalankan semula.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Demonstrating: lean context produces sharper output
lean_context = (
'Task: write a 50-word product tagline.\n'
'Product: CLI tool that auto-generates Git commit messages from your diff.\n'
'Audience: senior developers who hate writing commit messages.\n'
'Tone: dry, witty, technical.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': lean_context}]
)
print('Lean context output:')
print(response.content[0].text.strip())Semakan Pengetahuan
Seorang pembangun sedang membina bot sembang dengan sejarah perbualan sepanjang 20 giliran. Selepas 20 giliran, tetingkap context hampir penuh. Apakah strategi BEST untuk meneruskan perbualan tanpa kehilangan context penting?
Panjang dan Kerelevanan Context — Ulang Kaji
Mengurus context dengan berkesan ialah kemahiran asas dalam penulisan arahan yang menjadi kritikal untuk aplikasi bagi kegunaan sebenar. Prinsip utama:
- Berikan skor kepada setiap elemen context: kerelevanan tinggi / sederhana / rendah — sertakan yang tinggi sahaja
- Letakkan kekangan kritikal pada awal atau akhir, bukan di tengah
- Gunakan format senarai berbulet berbanding prosa untuk menjimatkan 30–50% token
- Ringkaskan atau bahagikan dokumen yang melebihi belanjawan anda
- Dalam perbualan berbilang giliran, mampatkan sejarah lama daripada bermula semula
- Rancang belanjawan context anda secara jelas sebagai pemalar kod
Pelajari Kejuruteraan Arahan AI dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 53
- Pelajaran
- 199
Soalan Lazim
Adakah pelajaran “Panjang dan Kerelevanan Konteks” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kejuruteraan Arahan AI, termasuk “Panjang dan Kerelevanan Konteks”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kejuruteraan Arahan AI merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Panjang dan Kerelevanan Konteks”?
Seimbangkan konteks menyeluruh dengan had token dan kerelevanan. Anda berlatih Kejuruteraan Arahan AI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kejuruteraan Arahan AI?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kejuruteraan Arahan AI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Panjang dan Kerelevanan Konteks” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kejuruteraan Arahan AI ini?
Ya. Setiap pelajaran Kejuruteraan Arahan AI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Maksud Konteks dalam Pemberian Gesaan kepada Kecerdasan Buatan
- Memberikan Maklumat Latar
- Menetapkan Latar dengan Berkesan
- Panjang dan Kerelevanan Konteks