Menerapkan ReAct dari Awal
Tulis implementasi Python 100 baris tanpa LangChain: uraikan baris Action, jalankan alat, lalu ulangi hingga Final Answer.
Menerapkan ReAct dari Awal 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.
Bangun Perulangannya Sendiri
Anda dapat menulis ReAct dalam sekitar 100 baris Python — tanpa memerlukan kerangka kerja. Melakukannya sekali akan membangun intuisi tentang hal-hal yang diabstraksikan oleh kerangka kerja.
Step 1: Define Tools
import json, math
def calculator(expression: str) -> str:
try:
return str(eval(expression, {'__builtins__': {}}, vars(math)))
except Exception as e:
return f'Error: {e}'
def search_wikipedia(query: str) -> str:
# placeholder — call a real search API
return f'Wikipedia summary for: {query}'
TOOLS = {
'calculator': calculator,
'search_wikipedia': search_wikipedia,
}
print(calculator('2 + 2 * sqrt(16)'))
print(search_wikipedia('agents'))
Step 2: Tool Schemas
schemas = [
{'type': 'function', 'function': {
'name': 'calculator',
'description': 'Evaluate a math expression like 2 + 2 * sqrt(16)',
'parameters': {'type': 'object', 'properties': {'expression': {'type': 'string'}}, 'required': ['expression']}
}},
{'type': 'function', 'function': {
'name': 'search_wikipedia',
'description': 'Search Wikipedia and return a summary',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}}
]
import json
print(json.dumps(schemas, indent=2))
Step 3: System Prompt
system = '''
You are a research assistant. Use the available tools when needed.
Think step by step. If you have enough information, give a final answer.
'''
print(system.strip())
Step 4: The Loop
from openai import OpenAI
client = OpenAI()
def react(question, max_steps=10):
messages = [
{'role': 'system', 'content': system},
{'role': 'user', 'content': question}
]
for step in range(max_steps):
r = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=schemas,
)
msg = r.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tc in msg.tool_calls:
args = json.loads(tc.function.arguments)
try:
result = TOOLS[tc.function.name](**args)
except Exception as e:
result = f'Tool error: {e}'
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': str(result)})
return 'Step limit reached.'Step 5: Run It
answer = react('What is the population of Tokyo times the square root of pi?')
print(answer)Langkah 6: Tambahkan Pencatatan Log
Catat setiap langkah untuk debugging:
def react_verbose(question, max_steps=10):
messages = [...]
for step in range(max_steps):
r = client.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=schemas)
msg = r.choices[0].message
print(f'[step {step}] thought: {msg.content}')
if msg.tool_calls:
for tc in msg.tool_calls:
print(f'[step {step}] action: {tc.function.name}({tc.function.arguments})')
...Langkah 7: Penghitung Langkah sebagai Alat
Beberapa agen menyertakan jumlah langkah dalam perintah sistem agar model mengetahui kapan harus mencapai konvergensi:
system = f'You have at most {MAX_STEPS} steps. Step {current_step}/{MAX_STEPS}. ...'Langkah 8: Format Jawaban Akhir
Jika Anda menginginkan keluaran terstruktur, paksa pemanggilan alat terakhir:
tools.append({'type': 'function', 'function': {
'name': 'final_answer',
'description': 'Submit the final answer to the user.',
'parameters': {'type': 'object', 'properties': {'answer': {'type': 'string'}}, 'required': ['answer']}
}})
# Loop terminates when final_answer is called.Langkah 9: Kesalahan Alat
Selalu kembalikan kesalahan sebagai hasil alat agar agen dapat memulihkan diri:
try:
result = TOOLS[name](**args)
except Exception as e:
result = f'TOOL ERROR: {type(e).__name__}: {e}'
# Model sees the error and can try a different approach.Langkah 10: Pemanggilan Alat Paralel
Jika msg.tool_calls memiliki beberapa entri, jalankan semuanya secara paralel:
import asyncio
async def run_tools(tool_calls):
async def run_one(tc):
args = json.loads(tc.function.arguments)
return tc.id, TOOLS[tc.function.name](**args)
return await asyncio.gather(*[run_one(tc) for tc in tool_calls])Langkah 11: Membatasi Percakapan
Bahkan dalam MAX_STEPS, daftar pesan dapat membengkak. Pangkas berdasarkan jumlah token di antara giliran:
if total_tokens(messages) > 6000:
messages = trim_messages(messages)Langkah 12: Memperkuat untuk Produksi
Untuk produksi, tambahkan: batas waktu pada pemanggilan alat, kuota per alat, percobaan ulang dengan penundaan bertahap saat API gagal, dan pencatatan jejak lengkap. Namun, perulangan di atas adalah kerangka dasar Anda.
Penanganan Kesalahan Alat
Apa yang harus Anda lakukan ketika sebuah alat memunculkan pengecualian?
Ringkasan
ReAct dalam sekitar 80 baris: daftar pesan + perulangan while + tabel pengiriman. Kerangka kerja menambahkan penyempurnaan, tetapi inti utamanya adalah ini.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menerapkan ReAct dari Awal” gratis?
Ya — teks lengkap “Menerapkan ReAct dari Awal” 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 “Menerapkan ReAct dari Awal”?
Tulis implementasi Python 100 baris tanpa LangChain: uraikan baris Action, jalankan alat, lalu ulangi hingga Final Answer. 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 “Menerapkan ReAct dari Awal” 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
- ReAct: Pola Bernalar + Bertindak
- Menerapkan ReAct dari Awal
- Kumpulan Alat Umum (Web, Kalkulator, RAG)
- Mendeteksi dan Memulihkan dari Galat Alat