# SERP API üzerinde LangChain web search tool, ayrıca bir LlamaIndex sürümü

> SerpCrypto SERP API ile Google'da arama yapan bir LangChain aracı ve LlamaIndex FunctionTool; ne zaman arama yapacağına karar veren bir agent ile, KYC olmadan.

- URL: https://serpcrypto.com/tr/docs/langchain/
- Son güncelleme: 2026-10-22
- Yayıncı: SerpCrypto (https://serpcrypto.com)

Tek bir HTTPS çağrısını bir araca sarın, iyi tanımlayın ve ne zaman arama yapacağına agent karar versin. Aşağıdaki kod LangChain 1.0 veya sonrası ve LlamaIndex ile çalışır; herhangi bir SerpCrypto paketine gerek yok.

**Hızlı yanıt — Bir LangChain agent'a web search tool'u nasıl veririm?**

`langchain_core.tools` içindeki `@tool` ile bir Python fonksiyonunu dekore edin, `https://serpcrypto.com/api/v1/search` çağırmasını sağlayın ve kısa metin döndürsün, ardından agent'ı oluştururken `tools=[...]` içinde iletin. **SerpCrypto** ile agent'ın çalıştırdığı her arama 1 krediye mal olur, $0,30/1K arama'den başlar ve başarısız çağrılar ücretsizdir. Krediler kripto ile ödenir, KYC olmadan.

## Arama aracını nasıl yazarım?

Bir LangChain aracı, docstring içeren tiplenmiş bir fonksiyondur. Dekoratör, imzayı argüman şemasına ve docstring'i modelin okuduğu açıklamaya dönüştürür; dolayısıyla ikisi de özen ister. Argümanları modelin onları düşünmesini istediğiniz şekilde adlandırın: bir sorgu, bir ülke, bir dil.

Tüm JSON'u değil metin döndürün. Başlık, link ve snippet içeren beş sonuç, ham yanıtın token'larının küçük bir kısmıyla modele yanıtlaması ve kaynak göstermesi için yeterli olur. Hata durumunda raise etmek yerine kısa bir mesaj döndürün, böylece agent açıklayabilir veya yeniden deneyebilir.

*search_tool.py*

```python
"""A LangChain tool that searches Google through the SerpCrypto SERP API."""
import os

import requests
from langchain_core.tools import tool

API_URL = "https://serpcrypto.com/api/v1/search"


@tool
def google_search(query: str, gl: str = "us", hl: str = "en") -> str:
    """Search Google for current information. Returns the top results with title, link and snippet.

    Args:
        query: the search query, as a person would type it.
        gl: two-letter country code of the results, for example us, gb or de.
        hl: language code, for example en, de or pt-BR.
    """
    r = requests.get(
        API_URL,
        params={"q": query, "gl": gl, "hl": hl},
        headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
        timeout=90,
    )
    if r.status_code != 200:
        return f"Search failed with HTTP {r.status_code}."
    results = r.json().get("organic_results", [])[:5]
    return "\n\n".join(f"{x['title']}\n{x['link']}\n{x.get('snippet', '')}" for x in results) or "No results."
```

## Bir agent'ın ne zaman arama yapacağına nasıl izin veririm?

Aracı, LangChain 1.0'dan itibaren kullanılabilen `create_agent` öğesine iletin. Model açıklamayı okur ve soru güncel bilgi gerektirdiğinde aracı çağırır. `AGENT_MODEL` değerini hesabınızın desteklediği bir model string'ine ayarlayın, örneğin `openai:` veya `anthropic:` ve ardından bir model adı; tool calling destekleyen her chat model çalışır.

System prompt, kod kadar önemlidir. Agent'tan yalnızca eğitim verisinden daha yeni bilgiler için arama yapmasını ve linkleri kaynak göstermesini istemek, yanıtları temellendirir ve ücretli aramaların sayısını sınırlar.

*agent.py*

```python
"""An agent that decides when to search (LangChain 1.0 or later)."""
import os

from langchain.agents import create_agent

from search_tool import google_search

agent = create_agent(
    model=os.environ["AGENT_MODEL"],  # a provider:model string, such as one of your OpenAI or Anthropic models
    tools=[google_search],
    system_prompt="Answer with current facts. Use google_search when you need information newer than your training data, and cite the links you used.",
)

result = agent.invoke({"messages": [{"role": "user", "content": "What changed in Google's search results pages this year?"}]})
print(result["messages"][-1].content)
```

## Aynısını LlamaIndex ile nasıl yaparım?

Tip ipuçları ve docstring içeren düz bir fonksiyon yazın, ardından `FunctionTool.from_defaults` ile sarın. LlamaIndex, tıpkı LangChain gibi, araç şemasını oluşturmak için adı, tip ipuçlarını ve docstring'i okur. Aracı, araç listesi kabul eden herhangi bir LlamaIndex agent'ına ekleyin.

*LlamaIndex FunctionTool*

```python
"""The same search as a LlamaIndex FunctionTool."""
import os

import requests
from llama_index.core.tools import FunctionTool


def google_search(query: str, gl: str = "us", hl: str = "en") -> str:
    """Search Google for current information and return the top results with title, link and snippet."""
    r = requests.get(
        "https://serpcrypto.com/api/v1/search",
        params={"q": query, "gl": gl, "hl": hl},
        headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
        timeout=90,
    )
    r.raise_for_status()
    results = r.json().get("organic_results", [])[:5]
    return "\n\n".join(f"{x['title']}\n{x['link']}\n{x.get('snippet', '')}" for x in results)


search_tool = FunctionTool.from_defaults(fn=google_search)
# Pass search_tool in the tools list of your LlamaIndex agent.
```

## Araç JSON mu yoksa metin mi döndürmeli?

Çoğu durumda metin. Modeller kısa, etiketli metni iyi okur ve bu, iç içe JSON'dan daha az token'a mal olur. JSON'u yalnızca zincirinizin sonraki bir adımı onu ayrıştırdığında döndürün, örneğin sıralamaları saklamak için.

Linkleri çıktıda tutun. Modelin kaynaklarını kaynak göstermesini ve sonradan bir yanıtın hangi sayfalara dayandığını kontrol etmenizi sağlarlar.

## Bir agent'ta arama maliyetlerini nasıl kontrol ederim?

Başarılı olan her tool call bir krediye eşittir. Üç alışkanlık sayıyı düşük tutar: system prompt'ta modele ne zaman arama yapmaması gerektiğini söyleyin, agent döngünüzde çalıştırma başına tool call sayısını sınırlayın ve tekrarlanan soruların yanıtlarını kendi kodunuzda cache'leyin.

100.000 arama içeren bir pack $56,25 fiyatındadır ve Ön ödemeli arama kredileri hiçbir zaman sona ermez: kullanılmayan aramalar siz kullanana kadar hesabınızda kalır, böylece sakin bir ay hiçbir şeyi boşa harcamaz.

## LangChain soruları

### Bu resmi bir LangChain entegrasyonu mu?

Hayır. LangChain'in genel `@tool` dekoratörü üzerine kurulmuş küçük bir özel araçtır. Kod sizin olduğu için çıktı formatını değiştirebilir, `location` veya `engine` gibi parametreler ekleyebilir ya da Google News için ikinci bir araç ekleyebilirsiniz.

### Araç belirli bir şehirde arama yapabilir mi?

Evet. Bir `location` argümanı ekleyin ve `params` içinde, `City, Region, Country` biçiminde iletin. Format ve örnekler için [locations](https://serpcrypto.com/tr/docs/locations/) bölümüne bakın.

### Agent başarısız aramalar için ödeme yapar mı?

Hayır. 1 kredi = desteklenen herhangi bir motorda bir sayfa sonuç döndüren 1 başarılı arama isteği. Başarısız olan istek ücretlendirilmez. Zaman aşımına veya geçici bir hataya takılan bir tool call hiç kredi kullanmaz.

### Bu aracı hangi modeller kullanabilir?

LangChain veya LlamaIndex'te tool calling destekleyen her chat model. Aracın kendisi yalnızca bir HTTPS isteği gönderir, dolayısıyla model sağlayıcısına bağlı değildir.

---

SerpCrypto: SerpCrypto, Google ve Bing sonuçlarını JSON olarak döndüren, geliştiriciler ve AI agent'lar için bir SERP API'dir; kripto ile ödeme yapılır, kimlik yüklemek gerekmez. $0,30/1K arama ön ödemeli arama kredisinin süresi asla dolmaz. KYC olmadan — kimlik yok, selfie yok, belge yok. Kripto ile ödeme yapın.
