0Pricing
AI Engineering Academy · Ders

LangChain ile ReAct Agent Oluşturma

LangChain'in AgentExecutor'ını bir web arama aracı, hesap makinesi aracı ve belge arama aracıyla birlikte kullanarak tam bir ReAct agent oluşturun; ardından akıl yürütme adımlarını izleyin.

LangChain ile ReAct Agent Oluşturma, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

LangChain'in Ajan Ekosistemi

LangChain, ajan oluşturmak için eksiksiz bir yığın sunar: araçlar ajanın neler yapabileceğini tanımlar, istemler ajana talimatlarını ve akıl yürütme biçimini verir, LLM düşünme işini gerçekleştirir ve AgentExecutor, araç çağrılarını yönlendirip gözlemleri geri aktaran döngüyü çalıştırır. Her parçayı ayrı ayrı yapılandırarak her şeyi yeniden yazmadan bileşenleri değiştirebilirsiniz.

ReAct Ajanı Oluşturma

LangChain'de ReAct ajanı oluşturmanın en hızlı yolu create_react_agent kullanmaktır. Buna bir LLM, araç listesi ve istem şablonu aktarırsınız. Bu, Thought/Action/Observation adımlarını otomatik olarak oluşturan çalıştırılabilir bir nesne döndürür. Döngüyü yönetmek için bunu bir AgentExecutor içine sarın.

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)

AgentExecutor ile Çalıştırma

AgentExecutor, Thought/Action/Observation döngüsünü yönetir. Geliştirme sırasında her adımı konsola yazdırmak için verbose=True aktarın; bu iz, hata ayıklama için son derece değerlidir. max_iterations parametresi, sonsuz döngülere karşı güvenlik önleminizdir.

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'])

Ayrıntılı İzi Okuma

Ayrıntılı iz, ajanın nasıl akıl yürüttüğünü tam olarak gösterir. Her yinelemede modelin Thought'u, seçtiği Action ve araçtan gelen Observation yazdırılır. Böylece ajanın tam olarak nerede hata yaptığını; yanlış aracı seçip seçmediğini, yanlış bağımsız değişkeni aktarıp aktarmadığını veya gözlemi yanlış yorumlayıp yorumlamadığını görebilirsiniz.

# 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.

Yerleşik LangChain Araçlarını Kullanma

LangChain, yaygın görevler için kullanıma hazır birçok araçla birlikte gelir. Hiç kod yazmadan langchain_community.tools içinden bir web arama aracı ekleyebilirsiniz. Bu araçlar, API kimlik doğrulamasını ve yanıtların ayrıştırılmasını sizin için gerçekleştirir.

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_search

RAG Aracı Olarak Belge Arama

En güçlü kalıplardan biri, RAG pipeline'ınızı bir ajan aracı olarak sunmaktır. Ajan, bilgi tabanınızdan ne zaman bilgi alacağına, ne zaman başka araçları kullanacağına veya eğitimine güveneceğine karar verir. Bu, RAG sisteminizi dinamik hâle getirir; ajan onu yalnızca ilgili olduğunda çağırır.

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.'

Ajan Çıktısını Akış Olarak Alma

Daha iyi bir kullanıcı deneyimi için tam yanıtı beklemek yerine ajanın son yanıtını belirteç belirteç akış olarak aktarın. Ara adımlar ve son çıktı akışı da dâhil olmak üzere olayları gerçekleştiği anda almak için agent_executor.astream_events kullanın.

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?'))

Ajan Belleğini Aktarma

Ajanın önceki etkileşimleri hatırlaması için ajan akıl yürütmesini konuşma belleğiyle birleştirin. Ajan yürütücüsünü sarmalamak ve bir sohbet geçmişi deposu sağlamak için RunnableWithMessageHistory kullanın. Böylece ajan hem geçmiş turlara ilişkin belleğe hem de araç çağırma yeteneğine sahip olur.

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'
)

ReAct İstemini Özelleştirme

Varsayılan merkez istemi iyi çalışır, ancak belirli alanınız için çoğu zaman özel bir sistem istemine ihtiyaç duyarsınız. Özel bir istem; araç açıklamalarından önce persona talimatları, çıktı biçimlendirme kuralları ve alana özgü yönlendirmeler eklemenizi sağlar. Gerekli ReAct yer tutucularıyla ChatPromptTemplate kullanın.

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)

Ajanın Akıl Yürütme Adımlarını Gözlemleme

return_intermediate_steps=True ayarını yaptığınızda AgentExecutor, son çıktının yanında ara adımları da döndürür. Her adım, ajanın eylemi ile aracın gözleminden oluşan bir demettir. Bu, kullanıcılara ajanın akıl yürütme sürecini gösteren kullanıcı arayüzleri oluşturmak için yararlıdır.

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}')

Ajanınızı Kapsamlı Biçimde Sınama

Ajanınızı şu konuları kapsayan temsili sorulardan oluşan bir test paketiyle sınayın: tek araçlı görevler, birden çok araç çağrısı gerektiren çok adımlı görevler, herhangi bir aracın gerekmediği görevler (modelin eğitim verilerinden yanıtladığı sorular) ve araç seçimini şaşırtmak üzere tasarlanmış sorular gibi karşıt girdiler. Araç açıklamalarınızı ve isteminizi iyileştirmek için başarı oranlarını ve başarısızlık kalıplarını izleyin.

Hızlı Kontrol

LangChain ile ReAct ajanı oluşturma konusundaki anlayışınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: create_react_agent, bir LLM'yi, araçları ve istemi bir ReAct ajanında birleştirir, AgentExecutor, yapılandırılabilir güvenlik sınırlarıyla Thought/Action/Observation döngüsünü yönetir ve verbose=True ile return_intermediate_steps=True, ajanın akıl yürütmesini tüm ayrıntılarıyla görmenizi sağlar. Sırada, ajan hatalarını nasıl ele alacağımızı ve sonsuz döngüleri nasıl önleyeceğimizi öğreneceğiz.

Sıkça Sorulan Sorular

“LangChain ile ReAct Agent Oluşturma” dersi ücretsiz mi?

Evet — “LangChain ile ReAct Agent Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“LangChain ile ReAct Agent Oluşturma” dersinde ne öğreneceğim?

LangChain'in AgentExecutor'ını bir web arama aracı, hesap makinesi aracı ve belge arama aracıyla birlikte kullanarak tam bir ReAct agent oluşturun; ardından akıl yürütme adımlarını izleyin. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“LangChain ile ReAct Agent Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. ReAct Çerçevesi: Düşün, Eyleme Geç, Gözlemle
  2. Agent'ınız İçin Araçlar Tanımlama
  3. LangChain ile ReAct Agent Oluşturma
  4. Ajan Hatalarını ve Döngülerini Yönetme
← AI Engineering Academy Sayfasına Dön