Mengembalikan Hasil ke Model
Format keluaran alat sebagai pesan berperan alat agar model dapat membacanya dan melanjutkan percakapan.
Mengembalikan Hasil ke Model adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 4 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.
Pesan Hasil Alat
Setelah menjalankan alat, beri tahu model hasilnya melalui pesan alat:
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id, # MUST match the assistant's tool_call.id
'content': json.dumps(result)
})Konten Harus Berupa String
OpenAI mengharapkan content berupa string. Serialisasikan objek dengan json.dumps:
# Bad — will error
messages.append({'role': 'tool', 'tool_call_id': id, 'content': {'temp': 18}})
# Good
messages.append({'role': 'tool', 'tool_call_id': id, 'content': '{"temp": 18}'})Format Anthropic
Anthropic menggunakan blok konten di dalam pesan pengguna:
messages.append({
'role': 'user',
'content': [{
'type': 'tool_result',
'tool_use_id': 'toolu_abc',
'content': json.dumps(result)
}]
})Mengembalikan Error
Jika alat gagal, kembalikan error tersebut — jangan berpura-pura bahwa alat berhasil. Model dapat memulihkannya:
try:
result = run_tool(...)
content = json.dumps({'ok': True, 'data': result})
except Exception as e:
content = json.dumps({'ok': False, 'error': str(e)})
messages.append({'role': 'tool', 'tool_call_id': id, 'content': content})Pola Banyak Hasil
Untuk panggilan alat paralel, tambahkan setiap hasil dengan ID yang sesuai:
for tc in message.tool_calls:
result = dispatch(tc)
messages.append({
'role': 'tool',
'tool_call_id': tc.id,
'content': json.dumps(result)
})Keluaran Besar: Ringkas
Jika alat mengembalikan HTML berukuran 100 KB, mengirimkan semuanya ke model akan membuang token dan mengaburkan fokus. Ringkas atau potong terlebih dahulu:
def truncate(text, max_chars=4000):
if len(text) <= max_chars:
return text
return text[:max_chars] + f'\n...[truncated, {len(text)-max_chars} more chars]'
sample = "x" * 4500
result = truncate(sample, max_chars=50)
print(result)
Skema yang Selalu Sama
Meskipun hasilnya berbeda, misalnya berhasil / error / tidak ditemukan, pertahankan skema keluaran yang stabil. Model lebih andal dengan struktur yang konsisten:
from typing import TypedDict, Literal, Optional, Any
class ToolResult(TypedDict):
status: Literal['ok', 'not_found', 'error']
data: Optional[Any]
error: Optional[str]
def make_result(status, data=None, error=None) -> ToolResult:
return {'status': status, 'data': data, 'error': error}
print(make_result('ok', data={'temp': 72}))
print(make_result('not_found', error='city not found'))Sertakan Petunjuk Metadata
Bantu model menafsirkan hasil dengan menyertakan petunjuk dalam konten:
content = json.dumps({
'data': rows,
'note': 'Returned 50 rows (most recent first). There may be more matches.'
})Data Biner
Jangan menyisipkan blob besar dalam format base64 ke pesan alat. Sebagai gantinya, simpan data tersebut di penyimpanan lalu kembalikan URL atau ID:
result = {
'image_path': '/tmp/chart-abc.png',
'thumbnail_url': 'https://...',
'caption': 'Sales by quarter, 2024'
}
for k, v in result.items():
print(f"{k}: {v}")
Panggil Model Lagi
Setelah menambahkan semua hasil alat, panggil model lagi — model akan menghasilkan jawaban final atau memanggil alat lainnya:
class Msg:
def __init__(self, tool_calls=None, content=None):
self.tool_calls = tool_calls or []
self.content = content
class ToolCall:
def __init__(self, name, args):
self.name = name
self.args = args
def call_model(messages, tools):
if len(messages) < 4:
return Msg(tool_calls=[ToolCall('get_weather', {'city': 'Paris'})])
return Msg(content='It is sunny in Paris.')
messages = [{'role': 'user', 'content': 'Weather in Paris?'}]
tools = ['get_weather']
message = call_model(messages, tools)
while message.tool_calls:
for tc in message.tool_calls:
result = f'Result of {tc.name}({tc.args})'
messages.append({'role': 'tool', 'name': tc.name, 'content': result})
print('Tool call:', tc.name, '->', result)
message = call_model(messages, tools)
print('Final answer:', message.content)
Mengaudit Keluaran Alat
Catat setiap (tool_call_id, args, result) untuk proses debug. Saat agen melakukan sesuatu yang aneh, log hasil alat adalah tempat pertama yang harus diperiksa.
Format Hasil Alat
Apa yang dirujuk oleh tool_call_id dalam pesan alat?
Rangkuman
Sekarang Anda menguasai seluruh putaran panggilan alat. Kursus berikutnya: memori — pilar ketiga agen.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengembalikan Hasil ke Model” gratis?
Ya — teks lengkap “Mengembalikan Hasil ke Model” 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 “Mengembalikan Hasil ke Model”?
Format keluaran alat sebagai pesan berperan alat agar model dapat membacanya dan melanjutkan percakapan. 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 4 dari 4.
Berapa lama pelajaran “Mengembalikan Hasil ke Model” 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
- Cara Kerja Pemanggilan Fungsi
- Mendefinisikan Skema Alat (JSON Schema)
- Memilih Alat Saat Waktu Berjalan
- Mengembalikan Hasil ke Model