Mencatat Panggilan Alat dan Masukan/Keluaran
Ketahui hal yang perlu dicatat pada setiap langkah: nama alat, argumen masukan, keluaran, latensi, galat, dan id rentang induk.
Mencatat Panggilan Alat dan Masukan/Keluaran adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Yang Dicatat pada Setiap Langkah
Untuk setiap span, catat:
- Nama langkah (llm_call, tool_call, retrieve)
- Masukan (pesan, argumen alat, query)
- Keluaran (respons, hasil alat)
- Metadata (model, latensi, jumlah token, biaya)
- Informasi kesalahan jika gagal
Pembantu span Buatan Sendiri
Tanpa kerangka kerja, gunakan pembantu minimal:
from contextlib import contextmanager
import time, uuid
@contextmanager
def span(name, trace_id, parent_id=None):
span_id = str(uuid.uuid4())
start = time.time()
record = {'trace_id': trace_id, 'span_id': span_id, 'parent_id': parent_id, 'name': name, 'start': start}
try:
yield record
except Exception as e:
record['error'] = str(e)
raise
finally:
record['duration_ms'] = (time.time() - start) * 1000
save_span(record)Using It
trace_id = str(uuid.uuid4())
with span('llm_call_planner', trace_id) as s:
s['model'] = 'gpt-4o-mini'
s['messages_in'] = messages
response = client.chat.completions.create(model='gpt-4o-mini', messages=messages)
s['response'] = response.choices[0].message.content
s['tokens_in'] = response.usage.prompt_tokens
s['tokens_out'] = response.usage.completion_tokensPenyusunan span Bertingkat
Teruskan parent_id agar span membentuk pohon:
with span('agent_step', trace_id) as parent:
with span('llm_call', trace_id, parent_id=parent['span_id']):
...
with span('tool_call:search', trace_id, parent_id=parent['span_id']):
...Pencatatan Pemanggilan Alat
Khusus untuk pemanggilan alat, catat:
- Nama alat
- Argumen (JSON)
- Hasil (JSON, mungkin dipotong)
- Latensi
- Kesalahan (jika ada)
Potong Payload Besar
Beberapa hasil alat berukuran sangat besar (HTML 200 KB). Potong sebelum disimpan:
def safe_payload(obj, max_chars=8000):
s = json.dumps(obj)
return s if len(s) <= max_chars else s[:max_chars] + '...[truncated]'Penyuntingan PII
Hapus informasi pribadi sebelum menyimpannya:
import re
EMAIL_RE = re.compile(r'[\w\.-]+@[\w\.-]+')
def redact(text):
return EMAIL_RE.sub('[email]', text)
print(redact("Contact me at alice@example.com for details."))
Keluaran Log Terstruktur
Keluarkan satu catatan JSON untuk setiap span — teruskan ke ELK, Loki, Datadog, atau BigQuery:
import json
import sys
def save_span(record):
print(json.dumps(record), file=sys.stderr, flush=True)
demo_record = {'span': 'call_llm', 'duration_ms': 120, 'ok': True}
save_span(demo_record)
print("Logged span:", json.dumps(demo_record))
Kaitkan dengan Sesi Pengguna
Sertakan session_id dan user_id dalam setiap span agar Anda dapat memfilter trace berdasarkan pengguna nanti.
Pengambilan Sampel
Untuk agen dengan volume tinggi, ambil sampel:
import random
def should_trace(user_id):
return random.random() < 0.10 # 10% of traces
# Always trace errors and slow runs.
random.seed(42)
sampled = sum(should_trace(i) for i in range(1000))
print(f"Traced {sampled} out of 1000 calls (~10% target)")
Putar Ulang dari Trace
Simpan input lengkap (pesan, alat, argumen) agar Anda dapat menjalankan kembali sebuah trace dengan instruksi baru untuk menguji perbaikan. Ini adalah dasar pengembangan yang berfokus pada evaluasi.
Potong Muatan Data Besar?
Mengapa keluaran alat yang besar perlu dipotong dalam log?
Ringkasan
Setiap langkah, setiap input, setiap output — terstruktur, bertingkat, dan diambil sampelnya. Inilah bahan mentah untuk semua hal lain dalam observabilitas.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mencatat Panggilan Alat dan Masukan/Keluaran” gratis?
Ya — teks lengkap “Mencatat Panggilan Alat dan Masukan/Keluaran” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mencatat Panggilan Alat dan Masukan/Keluaran”?
Ketahui hal yang perlu dicatat pada setiap langkah: nama alat, argumen masukan, keluaran, latensi, galat, dan id rentang induk. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Mencatat Panggilan Alat dan Masukan/Keluaran” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Agen Memerlukan Pelacakan
- Mencatat Panggilan Alat dan Masukan/Keluaran
- Latensi dan Biaya per Langkah
- Memvisualisasikan Eksekusi Agen (Langfuse, LangSmith)