Membangun Agent ReAct dengan LangChain
Rangkai agent ReAct lengkap menggunakan AgentExecutor milik LangChain dengan alat pencarian web, alat kalkulator, dan alat pencarian dokumen, lalu telusuri langkah-langkah penalarannya.
Membangun Agent ReAct dengan LangChain adalah pelajaran AI Engineering Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Ekosistem Agen LangChain
LangChain menyediakan tumpukan lengkap untuk membangun agen: alat menentukan apa yang dapat dilakukan agen, prompt memberinya instruksi dan format penalaran, LLM melakukan pemikiran, dan AgentExecutor menjalankan perulangan yang meneruskan panggilan alat serta memberikan kembali observasi. Anda mengonfigurasi setiap bagian secara terpisah sehingga dapat mengganti komponen tanpa menulis ulang semuanya.
Merakit Agen ReAct
Cara tercepat untuk membangun agen ReAct di LangChain adalah dengan create_react_agent. Anda meneruskan LLM, daftar alat, dan templat prompt kepadanya. Fungsi ini mengembalikan objek yang dapat dijalankan dan secara otomatis menghasilkan langkah Pemikiran/Tindakan/Observasi. Bungkus objek tersebut dalam AgentExecutor untuk mengelola perulangannya.
from langchain import hub
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
# 1. Define tools
@tool
def search(query: str) -> str:
'''Search the web for current information. Input: a search query string.'''
return f'Search results for "{query}": [mock result]'
@tool
def calculator(expression: str) -> str:
'''Evaluate a math expression. Input: a valid Python math expression.'''
try:
return str(eval(expression))
except Exception as e:
return str(e)
tools = [search, calculator]
# 2. Load a ReAct prompt template
prompt = hub.pull('hwchase17/react')
# 3. Create the agent
llm = ChatOpenAI(model='gpt-4o', temperature=0)
agent = create_react_agent(llm, tools, prompt)Menjalankan dengan AgentExecutor
AgentExecutor mengelola perulangan Pemikiran/Tindakan/Observasi. Teruskan verbose=True selama pengembangan untuk mencetak setiap langkah ke konsol — jejak ini sangat berguna untuk menelusuri kesalahan. Parameter max_iterations menjadi pengaman Anda terhadap perulangan tak terbatas.
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # Print each step
max_iterations=10, # Safety limit
handle_parsing_errors=True # Don't crash on format errors
)
# Invoke with a user question
result = agent_executor.invoke({
'input': 'What is the square root of 144 multiplied by the number of days in a leap year?'
})
print('Final answer:', result['output'])Membaca Jejak Rinci
Jejak rinci menunjukkan dengan tepat bagaimana agen melakukan penalaran. Setiap iterasi mencetak Pemikiran model, Tindakan yang dipilihnya, dan Observasi dari alat. Dengan demikian, Anda dapat mengetahui secara tepat di mana agen melakukan kesalahan — apakah agen memilih alat yang salah, meneruskan argumen yang salah, atau salah membaca observasi.
# Example verbose output from AgentExecutor:
#
# > Entering new AgentExecutor chain...
# Thought: I need to find the square root of 144 first, then multiply by days in a leap year.
# Action: calculator
# Action Input: 144 ** 0.5
# Observation: 12.0
# Thought: 12.0 times 366 days in a leap year.
# Action: calculator
# Action Input: 12.0 * 366
# Observation: 4392.0
# Thought: I have the final answer.
# Final Answer: 4392.0
# > Finished chain.Menggunakan Alat Bawaan LangChain
LangChain menyediakan banyak alat siap pakai untuk tugas-tugas umum. Anda dapat menambahkan alat pencarian web dari langchain_community.tools tanpa menulis kode apa pun. Alat-alat ini menangani autentikasi API dan penguraian respons untuk Anda.
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
# Web search tool
search_tool = DuckDuckGoSearchRun()
# Wikipedia lookup tool
wiki_tool = WikipediaQueryRun(
api_wrapper=WikipediaAPIWrapper(top_k_results=2)
)
# Add to your agent
tools_with_search = [search_tool, wiki_tool, calculator]
agent_executor.tools = tools_with_searchPencarian Dokumen sebagai Alat RAG
Salah satu pola yang paling kuat adalah menyediakan pipeline RAG Anda sebagai alat agen. Agen menentukan kapan harus mengambil data dari basis pengetahuan, kapan menggunakan alat lain, atau kapan mengandalkan data pelatihannya. Hal ini membuat sistem RAG Anda dinamis — agen hanya memanggilnya ketika relevan.
from langchain_core.tools import tool
@tool
def lookup_knowledge_base(query: str) -> str:
'''Search the company knowledge base for internal policies, procedures, and documentation.
Use when the user asks about company-specific information not available publicly.
Input: a natural language question or keyword query.
'''
# Your RAG pipeline here
retrieved_chunks = vector_store.similarity_search(query, k=3)
context = '\n'.join([doc.page_content for doc in retrieved_chunks])
return context if context else 'No relevant documents found.'Mengalirkan Output Agen
Untuk pengalaman pengguna yang lebih baik, alirkan jawaban akhir agen token demi token, alih-alih menunggu respons lengkap. Gunakan agent_executor.astream_events untuk menerima peristiwa saat terjadi, termasuk langkah-langkah antara dan aliran output akhir.
import asyncio
async def stream_agent(user_input: str):
async for event in agent_executor.astream_events(
{'input': user_input},
version='v1'
):
kind = event['event']
if kind == 'on_chat_model_stream':
chunk = event['data']['chunk']
if chunk.content:
print(chunk.content, end='', flush=True)
elif kind == 'on_tool_start':
print(f'\n[Calling tool: {event["name"]}]')
elif kind == 'on_tool_end':
print(f'[Tool result: {str(event["data"]["output"])[:100]}]')
asyncio.run(stream_agent('What is the latest news about AI?'))Meneruskan Memori Agen
Gabungkan penalaran agen dengan memori percakapan agar agen mengingat interaksi sebelumnya. Gunakan RunnableWithMessageHistory untuk membungkus eksekutor agen dan menyediakan penyimpanan riwayat obrolan. Dengan demikian, agen memiliki memori giliran percakapan sebelumnya sekaligus kemampuan untuk memanggil alat.
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory
session_store = {}
def get_session_history(session_id: str):
if session_id not in session_store:
session_store[session_id] = ChatMessageHistory()
return session_store[session_id]
agent_with_memory = RunnableWithMessageHistory(
agent_executor,
get_session_history,
input_messages_key='input',
history_messages_key='chat_history'
)Menyesuaikan Prompt ReAct
Prompt hub bawaan berfungsi dengan baik, tetapi sering kali Anda memerlukan prompt sistem khusus untuk domain tertentu. Prompt khusus memungkinkan Anda menambahkan instruksi persona, aturan pemformatan output, dan panduan khusus domain sebelum deskripsi alat. Gunakan ChatPromptTemplate dengan placeholder ReAct yang diperlukan.
from langchain_core.prompts import ChatPromptTemplate
custom_prompt = ChatPromptTemplate.from_messages([
('system', '''You are a helpful customer support agent for TechCorp.
Always be polite and professional. When you do not know something, use your tools.
You have access to these tools:
{tools}
Tool names: {tool_names}
Use this format:
Thought: ...
Action: tool_name
Action Input: input_value
Observation: result
Final Answer: your response to the customer
'''),
('human', '{input}'),
('assistant', '{agent_scratchpad}')
])
agent = create_react_agent(llm, tools, custom_prompt)Mengamati Langkah Penalaran Agen
AgentExecutor mengembalikan langkah-langkah antara bersama output akhir ketika Anda menetapkan return_intermediate_steps=True. Setiap langkah berupa tuple yang berisi tindakan agen dan observasi alat. Hal ini berguna untuk membangun antarmuka pengguna yang menampilkan proses penalaran agen kepada pengguna.
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
return_intermediate_steps=True
)
result = agent_executor.invoke({'input': 'What is 2 to the power of 10?'})
print('Final answer:', result['output'])
print('Reasoning steps:')
for step in result['intermediate_steps']:
action, observation = step
print(f' Tool: {action.tool}, Input: {action.tool_input}')
print(f' Observation: {observation}')Menguji Agen Secara Menyeluruh
Uji agen Anda dengan rangkaian pertanyaan yang mewakili berbagai kasus, meliputi: tugas dengan satu alat, tugas multi-langkah yang memerlukan beberapa panggilan alat, tugas yang tidak memerlukan alat (model menjawab berdasarkan data pelatihan), serta input adversarial seperti pertanyaan yang dirancang untuk membingungkan pemilihan alat. Catat tingkat kelulusan dan pola kegagalan untuk meningkatkan deskripsi alat dan prompt Anda.
Pemeriksaan Singkat
Uji pemahaman Anda tentang membangun agen ReAct dengan LangChain.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa: create_react_agent merakit LLM, alat, dan prompt menjadi agen ReAct, AgentExecutor mengelola perulangan Pemikiran/Tindakan/Observasi dengan batas pengamanan yang dapat dikonfigurasi, dan verbose=True serta return_intermediate_steps=True memberi Anda visibilitas penuh terhadap penalaran agen. Selanjutnya, kita akan mempelajari cara menangani kegagalan agen dan mencegah perulangan tak terbatas.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Agent ReAct dengan LangChain” gratis?
Ya — teks lengkap “Membangun Agent ReAct dengan LangChain” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Engineering Academy, upgrade ke CoddyKit PRO. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membangun Agent ReAct dengan LangChain”?
Rangkai agent ReAct lengkap menggunakan AgentExecutor milik LangChain dengan alat pencarian web, alat kalkulator, dan alat pencarian dokumen, lalu telusuri langkah-langkah penalarannya. Kamu berlatih AI Engineering Academy 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 Engineering Academy?
Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy 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 3 dari 4.
Berapa lama pelajaran “Membangun Agent ReAct dengan LangChain” 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 Engineering Academy ini?
Ya. Setiap pelajaran AI Engineering Academy 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
- Kerangka ReAct: Berpikir, Bertindak, Mengamati
- Mendefinisikan Alat untuk Agent Anda
- Membangun Agent ReAct dengan LangChain
- Menangani Kegagalan dan Perulangan Agen